parser 2.6.0.0 → 3.1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/lib/parser/all.rb +3 -0
  3. data/lib/parser/ast/processor.rb +48 -1
  4. data/lib/parser/base.rb +30 -6
  5. data/lib/parser/builders/default.rb +670 -38
  6. data/lib/parser/context.rb +24 -26
  7. data/lib/parser/current.rb +36 -9
  8. data/lib/parser/current_arg_stack.rb +46 -0
  9. data/lib/parser/diagnostic/engine.rb +1 -2
  10. data/lib/parser/diagnostic.rb +1 -1
  11. data/lib/parser/lexer/dedenter.rb +58 -49
  12. data/lib/parser/lexer/explanation.rb +1 -1
  13. data/lib/parser/lexer.rb +13837 -11893
  14. data/lib/parser/macruby.rb +2544 -2489
  15. data/lib/parser/max_numparam_stack.rb +56 -0
  16. data/lib/parser/messages.rb +78 -44
  17. data/lib/parser/meta.rb +13 -3
  18. data/lib/parser/ruby18.rb +2313 -2259
  19. data/lib/parser/ruby19.rb +2537 -2488
  20. data/lib/parser/ruby20.rb +2724 -2673
  21. data/lib/parser/ruby21.rb +2766 -2727
  22. data/lib/parser/ruby22.rb +2683 -2628
  23. data/lib/parser/ruby23.rb +2796 -2755
  24. data/lib/parser/ruby24.rb +2812 -2771
  25. data/lib/parser/ruby25.rb +2703 -2670
  26. data/lib/parser/ruby26.rb +2794 -2747
  27. data/lib/parser/ruby27.rb +7914 -0
  28. data/lib/parser/ruby28.rb +8047 -0
  29. data/lib/parser/ruby30.rb +8096 -0
  30. data/lib/parser/ruby31.rb +8354 -0
  31. data/lib/parser/rubymotion.rb +2527 -2485
  32. data/lib/parser/runner/ruby_parse.rb +2 -2
  33. data/lib/parser/runner/ruby_rewrite.rb +2 -2
  34. data/lib/parser/runner.rb +36 -2
  35. data/lib/parser/source/buffer.rb +53 -28
  36. data/lib/parser/source/comment/associator.rb +31 -8
  37. data/lib/parser/source/comment.rb +14 -1
  38. data/lib/parser/source/map/method_definition.rb +25 -0
  39. data/lib/parser/source/range.rb +19 -3
  40. data/lib/parser/source/tree_rewriter/action.rb +137 -28
  41. data/lib/parser/source/tree_rewriter.rb +144 -14
  42. data/lib/parser/static_environment.rb +23 -0
  43. data/lib/parser/tree_rewriter.rb +3 -3
  44. data/lib/parser/variables_stack.rb +36 -0
  45. data/lib/parser/version.rb +1 -1
  46. data/lib/parser.rb +4 -0
  47. data/parser.gemspec +12 -19
  48. metadata +34 -99
  49. data/.gitignore +0 -32
  50. data/.travis.yml +0 -45
  51. data/.yardopts +0 -21
  52. data/CHANGELOG.md +0 -943
  53. data/CONTRIBUTING.md +0 -17
  54. data/Gemfile +0 -10
  55. data/README.md +0 -301
  56. data/Rakefile +0 -165
  57. data/ci/run_rubocop_specs +0 -14
  58. data/doc/AST_FORMAT.md +0 -1735
  59. data/doc/CUSTOMIZATION.md +0 -37
  60. data/doc/INTERNALS.md +0 -21
  61. data/doc/css/.gitkeep +0 -0
  62. data/doc/css/common.css +0 -68
  63. data/lib/parser/lexer.rl +0 -2383
  64. data/lib/parser/macruby.y +0 -2198
  65. data/lib/parser/ruby18.y +0 -1934
  66. data/lib/parser/ruby19.y +0 -2175
  67. data/lib/parser/ruby20.y +0 -2353
  68. data/lib/parser/ruby21.y +0 -2357
  69. data/lib/parser/ruby22.y +0 -2364
  70. data/lib/parser/ruby23.y +0 -2370
  71. data/lib/parser/ruby24.y +0 -2408
  72. data/lib/parser/ruby25.y +0 -2405
  73. data/lib/parser/ruby26.y +0 -2413
  74. data/lib/parser/rubymotion.y +0 -2182
  75. data/test/bug_163/fixtures/input.rb +0 -5
  76. data/test/bug_163/fixtures/output.rb +0 -5
  77. data/test/bug_163/rewriter.rb +0 -20
  78. data/test/helper.rb +0 -52
  79. data/test/parse_helper.rb +0 -315
  80. data/test/racc_coverage_helper.rb +0 -133
  81. data/test/test_base.rb +0 -31
  82. data/test/test_current.rb +0 -27
  83. data/test/test_diagnostic.rb +0 -96
  84. data/test/test_diagnostic_engine.rb +0 -62
  85. data/test/test_encoding.rb +0 -99
  86. data/test/test_lexer.rb +0 -3543
  87. data/test/test_lexer_stack_state.rb +0 -78
  88. data/test/test_parse_helper.rb +0 -80
  89. data/test/test_parser.rb +0 -7087
  90. data/test/test_runner_rewrite.rb +0 -47
  91. data/test/test_source_buffer.rb +0 -162
  92. data/test/test_source_comment.rb +0 -36
  93. data/test/test_source_comment_associator.rb +0 -367
  94. data/test/test_source_map.rb +0 -15
  95. data/test/test_source_range.rb +0 -172
  96. data/test/test_source_rewriter.rb +0 -541
  97. data/test/test_source_rewriter_action.rb +0 -46
  98. data/test/test_source_tree_rewriter.rb +0 -173
  99. data/test/test_static_environment.rb +0 -45
  100. data/test/using_tree_rewriter/fixtures/input.rb +0 -3
  101. data/test/using_tree_rewriter/fixtures/output.rb +0 -3
  102. data/test/using_tree_rewriter/using_tree_rewriter.rb +0 -9
@@ -117,6 +117,71 @@ module Parser
117
117
  @action_root = TreeRewriter::Action.new(all_encompassing_range, @enforcer)
118
118
  end
119
119
 
120
+ ##
121
+ # Returns true iff no (non trivial) update has been recorded
122
+ #
123
+ # @return [Boolean]
124
+ #
125
+ def empty?
126
+ @action_root.empty?
127
+ end
128
+
129
+ ##
130
+ # Merges the updates of argument with the receiver.
131
+ # Policies of the receiver are used.
132
+ # This action is atomic in that it won't change the receiver
133
+ # unless it succeeds.
134
+ #
135
+ # @param [Rewriter] with
136
+ # @return [Rewriter] self
137
+ # @raise [ClobberingError] when clobbering is detected
138
+ #
139
+ def merge!(with)
140
+ raise 'TreeRewriter are not for the same source_buffer' unless
141
+ source_buffer == with.source_buffer
142
+
143
+ @action_root = @action_root.combine(with.action_root)
144
+ self
145
+ end
146
+
147
+ ##
148
+ # Returns a new rewriter that consists of the updates of the received
149
+ # and the given argument. Policies of the receiver are used.
150
+ #
151
+ # @param [Rewriter] with
152
+ # @return [Rewriter] merge of receiver and argument
153
+ # @raise [ClobberingError] when clobbering is detected
154
+ #
155
+ def merge(with)
156
+ dup.merge!(with)
157
+ end
158
+
159
+ ##
160
+ # For special cases where one needs to merge a rewriter attached to a different source_buffer
161
+ # or that needs to be offset. Policies of the receiver are used.
162
+ #
163
+ # @param [TreeRewriter] rewriter from different source_buffer
164
+ # @param [Integer] offset
165
+ # @return [Rewriter] self
166
+ # @raise [IndexError] if action ranges (once offset) don't fit the current buffer
167
+ #
168
+ def import!(foreign_rewriter, offset: 0)
169
+ return self if foreign_rewriter.empty?
170
+
171
+ contracted = foreign_rewriter.action_root.contract
172
+ merge_effective_range = ::Parser::Source::Range.new(
173
+ @source_buffer,
174
+ contracted.range.begin_pos + offset,
175
+ contracted.range.end_pos + offset,
176
+ )
177
+ check_range_validity(merge_effective_range)
178
+
179
+ merge_with = contracted.moved(@source_buffer, offset)
180
+
181
+ @action_root = @action_root.combine(merge_with)
182
+ self
183
+ end
184
+
120
185
  ##
121
186
  # Replaces the code of the source range `range` with `content`.
122
187
  #
@@ -185,28 +250,62 @@ module Parser
185
250
  # @return [String]
186
251
  #
187
252
  def process
188
- source = @source_buffer.source.dup
189
- adjustment = 0
253
+ source = @source_buffer.source
190
254
 
255
+ chunks = []
256
+ last_end = 0
191
257
  @action_root.ordered_replacements.each do |range, replacement|
192
- begin_pos = range.begin_pos + adjustment
193
- end_pos = begin_pos + range.length
194
-
195
- source[begin_pos...end_pos] = replacement
196
-
197
- adjustment += replacement.length - range.length
258
+ chunks << source[last_end...range.begin_pos] << replacement
259
+ last_end = range.end_pos
198
260
  end
261
+ chunks << source[last_end...source.length]
262
+ chunks.join
263
+ end
264
+
265
+ ##
266
+ # Returns a representation of the rewriter as an ordered list of replacements.
267
+ #
268
+ # rewriter.as_replacements # => [ [1...1, '('],
269
+ # [2...4, 'foo'],
270
+ # [5...6, ''],
271
+ # [6...6, '!'],
272
+ # [10...10, ')'],
273
+ # ]
274
+ #
275
+ # This representation is sufficient to recreate the result of `process` but it is
276
+ # not sufficient to recreate completely the rewriter for further merging/actions.
277
+ # See `as_nested_actions`
278
+ #
279
+ # @return [Array<Range, String>] an ordered list of pairs of range & replacement
280
+ #
281
+ def as_replacements
282
+ @action_root.ordered_replacements
283
+ end
199
284
 
200
- source
285
+ ##
286
+ # Returns a representation of the rewriter as nested insertions (:wrap) and replacements.
287
+ #
288
+ # rewriter.as_actions # =>[ [:wrap, 1...10, '(', ')'],
289
+ # [:wrap, 2...6, '', '!'], # aka "insert_after"
290
+ # [:replace, 2...4, 'foo'],
291
+ # [:replace, 5...6, ''], # aka "removal"
292
+ # ],
293
+ #
294
+ # Contrary to `as_replacements`, this representation is sufficient to recreate exactly
295
+ # the rewriter.
296
+ #
297
+ # @return [Array<(Symbol, Range, String{, String})>]
298
+ #
299
+ def as_nested_actions
300
+ @action_root.nested_actions
201
301
  end
202
302
 
203
303
  ##
204
304
  # Provides a protected block where a sequence of multiple rewrite actions
205
305
  # are handled atomically. If any of the actions failed by clobbering,
206
- # all the actions are rolled back.
306
+ # all the actions are rolled back. Transactions can be nested.
207
307
  #
208
308
  # @raise [RuntimeError] when no block is passed
209
- # @raise [RuntimeError] when already in a transaction
210
309
  #
211
310
  def transaction
212
311
  unless block_given?
@@ -231,6 +330,11 @@ module Parser
231
330
  @in_transaction
232
331
  end
233
332
 
333
+ # :nodoc:
334
+ def inspect
335
+ "#<#{self.class} #{source_buffer.name}: #{action_summary}>"
336
+ end
337
+
234
338
  ##
235
339
  # @api private
236
340
  # @deprecated Use insert_after or wrap
@@ -256,8 +360,34 @@ module Parser
256
360
 
257
361
  extend Deprecation
258
362
 
363
+ protected
364
+
365
+ attr_reader :action_root
366
+
259
367
  private
260
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
+
261
391
  ACTIONS = %i[accept warn raise].freeze
262
392
  def check_policy_validity
263
393
  invalid = @policy.values - ACTIONS
@@ -266,14 +396,14 @@ module Parser
266
396
 
267
397
  def combine(range, attributes)
268
398
  range = check_range_validity(range)
269
- action = TreeRewriter::Action.new(range, @enforcer, attributes)
399
+ action = TreeRewriter::Action.new(range, @enforcer, **attributes)
270
400
  @action_root = @action_root.combine(action)
271
401
  self
272
402
  end
273
403
 
274
404
  def check_range_validity(range)
275
405
  if range.begin_pos < 0 || range.end_pos > @source_buffer.source.size
276
- raise IndexError, "The range #{range} is outside the bounds of the source"
406
+ raise IndexError, "The range #{range.to_range} is outside the bounds of the source"
277
407
  end
278
408
  range
279
409
  end
@@ -281,7 +411,7 @@ module Parser
281
411
  def enforce_policy(event)
282
412
  return if @policy[event] == :accept
283
413
  return unless (values = yield)
284
- trigger_policy(event, values)
414
+ trigger_policy(event, **values)
285
415
  end
286
416
 
287
417
  POLICY_TO_LEVEL = {warn: :warning, raise: :error}.freeze
@@ -3,6 +3,9 @@
3
3
  module Parser
4
4
 
5
5
  class StaticEnvironment
6
+ FORWARD_ARGS = :FORWARD_ARGS
7
+ ANONYMOUS_BLOCKARG = :ANONYMOUS_BLOCKARG
8
+
6
9
  def initialize
7
10
  reset
8
11
  end
@@ -41,6 +44,26 @@ module Parser
41
44
  def declared?(name)
42
45
  @variables.include?(name.to_sym)
43
46
  end
47
+
48
+ def declare_forward_args
49
+ declare(FORWARD_ARGS)
50
+ end
51
+
52
+ def declared_forward_args?
53
+ declared?(FORWARD_ARGS)
54
+ end
55
+
56
+ def declare_anonymous_blockarg
57
+ declare(ANONYMOUS_BLOCKARG)
58
+ end
59
+
60
+ def declared_anonymous_blockarg?
61
+ declared?(ANONYMOUS_BLOCKARG)
62
+ end
63
+
64
+ def empty?
65
+ @stack.empty?
66
+ end
44
67
  end
45
68
 
46
69
  end
@@ -27,12 +27,12 @@ module Parser
27
27
  # end
28
28
  # EOF
29
29
  #
30
- # buffer = Parser::Source::Buffer.new('(example)')
31
- # buffer.source = code
30
+ # ast = Parser::CurrentRuby.parse code
31
+ # buffer = Parser::Source::Buffer.new('(example)', source: code)
32
32
  # rewriter = RemoveDo.new
33
33
  #
34
34
  # # Rewrite the AST, returns a String with the new form.
35
- # puts rewriter.rewrite(buffer)
35
+ # puts rewriter.rewrite(buffer, ast)
36
36
  #
37
37
  # This would result in the following Ruby code:
38
38
  #
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Parser
4
+
5
+ class VariablesStack
6
+ def initialize
7
+ @stack = []
8
+ push
9
+ end
10
+
11
+ def empty?
12
+ @stack.empty?
13
+ end
14
+
15
+ def push
16
+ @stack << Set.new
17
+ end
18
+
19
+ def pop
20
+ @stack.pop
21
+ end
22
+
23
+ def reset
24
+ @stack.clear
25
+ end
26
+
27
+ def declare(name)
28
+ @stack.last << name.to_sym
29
+ end
30
+
31
+ def declared?(name)
32
+ @stack.last.include?(name.to_sym)
33
+ end
34
+ end
35
+
36
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Parser
4
- VERSION = '2.6.0.0'
4
+ VERSION = '3.1.0.0'
5
5
  end
data/lib/parser.rb CHANGED
@@ -46,6 +46,7 @@ module Parser
46
46
  require 'parser/source/map/variable'
47
47
  require 'parser/source/map/keyword'
48
48
  require 'parser/source/map/definition'
49
+ require 'parser/source/map/method_definition'
49
50
  require 'parser/source/map/send'
50
51
  require 'parser/source/map/index'
51
52
  require 'parser/source/map/condition'
@@ -73,6 +74,9 @@ module Parser
73
74
  end
74
75
 
75
76
  require 'parser/context'
77
+ require 'parser/max_numparam_stack'
78
+ require 'parser/current_arg_stack'
79
+ require 'parser/variables_stack'
76
80
 
77
81
  require 'parser/base'
78
82
 
data/parser.gemspec CHANGED
@@ -13,31 +13,24 @@ Gem::Specification.new do |spec|
13
13
  spec.homepage = 'https://github.com/whitequark/parser'
14
14
  spec.license = 'MIT'
15
15
 
16
- spec.files = `git ls-files`.split + %w(
17
- lib/parser/lexer.rb
18
- lib/parser/ruby18.rb
19
- lib/parser/ruby19.rb
20
- lib/parser/ruby20.rb
21
- lib/parser/ruby21.rb
22
- lib/parser/ruby22.rb
23
- lib/parser/ruby23.rb
24
- lib/parser/ruby24.rb
25
- lib/parser/ruby25.rb
26
- lib/parser/ruby26.rb
27
- lib/parser/macruby.rb
28
- lib/parser/rubymotion.rb
29
- )
16
+ spec.metadata = {
17
+ 'bug_tracker_uri' => 'https://github.com/whitequark/parser/issues',
18
+ 'changelog_uri' => "https://github.com/whitequark/parser/blob/v#{spec.version}/CHANGELOG.md",
19
+ 'documentation_uri' => "https://www.rubydoc.info/gems/parser/#{spec.version}",
20
+ 'source_code_uri' => "https://github.com/whitequark/parser/tree/v#{spec.version}"
21
+ }
22
+
23
+ spec.files = Dir['bin/*', 'lib/**/*.rb', 'parser.gemspec', 'LICENSE.txt']
30
24
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
31
- spec.test_files = spec.files.grep(%r{^test/})
32
25
  spec.require_paths = ['lib']
33
26
 
34
27
  spec.required_ruby_version = '>= 2.0.0'
35
28
 
36
- spec.add_dependency 'ast', '~> 2.4.0'
29
+ spec.add_dependency 'ast', '~> 2.4.1'
37
30
 
38
- spec.add_development_dependency 'bundler', '~> 1.15'
39
- spec.add_development_dependency 'rake', '~> 10.0'
40
- spec.add_development_dependency 'racc', '= 1.4.14'
31
+ spec.add_development_dependency 'bundler', '>= 1.15', '< 3.0.0'
32
+ spec.add_development_dependency 'rake', '~> 13.0.1'
33
+ spec.add_development_dependency 'racc', '= 1.4.15'
41
34
  spec.add_development_dependency 'cliver', '~> 0.3.2'
42
35
 
43
36
  spec.add_development_dependency 'yard'
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.6.0.0
4
+ version: 3.1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - whitequark
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-16 00:00:00.000000000 Z
11
+ date: 2022-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ast
@@ -16,56 +16,62 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.4.0
19
+ version: 2.4.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 2.4.0
26
+ version: 2.4.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.15'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: 3.0.0
34
37
  type: :development
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - "~>"
41
+ - - ">="
39
42
  - !ruby/object:Gem::Version
40
43
  version: '1.15'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: 3.0.0
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: rake
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: '10.0'
53
+ version: 13.0.1
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
58
  - - "~>"
53
59
  - !ruby/object:Gem::Version
54
- version: '10.0'
60
+ version: 13.0.1
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: racc
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
65
  - - '='
60
66
  - !ruby/object:Gem::Version
61
- version: 1.4.14
67
+ version: 1.4.15
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
72
  - - '='
67
73
  - !ruby/object:Gem::Version
68
- version: 1.4.14
74
+ version: 1.4.15
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: cliver
71
77
  requirement: !ruby/object:Gem::Requirement
@@ -159,23 +165,9 @@ executables:
159
165
  extensions: []
160
166
  extra_rdoc_files: []
161
167
  files:
162
- - ".gitignore"
163
- - ".travis.yml"
164
- - ".yardopts"
165
- - CHANGELOG.md
166
- - CONTRIBUTING.md
167
- - Gemfile
168
168
  - LICENSE.txt
169
- - README.md
170
- - Rakefile
171
169
  - bin/ruby-parse
172
170
  - bin/ruby-rewrite
173
- - ci/run_rubocop_specs
174
- - doc/AST_FORMAT.md
175
- - doc/CUSTOMIZATION.md
176
- - doc/INTERNALS.md
177
- - doc/css/.gitkeep
178
- - doc/css/common.css
179
171
  - lib/gauntlet_parser.rb
180
172
  - lib/parser.rb
181
173
  - lib/parser/all.rb
@@ -187,40 +179,34 @@ files:
187
179
  - lib/parser/color.rb
188
180
  - lib/parser/context.rb
189
181
  - lib/parser/current.rb
182
+ - lib/parser/current_arg_stack.rb
190
183
  - lib/parser/deprecation.rb
191
184
  - lib/parser/diagnostic.rb
192
185
  - lib/parser/diagnostic/engine.rb
193
186
  - lib/parser/lexer.rb
194
- - lib/parser/lexer.rl
195
187
  - lib/parser/lexer/dedenter.rb
196
188
  - lib/parser/lexer/explanation.rb
197
189
  - lib/parser/lexer/literal.rb
198
190
  - lib/parser/lexer/stack_state.rb
199
191
  - lib/parser/macruby.rb
200
- - lib/parser/macruby.y
192
+ - lib/parser/max_numparam_stack.rb
201
193
  - lib/parser/messages.rb
202
194
  - lib/parser/meta.rb
203
195
  - lib/parser/rewriter.rb
204
196
  - lib/parser/ruby18.rb
205
- - lib/parser/ruby18.y
206
197
  - lib/parser/ruby19.rb
207
- - lib/parser/ruby19.y
208
198
  - lib/parser/ruby20.rb
209
- - lib/parser/ruby20.y
210
199
  - lib/parser/ruby21.rb
211
- - lib/parser/ruby21.y
212
200
  - lib/parser/ruby22.rb
213
- - lib/parser/ruby22.y
214
201
  - lib/parser/ruby23.rb
215
- - lib/parser/ruby23.y
216
202
  - lib/parser/ruby24.rb
217
- - lib/parser/ruby24.y
218
203
  - lib/parser/ruby25.rb
219
- - lib/parser/ruby25.y
220
204
  - lib/parser/ruby26.rb
221
- - lib/parser/ruby26.y
205
+ - lib/parser/ruby27.rb
206
+ - lib/parser/ruby28.rb
207
+ - lib/parser/ruby30.rb
208
+ - lib/parser/ruby31.rb
222
209
  - lib/parser/rubymotion.rb
223
- - lib/parser/rubymotion.y
224
210
  - lib/parser/runner.rb
225
211
  - lib/parser/runner/ruby_parse.rb
226
212
  - lib/parser/runner/ruby_rewrite.rb
@@ -236,6 +222,7 @@ files:
236
222
  - lib/parser/source/map/heredoc.rb
237
223
  - lib/parser/source/map/index.rb
238
224
  - lib/parser/source/map/keyword.rb
225
+ - lib/parser/source/map/method_definition.rb
239
226
  - lib/parser/source/map/objc_kwarg.rb
240
227
  - lib/parser/source/map/operator.rb
241
228
  - lib/parser/source/map/rescue_body.rb
@@ -250,41 +237,18 @@ files:
250
237
  - lib/parser/static_environment.rb
251
238
  - lib/parser/syntax_error.rb
252
239
  - lib/parser/tree_rewriter.rb
240
+ - lib/parser/variables_stack.rb
253
241
  - lib/parser/version.rb
254
242
  - parser.gemspec
255
- - test/bug_163/fixtures/input.rb
256
- - test/bug_163/fixtures/output.rb
257
- - test/bug_163/rewriter.rb
258
- - test/helper.rb
259
- - test/parse_helper.rb
260
- - test/racc_coverage_helper.rb
261
- - test/test_base.rb
262
- - test/test_current.rb
263
- - test/test_diagnostic.rb
264
- - test/test_diagnostic_engine.rb
265
- - test/test_encoding.rb
266
- - test/test_lexer.rb
267
- - test/test_lexer_stack_state.rb
268
- - test/test_parse_helper.rb
269
- - test/test_parser.rb
270
- - test/test_runner_rewrite.rb
271
- - test/test_source_buffer.rb
272
- - test/test_source_comment.rb
273
- - test/test_source_comment_associator.rb
274
- - test/test_source_map.rb
275
- - test/test_source_range.rb
276
- - test/test_source_rewriter.rb
277
- - test/test_source_rewriter_action.rb
278
- - test/test_source_tree_rewriter.rb
279
- - test/test_static_environment.rb
280
- - test/using_tree_rewriter/fixtures/input.rb
281
- - test/using_tree_rewriter/fixtures/output.rb
282
- - test/using_tree_rewriter/using_tree_rewriter.rb
283
243
  homepage: https://github.com/whitequark/parser
284
244
  licenses:
285
245
  - MIT
286
- metadata: {}
287
- post_install_message:
246
+ metadata:
247
+ bug_tracker_uri: https://github.com/whitequark/parser/issues
248
+ changelog_uri: https://github.com/whitequark/parser/blob/v3.1.0.0/CHANGELOG.md
249
+ documentation_uri: https://www.rubydoc.info/gems/parser/3.1.0.0
250
+ source_code_uri: https://github.com/whitequark/parser/tree/v3.1.0.0
251
+ post_install_message:
288
252
  rdoc_options: []
289
253
  require_paths:
290
254
  - lib
@@ -299,37 +263,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
299
263
  - !ruby/object:Gem::Version
300
264
  version: '0'
301
265
  requirements: []
302
- rubyforge_project:
303
- rubygems_version: 2.7.6
304
- signing_key:
266
+ rubygems_version: 3.2.3
267
+ signing_key:
305
268
  specification_version: 4
306
269
  summary: A Ruby parser written in pure Ruby.
307
- test_files:
308
- - test/bug_163/fixtures/input.rb
309
- - test/bug_163/fixtures/output.rb
310
- - test/bug_163/rewriter.rb
311
- - test/helper.rb
312
- - test/parse_helper.rb
313
- - test/racc_coverage_helper.rb
314
- - test/test_base.rb
315
- - test/test_current.rb
316
- - test/test_diagnostic.rb
317
- - test/test_diagnostic_engine.rb
318
- - test/test_encoding.rb
319
- - test/test_lexer.rb
320
- - test/test_lexer_stack_state.rb
321
- - test/test_parse_helper.rb
322
- - test/test_parser.rb
323
- - test/test_runner_rewrite.rb
324
- - test/test_source_buffer.rb
325
- - test/test_source_comment.rb
326
- - test/test_source_comment_associator.rb
327
- - test/test_source_map.rb
328
- - test/test_source_range.rb
329
- - test/test_source_rewriter.rb
330
- - test/test_source_rewriter_action.rb
331
- - test/test_source_tree_rewriter.rb
332
- - test/test_static_environment.rb
333
- - test/using_tree_rewriter/fixtures/input.rb
334
- - test/using_tree_rewriter/fixtures/output.rb
335
- - test/using_tree_rewriter/using_tree_rewriter.rb
270
+ test_files: []
data/.gitignore DELETED
@@ -1,32 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- lib/bundler/man
11
- pkg
12
- rdoc
13
- yardoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
18
- *.output
19
- .ruby-version
20
- .ruby-gemset
21
- lib/parser/lexer.rb
22
- lib/parser/ruby18.rb
23
- lib/parser/ruby19.rb
24
- lib/parser/ruby20.rb
25
- lib/parser/ruby21.rb
26
- lib/parser/ruby22.rb
27
- lib/parser/ruby23.rb
28
- lib/parser/ruby24.rb
29
- lib/parser/ruby25.rb
30
- lib/parser/ruby26.rb
31
- lib/parser/macruby.rb
32
- lib/parser/rubymotion.rb