parser 2.7.1.4 → 3.0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/lib/parser.rb +1 -1
  3. data/lib/parser/all.rb +2 -1
  4. data/lib/parser/ast/processor.rb +3 -7
  5. data/lib/parser/base.rb +7 -5
  6. data/lib/parser/builders/default.rb +178 -29
  7. data/lib/parser/context.rb +4 -0
  8. data/lib/parser/current.rb +20 -11
  9. data/lib/parser/current_arg_stack.rb +5 -2
  10. data/lib/parser/lexer.rb +23780 -0
  11. data/lib/parser/macruby.rb +6149 -0
  12. data/lib/parser/max_numparam_stack.rb +13 -5
  13. data/lib/parser/messages.rb +3 -0
  14. data/lib/parser/meta.rb +7 -6
  15. data/lib/parser/ruby18.rb +5667 -0
  16. data/lib/parser/ruby19.rb +6092 -0
  17. data/lib/parser/ruby20.rb +6527 -0
  18. data/lib/parser/ruby21.rb +6578 -0
  19. data/lib/parser/ruby22.rb +6613 -0
  20. data/lib/parser/ruby23.rb +6624 -0
  21. data/lib/parser/ruby24.rb +6694 -0
  22. data/lib/parser/ruby25.rb +6662 -0
  23. data/lib/parser/ruby26.rb +6676 -0
  24. data/lib/parser/ruby27.rb +7862 -0
  25. data/lib/parser/ruby28.rb +8047 -0
  26. data/lib/parser/ruby30.rb +8060 -0
  27. data/lib/parser/ruby31.rb +8075 -0
  28. data/lib/parser/rubymotion.rb +6086 -0
  29. data/lib/parser/runner.rb +9 -4
  30. data/lib/parser/source/buffer.rb +50 -27
  31. data/lib/parser/source/comment.rb +14 -1
  32. data/lib/parser/source/comment/associator.rb +18 -5
  33. data/lib/parser/source/map/{endless_definition.rb → method_definition.rb} +5 -3
  34. data/lib/parser/source/range.rb +2 -2
  35. data/lib/parser/source/tree_rewriter.rb +27 -0
  36. data/lib/parser/static_environment.rb +4 -0
  37. data/lib/parser/variables_stack.rb +4 -0
  38. data/lib/parser/version.rb +1 -1
  39. data/parser.gemspec +1 -17
  40. metadata +9 -97
  41. data/.gitignore +0 -34
  42. data/.travis.yml +0 -40
  43. data/.yardopts +0 -21
  44. data/CHANGELOG.md +0 -1116
  45. data/CONTRIBUTING.md +0 -17
  46. data/Gemfile +0 -10
  47. data/README.md +0 -309
  48. data/Rakefile +0 -167
  49. data/ci/run_rubocop_specs +0 -14
  50. data/doc/AST_FORMAT.md +0 -2283
  51. data/doc/CUSTOMIZATION.md +0 -37
  52. data/doc/INTERNALS.md +0 -21
  53. data/doc/css/.gitkeep +0 -0
  54. data/doc/css/common.css +0 -68
  55. data/lib/parser/lexer.rl +0 -2550
  56. data/lib/parser/macruby.y +0 -2208
  57. data/lib/parser/ruby18.y +0 -1936
  58. data/lib/parser/ruby19.y +0 -2185
  59. data/lib/parser/ruby20.y +0 -2363
  60. data/lib/parser/ruby21.y +0 -2364
  61. data/lib/parser/ruby22.y +0 -2371
  62. data/lib/parser/ruby23.y +0 -2377
  63. data/lib/parser/ruby24.y +0 -2415
  64. data/lib/parser/ruby25.y +0 -2412
  65. data/lib/parser/ruby26.y +0 -2420
  66. data/lib/parser/ruby27.y +0 -2950
  67. data/lib/parser/ruby28.y +0 -3043
  68. data/lib/parser/rubymotion.y +0 -2192
  69. data/test/bug_163/fixtures/input.rb +0 -5
  70. data/test/bug_163/fixtures/output.rb +0 -5
  71. data/test/bug_163/rewriter.rb +0 -20
  72. data/test/helper.rb +0 -103
  73. data/test/parse_helper.rb +0 -323
  74. data/test/racc_coverage_helper.rb +0 -133
  75. data/test/test_ast_processor.rb +0 -32
  76. data/test/test_base.rb +0 -31
  77. data/test/test_current.rb +0 -31
  78. data/test/test_diagnostic.rb +0 -95
  79. data/test/test_diagnostic_engine.rb +0 -59
  80. data/test/test_encoding.rb +0 -99
  81. data/test/test_lexer.rb +0 -3617
  82. data/test/test_lexer_stack_state.rb +0 -78
  83. data/test/test_meta.rb +0 -12
  84. data/test/test_parse_helper.rb +0 -80
  85. data/test/test_parser.rb +0 -9780
  86. data/test/test_runner_parse.rb +0 -56
  87. data/test/test_runner_rewrite.rb +0 -47
  88. data/test/test_source_buffer.rb +0 -165
  89. data/test/test_source_comment.rb +0 -36
  90. data/test/test_source_comment_associator.rb +0 -399
  91. data/test/test_source_map.rb +0 -14
  92. data/test/test_source_range.rb +0 -192
  93. data/test/test_source_rewriter.rb +0 -541
  94. data/test/test_source_rewriter_action.rb +0 -46
  95. data/test/test_source_tree_rewriter.rb +0 -361
  96. data/test/test_static_environment.rb +0 -45
  97. data/test/using_tree_rewriter/fixtures/input.rb +0 -3
  98. data/test/using_tree_rewriter/fixtures/output.rb +0 -3
  99. data/test/using_tree_rewriter/using_tree_rewriter.rb +0 -9
data/lib/parser/runner.rb CHANGED
@@ -37,7 +37,7 @@ module Parser
37
37
 
38
38
  private
39
39
 
40
- LEGACY_MODES = %i[lambda procarg0 encoding index arg_inside_procarg0 forward_arg].freeze
40
+ LEGACY_MODES = %i[lambda procarg0 encoding index arg_inside_procarg0 forward_arg kwargs match_pattern].freeze
41
41
 
42
42
  def runner_name
43
43
  raise NotImplementedError, "implement #{self.class}##{__callee__}"
@@ -113,9 +113,14 @@ module Parser
113
113
  @parser_class = Parser::Ruby27
114
114
  end
115
115
 
116
- opts.on '--28', 'Parse as Ruby 2.8 would' do
117
- require 'parser/ruby28'
118
- @parser_class = Parser::Ruby28
116
+ opts.on '--30', 'Parse as Ruby 3.0 would' do
117
+ require 'parser/ruby30'
118
+ @parser_class = Parser::Ruby30
119
+ end
120
+
121
+ opts.on '--31', 'Parse as Ruby 3.1 would' do
122
+ require 'parser/ruby31'
123
+ @parser_class = Parser::Ruby31
119
124
  end
120
125
 
121
126
  opts.on '--mac', 'Parse as MacRuby 0.12 would' do
@@ -114,8 +114,7 @@ module Parser
114
114
  @slice_source = nil
115
115
 
116
116
  # Cache for fast lookup
117
- @line_for_position = {}
118
- @column_for_position = {}
117
+ @line_index_for_position = {}
119
118
 
120
119
  self.source = source if source
121
120
  end
@@ -207,9 +206,10 @@ module Parser
207
206
  # @return [[Integer, Integer]] `[line, column]`
208
207
  #
209
208
  def decompose_position(position)
210
- line_no, line_begin = line_for(position)
209
+ line_index = line_index_for_position(position)
210
+ line_begin = line_begins[line_index]
211
211
 
212
- [ @first_line + line_no, position - line_begin ]
212
+ [ @first_line + line_index , position - line_begin ]
213
213
  end
214
214
 
215
215
  ##
@@ -220,10 +220,7 @@ module Parser
220
220
  # @api private
221
221
  #
222
222
  def line_for_position(position)
223
- @line_for_position[position] ||= begin
224
- line_no, _ = line_for(position)
225
- @first_line + line_no
226
- end
223
+ line_index_for_position(position) + @first_line
227
224
  end
228
225
 
229
226
  ##
@@ -234,10 +231,8 @@ module Parser
234
231
  # @api private
235
232
  #
236
233
  def column_for_position(position)
237
- @column_for_position[position] ||= begin
238
- _, line_begin = line_for(position)
239
- position - line_begin
240
- end
234
+ line_index = line_index_for_position(position)
235
+ position - line_begins[line_index]
241
236
  end
242
237
 
243
238
  ##
@@ -278,15 +273,13 @@ module Parser
278
273
  # @raise [IndexError] if `lineno` is out of bounds
279
274
  #
280
275
  def line_range(lineno)
281
- index = lineno - @first_line + 1
282
- if index <= 0 || index > line_begins.size
276
+ index = lineno - @first_line
277
+ if index < 0 || index + 1 >= line_begins.size
283
278
  raise IndexError, 'Parser::Source::Buffer: range for line ' \
284
279
  "#{lineno} requested, valid line numbers are #{@first_line}.." \
285
- "#{@first_line + line_begins.size - 1}"
286
- elsif index == line_begins.size
287
- Range.new(self, line_begins[-index][1], @source.size)
280
+ "#{@first_line + line_begins.size - 2}"
288
281
  else
289
- Range.new(self, line_begins[-index][1], line_begins[-index - 1][1] - 1)
282
+ Range.new(self, line_begins[index], line_begins[index + 1] - 1)
290
283
  end
291
284
  end
292
285
 
@@ -303,27 +296,57 @@ module Parser
303
296
  # @return [Integer]
304
297
  #
305
298
  def last_line
306
- line_begins.size + @first_line - 1
299
+ line_begins.size + @first_line - 2
300
+ end
301
+
302
+ # :nodoc:
303
+ def freeze
304
+ source_lines; line_begins; source_range # build cache
305
+ super
306
+ end
307
+
308
+ # :nodoc:
309
+ def inspect
310
+ "#<#{self.class} #{name}>"
307
311
  end
308
312
 
309
313
  private
310
314
 
315
+ # @returns [0, line_begin_of_line_1, ..., source.size + 1]
311
316
  def line_begins
312
- unless @line_begins
313
- @line_begins, index = [ [ 0, 0 ] ], 0
314
-
317
+ @line_begins ||= begin
318
+ begins = [0]
319
+ index = 0
315
320
  while index = @source.index("\n".freeze, index)
316
321
  index += 1
317
- @line_begins.unshift [ @line_begins.length, index ]
322
+ begins << index
318
323
  end
324
+ begins << @source.size + 1
325
+ begins
319
326
  end
327
+ end
320
328
 
321
- @line_begins
329
+ # @returns 0-based line index of position
330
+ def line_index_for_position(position)
331
+ @line_index_for_position[position] || begin
332
+ index = bsearch(line_begins, position) - 1
333
+ @line_index_for_position[position] = index unless @line_index_for_position.frozen?
334
+ index
335
+ end
322
336
  end
323
337
 
324
- def line_for(position)
325
- line_begins.bsearch do |line, line_begin|
326
- line_begin <= position
338
+ if Array.method_defined?(:bsearch_index) # RUBY_VERSION >= 2.3
339
+ def bsearch(line_begins, position)
340
+ line_begins.bsearch_index do |line_begin|
341
+ position < line_begin
342
+ end || line_begins.size - 1 # || only for out of bound values
343
+ end
344
+ else
345
+ def bsearch(line_begins, position)
346
+ @line_range ||= 0...line_begins.size
347
+ @line_range.bsearch do |i|
348
+ position < line_begins[i]
349
+ end || line_begins.size - 1 # || only for out of bound values
327
350
  end
328
351
  end
329
352
  end
@@ -10,7 +10,7 @@ module Parser
10
10
  # @return [String]
11
11
  #
12
12
  # @!attribute [r] location
13
- # @return [Parser::Source::Map]
13
+ # @return [Parser::Source::Range]
14
14
  #
15
15
  # @api public
16
16
  #
@@ -48,6 +48,19 @@ module Parser
48
48
  associator.associate_locations
49
49
  end
50
50
 
51
+ ##
52
+ # Associate `comments` with `ast` nodes using identity.
53
+ #
54
+ # @param [Parser::AST::Node] ast
55
+ # @param [Array<Comment>] comments
56
+ # @return [Hash<Parser::Source::Node, Array<Comment>>]
57
+ # @see Parser::Source::Comment::Associator#associate_by_identity
58
+ #
59
+ def self.associate_by_identity(ast, comments)
60
+ associator = Associator.new(ast, comments)
61
+ associator.associate_by_identity
62
+ end
63
+
51
64
  ##
52
65
  # @param [Parser::Source::Range] range
53
66
  #
@@ -84,12 +84,24 @@ module Parser
84
84
  #
85
85
  # Note that {associate} produces unexpected result for nodes which are
86
86
  # equal but have distinct locations; comments for these nodes are merged.
87
+ # You may prefer using {associate_by_identity} or {associate_locations}.
87
88
  #
88
89
  # @return [Hash<Parser::AST::Node, Array<Parser::Source::Comment>>]
89
90
  # @deprecated Use {associate_locations}.
90
91
  #
91
92
  def associate
92
- @map_using_locations = false
93
+ @map_using = :eql
94
+ do_associate
95
+ end
96
+
97
+ ##
98
+ # Same as {associate}, but compares by identity, thus producing an unambiguous
99
+ # result even in presence of equal nodes.
100
+ #
101
+ # @return [Hash<Parser::Source::Node, Array<Parser::Source::Comment>>]
102
+ #
103
+ def associate_locations
104
+ @map_using = :location
93
105
  do_associate
94
106
  end
95
107
 
@@ -100,14 +112,14 @@ module Parser
100
112
  #
101
113
  # @return [Hash<Parser::Source::Map, Array<Parser::Source::Comment>>]
102
114
  #
103
- def associate_locations
104
- @map_using_locations = true
115
+ def associate_by_identity
116
+ @map_using = :identity
105
117
  do_associate
106
118
  end
107
119
 
108
120
  private
109
121
 
110
- POSTFIX_TYPES = Set[:if, :while, :while_post, :until, :until_post].freeze
122
+ POSTFIX_TYPES = Set[:if, :while, :while_post, :until, :until_post, :masgn].freeze
111
123
  def children_in_source_order(node)
112
124
  if POSTFIX_TYPES.include?(node.type)
113
125
  # All these types have either nodes with expressions, or `nil`
@@ -122,6 +134,7 @@ module Parser
122
134
 
123
135
  def do_associate
124
136
  @mapping = Hash.new { |h, k| h[k] = [] }
137
+ @mapping.compare_by_identity if @map_using == :identity
125
138
  @comment_num = -1
126
139
  advance_comment
127
140
 
@@ -191,7 +204,7 @@ module Parser
191
204
  end
192
205
 
193
206
  def associate_and_advance_comment(node)
194
- key = @map_using_locations ? node.location : node
207
+ key = @map_using == :location ? node.location : node
195
208
  @mapping[key] << @current_comment
196
209
  advance_comment
197
210
  end
@@ -3,19 +3,21 @@
3
3
  module Parser
4
4
  module Source
5
5
 
6
- class Map::EndlessDefinition < Map
6
+ class Map::MethodDefinition < Map
7
7
  attr_reader :keyword
8
8
  attr_reader :operator
9
9
  attr_reader :name
10
+ attr_reader :end
10
11
  attr_reader :assignment
11
12
 
12
- def initialize(keyword_l, operator_l, name_l, assignment_l, body_l)
13
+ def initialize(keyword_l, operator_l, name_l, end_l, assignment_l, body_l)
13
14
  @keyword = keyword_l
14
15
  @operator = operator_l
15
16
  @name = name_l
17
+ @end = end_l
16
18
  @assignment = assignment_l
17
19
 
18
- super(@keyword.join(body_l))
20
+ super(@keyword.join(end_l || body_l))
19
21
  end
20
22
  end
21
23
 
@@ -112,11 +112,11 @@ module Parser
112
112
  # @raise RangeError
113
113
  #
114
114
  def column_range
115
- if self.begin.line != self.end.line
115
+ if line != last_line
116
116
  raise RangeError, "#{self.inspect} spans more than one line"
117
117
  end
118
118
 
119
- self.begin.column...self.end.column
119
+ column...last_column
120
120
  end
121
121
 
122
122
  ##
@@ -330,6 +330,11 @@ module Parser
330
330
  @in_transaction
331
331
  end
332
332
 
333
+ # :nodoc:
334
+ def inspect
335
+ "#<#{self.class} #{source_buffer.name}: #{action_summary}>"
336
+ end
337
+
333
338
  ##
334
339
  # @api private
335
340
  # @deprecated Use insert_after or wrap
@@ -361,6 +366,28 @@ module Parser
361
366
 
362
367
  private
363
368
 
369
+ def action_summary
370
+ replacements = as_replacements
371
+ case replacements.size
372
+ when 0 then return 'empty'
373
+ when 1..3 then #ok
374
+ else
375
+ replacements = replacements.first(3)
376
+ suffix = '…'
377
+ end
378
+ parts = replacements.map do |(range, str)|
379
+ if str.empty? # is this a deletion?
380
+ "-#{range.to_range}"
381
+ elsif range.size == 0 # is this an insertion?
382
+ "+#{str.inspect}@#{range.begin_pos}"
383
+ else # it is a replacement
384
+ "^#{str.inspect}@#{range.to_range}"
385
+ end
386
+ end
387
+ parts << suffix if suffix
388
+ parts.join(', ')
389
+ end
390
+
364
391
  ACTIONS = %i[accept warn raise].freeze
365
392
  def check_policy_validity
366
393
  invalid = @policy.values - ACTIONS
@@ -51,6 +51,10 @@ module Parser
51
51
  def declared_forward_args?
52
52
  declared?(FORWARD_ARGS)
53
53
  end
54
+
55
+ def empty?
56
+ @stack.empty?
57
+ end
54
58
  end
55
59
 
56
60
  end
@@ -8,6 +8,10 @@ module Parser
8
8
  push
9
9
  end
10
10
 
11
+ def empty?
12
+ @stack.empty?
13
+ end
14
+
11
15
  def push
12
16
  @stack << Set.new
13
17
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Parser
4
- VERSION = '2.7.1.4'
4
+ VERSION = '3.0.1.1'
5
5
  end
data/parser.gemspec CHANGED
@@ -20,24 +20,8 @@ Gem::Specification.new do |spec|
20
20
  'source_code_uri' => "https://github.com/whitequark/parser/tree/v#{spec.version}"
21
21
  }
22
22
 
23
- spec.files = `git ls-files`.split + %w(
24
- lib/parser/lexer.rb
25
- lib/parser/ruby18.rb
26
- lib/parser/ruby19.rb
27
- lib/parser/ruby20.rb
28
- lib/parser/ruby21.rb
29
- lib/parser/ruby22.rb
30
- lib/parser/ruby23.rb
31
- lib/parser/ruby24.rb
32
- lib/parser/ruby25.rb
33
- lib/parser/ruby26.rb
34
- lib/parser/ruby27.rb
35
- lib/parser/ruby28.rb
36
- lib/parser/macruby.rb
37
- lib/parser/rubymotion.rb
38
- )
23
+ spec.files = Dir['bin/*', 'lib/**/*.rb', 'parser.gemspec', 'LICENSE.txt']
39
24
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
40
- spec.test_files = spec.files.grep(%r{^test/})
41
25
  spec.require_paths = ['lib']
42
26
 
43
27
  spec.required_ruby_version = '>= 2.0.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.1.4
4
+ version: 3.0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - whitequark
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-19 00:00:00.000000000 Z
11
+ date: 2021-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ast
@@ -165,23 +165,9 @@ executables:
165
165
  extensions: []
166
166
  extra_rdoc_files: []
167
167
  files:
168
- - ".gitignore"
169
- - ".travis.yml"
170
- - ".yardopts"
171
- - CHANGELOG.md
172
- - CONTRIBUTING.md
173
- - Gemfile
174
168
  - LICENSE.txt
175
- - README.md
176
- - Rakefile
177
169
  - bin/ruby-parse
178
170
  - bin/ruby-rewrite
179
- - ci/run_rubocop_specs
180
- - doc/AST_FORMAT.md
181
- - doc/CUSTOMIZATION.md
182
- - doc/INTERNALS.md
183
- - doc/css/.gitkeep
184
- - doc/css/common.css
185
171
  - lib/gauntlet_parser.rb
186
172
  - lib/parser.rb
187
173
  - lib/parser/all.rb
@@ -198,41 +184,29 @@ files:
198
184
  - lib/parser/diagnostic.rb
199
185
  - lib/parser/diagnostic/engine.rb
200
186
  - lib/parser/lexer.rb
201
- - lib/parser/lexer.rl
202
187
  - lib/parser/lexer/dedenter.rb
203
188
  - lib/parser/lexer/explanation.rb
204
189
  - lib/parser/lexer/literal.rb
205
190
  - lib/parser/lexer/stack_state.rb
206
191
  - lib/parser/macruby.rb
207
- - lib/parser/macruby.y
208
192
  - lib/parser/max_numparam_stack.rb
209
193
  - lib/parser/messages.rb
210
194
  - lib/parser/meta.rb
211
195
  - lib/parser/rewriter.rb
212
196
  - lib/parser/ruby18.rb
213
- - lib/parser/ruby18.y
214
197
  - lib/parser/ruby19.rb
215
- - lib/parser/ruby19.y
216
198
  - lib/parser/ruby20.rb
217
- - lib/parser/ruby20.y
218
199
  - lib/parser/ruby21.rb
219
- - lib/parser/ruby21.y
220
200
  - lib/parser/ruby22.rb
221
- - lib/parser/ruby22.y
222
201
  - lib/parser/ruby23.rb
223
- - lib/parser/ruby23.y
224
202
  - lib/parser/ruby24.rb
225
- - lib/parser/ruby24.y
226
203
  - lib/parser/ruby25.rb
227
- - lib/parser/ruby25.y
228
204
  - lib/parser/ruby26.rb
229
- - lib/parser/ruby26.y
230
205
  - lib/parser/ruby27.rb
231
- - lib/parser/ruby27.y
232
206
  - lib/parser/ruby28.rb
233
- - lib/parser/ruby28.y
207
+ - lib/parser/ruby30.rb
208
+ - lib/parser/ruby31.rb
234
209
  - lib/parser/rubymotion.rb
235
- - lib/parser/rubymotion.y
236
210
  - lib/parser/runner.rb
237
211
  - lib/parser/runner/ruby_parse.rb
238
212
  - lib/parser/runner/ruby_rewrite.rb
@@ -244,11 +218,11 @@ files:
244
218
  - lib/parser/source/map/condition.rb
245
219
  - lib/parser/source/map/constant.rb
246
220
  - lib/parser/source/map/definition.rb
247
- - lib/parser/source/map/endless_definition.rb
248
221
  - lib/parser/source/map/for.rb
249
222
  - lib/parser/source/map/heredoc.rb
250
223
  - lib/parser/source/map/index.rb
251
224
  - lib/parser/source/map/keyword.rb
225
+ - lib/parser/source/map/method_definition.rb
252
226
  - lib/parser/source/map/objc_kwarg.rb
253
227
  - lib/parser/source/map/operator.rb
254
228
  - lib/parser/source/map/rescue_body.rb
@@ -266,45 +240,14 @@ files:
266
240
  - lib/parser/variables_stack.rb
267
241
  - lib/parser/version.rb
268
242
  - parser.gemspec
269
- - test/bug_163/fixtures/input.rb
270
- - test/bug_163/fixtures/output.rb
271
- - test/bug_163/rewriter.rb
272
- - test/helper.rb
273
- - test/parse_helper.rb
274
- - test/racc_coverage_helper.rb
275
- - test/test_ast_processor.rb
276
- - test/test_base.rb
277
- - test/test_current.rb
278
- - test/test_diagnostic.rb
279
- - test/test_diagnostic_engine.rb
280
- - test/test_encoding.rb
281
- - test/test_lexer.rb
282
- - test/test_lexer_stack_state.rb
283
- - test/test_meta.rb
284
- - test/test_parse_helper.rb
285
- - test/test_parser.rb
286
- - test/test_runner_parse.rb
287
- - test/test_runner_rewrite.rb
288
- - test/test_source_buffer.rb
289
- - test/test_source_comment.rb
290
- - test/test_source_comment_associator.rb
291
- - test/test_source_map.rb
292
- - test/test_source_range.rb
293
- - test/test_source_rewriter.rb
294
- - test/test_source_rewriter_action.rb
295
- - test/test_source_tree_rewriter.rb
296
- - test/test_static_environment.rb
297
- - test/using_tree_rewriter/fixtures/input.rb
298
- - test/using_tree_rewriter/fixtures/output.rb
299
- - test/using_tree_rewriter/using_tree_rewriter.rb
300
243
  homepage: https://github.com/whitequark/parser
301
244
  licenses:
302
245
  - MIT
303
246
  metadata:
304
247
  bug_tracker_uri: https://github.com/whitequark/parser/issues
305
- changelog_uri: https://github.com/whitequark/parser/blob/v2.7.1.4/CHANGELOG.md
306
- documentation_uri: https://www.rubydoc.info/gems/parser/2.7.1.4
307
- source_code_uri: https://github.com/whitequark/parser/tree/v2.7.1.4
248
+ changelog_uri: https://github.com/whitequark/parser/blob/v3.0.1.1/CHANGELOG.md
249
+ documentation_uri: https://www.rubydoc.info/gems/parser/3.0.1.1
250
+ source_code_uri: https://github.com/whitequark/parser/tree/v3.0.1.1
308
251
  post_install_message:
309
252
  rdoc_options: []
310
253
  require_paths:
@@ -324,35 +267,4 @@ rubygems_version: 3.0.6
324
267
  signing_key:
325
268
  specification_version: 4
326
269
  summary: A Ruby parser written in pure Ruby.
327
- test_files:
328
- - test/bug_163/fixtures/input.rb
329
- - test/bug_163/fixtures/output.rb
330
- - test/bug_163/rewriter.rb
331
- - test/helper.rb
332
- - test/parse_helper.rb
333
- - test/racc_coverage_helper.rb
334
- - test/test_ast_processor.rb
335
- - test/test_base.rb
336
- - test/test_current.rb
337
- - test/test_diagnostic.rb
338
- - test/test_diagnostic_engine.rb
339
- - test/test_encoding.rb
340
- - test/test_lexer.rb
341
- - test/test_lexer_stack_state.rb
342
- - test/test_meta.rb
343
- - test/test_parse_helper.rb
344
- - test/test_parser.rb
345
- - test/test_runner_parse.rb
346
- - test/test_runner_rewrite.rb
347
- - test/test_source_buffer.rb
348
- - test/test_source_comment.rb
349
- - test/test_source_comment_associator.rb
350
- - test/test_source_map.rb
351
- - test/test_source_range.rb
352
- - test/test_source_rewriter.rb
353
- - test/test_source_rewriter_action.rb
354
- - test/test_source_tree_rewriter.rb
355
- - test/test_static_environment.rb
356
- - test/using_tree_rewriter/fixtures/input.rb
357
- - test/using_tree_rewriter/fixtures/output.rb
358
- - test/using_tree_rewriter/using_tree_rewriter.rb
270
+ test_files: []