parser 2.7.1.1 → 3.0.2.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 (101) hide show
  1. checksums.yaml +4 -4
  2. data/lib/parser.rb +1 -0
  3. data/lib/parser/all.rb +2 -0
  4. data/lib/parser/ast/processor.rb +5 -0
  5. data/lib/parser/base.rb +7 -5
  6. data/lib/parser/builders/default.rb +263 -23
  7. data/lib/parser/context.rb +5 -0
  8. data/lib/parser/current.rb +24 -6
  9. data/lib/parser/current_arg_stack.rb +5 -2
  10. data/lib/parser/diagnostic.rb +1 -1
  11. data/lib/parser/diagnostic/engine.rb +1 -2
  12. data/lib/parser/lexer.rb +887 -803
  13. data/lib/parser/macruby.rb +2214 -2189
  14. data/lib/parser/max_numparam_stack.rb +13 -5
  15. data/lib/parser/messages.rb +18 -0
  16. data/lib/parser/meta.rb +6 -5
  17. data/lib/parser/ruby18.rb +9 -3
  18. data/lib/parser/ruby19.rb +2297 -2289
  19. data/lib/parser/ruby20.rb +2413 -2397
  20. data/lib/parser/ruby21.rb +2419 -2411
  21. data/lib/parser/ruby22.rb +2468 -2460
  22. data/lib/parser/ruby23.rb +2452 -2452
  23. data/lib/parser/ruby24.rb +2435 -2430
  24. data/lib/parser/ruby25.rb +2220 -2214
  25. data/lib/parser/ruby26.rb +2220 -2214
  26. data/lib/parser/ruby27.rb +3715 -3615
  27. data/lib/parser/ruby28.rb +8047 -0
  28. data/lib/parser/ruby30.rb +8060 -0
  29. data/lib/parser/ruby31.rb +8226 -0
  30. data/lib/parser/rubymotion.rb +2190 -2182
  31. data/lib/parser/runner.rb +31 -2
  32. data/lib/parser/runner/ruby_rewrite.rb +2 -2
  33. data/lib/parser/source/buffer.rb +53 -28
  34. data/lib/parser/source/comment.rb +14 -1
  35. data/lib/parser/source/comment/associator.rb +31 -8
  36. data/lib/parser/source/map/method_definition.rb +25 -0
  37. data/lib/parser/source/range.rb +10 -3
  38. data/lib/parser/source/tree_rewriter.rb +100 -10
  39. data/lib/parser/source/tree_rewriter/action.rb +114 -21
  40. data/lib/parser/static_environment.rb +4 -0
  41. data/lib/parser/tree_rewriter.rb +1 -2
  42. data/lib/parser/variables_stack.rb +4 -0
  43. data/lib/parser/version.rb +1 -1
  44. data/parser.gemspec +3 -18
  45. metadata +17 -98
  46. data/.gitignore +0 -33
  47. data/.travis.yml +0 -42
  48. data/.yardopts +0 -21
  49. data/CHANGELOG.md +0 -1075
  50. data/CONTRIBUTING.md +0 -17
  51. data/Gemfile +0 -10
  52. data/README.md +0 -309
  53. data/Rakefile +0 -166
  54. data/ci/run_rubocop_specs +0 -14
  55. data/doc/AST_FORMAT.md +0 -2180
  56. data/doc/CUSTOMIZATION.md +0 -37
  57. data/doc/INTERNALS.md +0 -21
  58. data/doc/css/.gitkeep +0 -0
  59. data/doc/css/common.css +0 -68
  60. data/lib/parser/lexer.rl +0 -2536
  61. data/lib/parser/macruby.y +0 -2198
  62. data/lib/parser/ruby18.y +0 -1934
  63. data/lib/parser/ruby19.y +0 -2175
  64. data/lib/parser/ruby20.y +0 -2353
  65. data/lib/parser/ruby21.y +0 -2357
  66. data/lib/parser/ruby22.y +0 -2364
  67. data/lib/parser/ruby23.y +0 -2370
  68. data/lib/parser/ruby24.y +0 -2408
  69. data/lib/parser/ruby25.y +0 -2405
  70. data/lib/parser/ruby26.y +0 -2413
  71. data/lib/parser/ruby27.y +0 -2941
  72. data/lib/parser/rubymotion.y +0 -2182
  73. data/test/bug_163/fixtures/input.rb +0 -5
  74. data/test/bug_163/fixtures/output.rb +0 -5
  75. data/test/bug_163/rewriter.rb +0 -20
  76. data/test/helper.rb +0 -60
  77. data/test/parse_helper.rb +0 -319
  78. data/test/racc_coverage_helper.rb +0 -133
  79. data/test/test_base.rb +0 -31
  80. data/test/test_current.rb +0 -29
  81. data/test/test_diagnostic.rb +0 -96
  82. data/test/test_diagnostic_engine.rb +0 -62
  83. data/test/test_encoding.rb +0 -99
  84. data/test/test_lexer.rb +0 -3608
  85. data/test/test_lexer_stack_state.rb +0 -78
  86. data/test/test_parse_helper.rb +0 -80
  87. data/test/test_parser.rb +0 -9430
  88. data/test/test_runner_parse.rb +0 -35
  89. data/test/test_runner_rewrite.rb +0 -47
  90. data/test/test_source_buffer.rb +0 -162
  91. data/test/test_source_comment.rb +0 -36
  92. data/test/test_source_comment_associator.rb +0 -367
  93. data/test/test_source_map.rb +0 -15
  94. data/test/test_source_range.rb +0 -187
  95. data/test/test_source_rewriter.rb +0 -541
  96. data/test/test_source_rewriter_action.rb +0 -46
  97. data/test/test_source_tree_rewriter.rb +0 -253
  98. data/test/test_static_environment.rb +0 -45
  99. data/test/using_tree_rewriter/fixtures/input.rb +0 -3
  100. data/test/using_tree_rewriter/fixtures/output.rb +0 -3
  101. data/test/using_tree_rewriter/using_tree_rewriter.rb +0 -9
@@ -7,7 +7,7 @@ module Parser
7
7
  #
8
8
  # Actions are arranged in a tree and get combined so that:
9
9
  # children are strictly contained by their parent
10
- # sibblings all disjoint from one another
10
+ # sibblings all disjoint from one another and ordered
11
11
  # only actions with replacement==nil may have children
12
12
  #
13
13
  class TreeRewriter::Action
@@ -41,15 +41,54 @@ module Parser
41
41
  reps = []
42
42
  reps << [@range.begin, @insert_before] unless @insert_before.empty?
43
43
  reps << [@range, @replacement] if @replacement
44
- reps.concat(@children.sort_by(&:range).flat_map(&:ordered_replacements))
44
+ reps.concat(@children.flat_map(&:ordered_replacements))
45
45
  reps << [@range.end, @insert_after] unless @insert_after.empty?
46
46
  reps
47
47
  end
48
48
 
49
+ def nested_actions
50
+ actions = []
51
+ actions << [:wrap, @range, @insert_before, @insert_after] if !@insert_before.empty? ||
52
+ !@insert_after.empty?
53
+ actions << [:replace, @range, @replacement] if @replacement
54
+ actions.concat(@children.flat_map(&:nested_actions))
55
+ end
56
+
49
57
  def insertion?
50
58
  !insert_before.empty? || !insert_after.empty? || (replacement && !replacement.empty?)
51
59
  end
52
60
 
61
+ ##
62
+ # A root action has its range set to the whole source range, even
63
+ # though it typically do not act on that range.
64
+ # This method returns the action as if it was a child action with
65
+ # its range contracted.
66
+ # @return [Action]
67
+ def contract
68
+ raise 'Empty actions can not be contracted' if empty?
69
+ return self if insertion?
70
+ range = @range.with(
71
+ begin_pos: children.first.range.begin_pos,
72
+ end_pos: children.last.range.end_pos,
73
+ )
74
+ with(range: range)
75
+ end
76
+
77
+ ##
78
+ # @return [Action] that has been moved to the given source_buffer and with the given offset
79
+ # No check is done on validity of resulting range.
80
+ def moved(source_buffer, offset)
81
+ moved_range = ::Parser::Source::Range.new(
82
+ source_buffer,
83
+ @range.begin_pos + offset,
84
+ @range.end_pos + offset
85
+ )
86
+ with(
87
+ range: moved_range,
88
+ children: children.map { |child| child.moved(source_buffer, offset) }
89
+ )
90
+ end
91
+
53
92
  protected
54
93
 
55
94
  attr_reader :children
@@ -69,24 +108,24 @@ module Parser
69
108
  end
70
109
 
71
110
  def place_in_hierarchy(action)
72
- family = @children.group_by { |child| child.relationship_with(action) }
111
+ family = analyse_hierarchy(action)
73
112
 
74
113
  if family[:fusible]
75
- fuse_deletions(action, family[:fusible], [*family[:sibbling], *family[:child]])
114
+ fuse_deletions(action, family[:fusible], [*family[:sibbling_left], *family[:child], *family[:sibbling_right]])
76
115
  else
77
116
  extra_sibbling = if family[:parent] # action should be a descendant of one of the children
78
- family[:parent][0].do_combine(action)
117
+ family[:parent].do_combine(action)
79
118
  elsif family[:child] # or it should become the parent of some of the children,
80
119
  action.with(children: family[:child], enforcer: @enforcer)
81
120
  .combine_children(action.children)
82
121
  else # or else it should become an additional child
83
122
  action
84
123
  end
85
- with(children: [*family[:sibbling], extra_sibbling])
124
+ with(children: [*family[:sibbling_left], extra_sibbling, *family[:sibbling_right]])
86
125
  end
87
126
  end
88
127
 
89
- # Assumes more_children all contained within @range
128
+ # Assumes `more_children` all contained within `@range`
90
129
  def combine_children(more_children)
91
130
  more_children.inject(self) do |parent, new_child|
92
131
  parent.place_in_hierarchy(new_child)
@@ -100,22 +139,76 @@ module Parser
100
139
  without_fusible.do_combine(fused_deletion)
101
140
  end
102
141
 
103
- # Returns what relationship self should have with `action`; either of
104
- # :sibbling, :parent, :child, :fusible or raises a CloberingError
105
- # In case of equal range, returns :parent
106
- def relationship_with(action)
107
- if action.range == @range || @range.contains?(action.range)
108
- :parent
109
- elsif @range.contained?(action.range)
110
- :child
111
- elsif @range.disjoint?(action.range)
112
- :sibbling
113
- elsif !action.insertion? && !insertion?
114
- @enforcer.call(:crossing_deletions) { {range: action.range, conflict: @range} }
115
- :fusible
142
+ # Similar to @children.bsearch_index || size
143
+ # except allows for a starting point
144
+ # and `bsearch_index` is only Ruby 2.3+
145
+ def bsearch_child_index(from = 0)
146
+ size = @children.size
147
+ (from...size).bsearch { |i| yield @children[i] } || size
148
+ end
149
+
150
+ # Returns the children in a hierarchy with respect to `action`:
151
+ # :sibbling_left, sibbling_right (for those that are disjoint from `action`)
152
+ # :parent (in case one of our children contains `action`)
153
+ # :child (in case `action` strictly contains some of our children)
154
+ # :fusible (in case `action` overlaps some children but they can be fused in one deletion)
155
+ # or raises a `CloberingError`
156
+ # In case a child has equal range to `action`, it is returned as `:parent`
157
+ # Reminder: an empty range 1...1 is considered disjoint from 1...10
158
+ def analyse_hierarchy(action)
159
+ r = action.range
160
+ # left_index is the index of the first child that isn't completely to the left of action
161
+ left_index = bsearch_child_index { |child| child.range.end_pos > r.begin_pos }
162
+ # right_index is the index of the first child that is completely on the right of action
163
+ start = left_index == 0 ? 0 : left_index - 1 # See "corner case" below for reason of -1
164
+ right_index = bsearch_child_index(start) { |child| child.range.begin_pos >= r.end_pos }
165
+ center = right_index - left_index
166
+ case center
167
+ when 0
168
+ # All children are disjoint from action, nothing else to do
169
+ when -1
170
+ # Corner case: if a child has empty range == action's range
171
+ # then it will appear to be both disjoint and to the left of action,
172
+ # as well as disjoint and to the right of action.
173
+ # Since ranges are equal, we return it as parent
174
+ left_index -= 1 # Fix indices, as otherwise this child would be
175
+ right_index += 1 # considered as a sibbling (both left and right!)
176
+ parent = @children[left_index]
116
177
  else
117
- @enforcer.call(:crossing_insertions) { {range: action.range, conflict: @range} }
178
+ overlap_left = @children[left_index].range.begin_pos <=> r.begin_pos
179
+ overlap_right = @children[right_index-1].range.end_pos <=> r.end_pos
180
+
181
+ # For one child to be the parent of action, we must have:
182
+ if center == 1 && overlap_left <= 0 && overlap_right >= 0
183
+ parent = @children[left_index]
184
+ else
185
+ # Otherwise consider all non disjoint elements (center) to be contained...
186
+ contained = @children[left_index...right_index]
187
+ fusible = check_fusible(action,
188
+ (contained.shift if overlap_left < 0), # ... but check first and last one
189
+ (contained.pop if overlap_right > 0) # ... for overlaps
190
+ )
191
+ end
192
+ end
193
+
194
+ {
195
+ parent: parent,
196
+ sibbling_left: @children[0...left_index],
197
+ sibbling_right: @children[right_index...@children.size],
198
+ fusible: fusible,
199
+ child: contained,
200
+ }
201
+ end
202
+
203
+ # @param [Array(Action | nil)] fusible
204
+ def check_fusible(action, *fusible)
205
+ fusible.compact!
206
+ return if fusible.empty?
207
+ fusible.each do |child|
208
+ kind = action.insertion? || child.insertion? ? :crossing_insertions : :crossing_deletions
209
+ @enforcer.call(kind) { {range: action.range, conflict: child.range} }
118
210
  end
211
+ fusible
119
212
  end
120
213
 
121
214
  # Assumes action.range == range && action.children.empty?
@@ -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
@@ -28,8 +28,7 @@ module Parser
28
28
  # EOF
29
29
  #
30
30
  # ast = Parser::CurrentRuby.parse code
31
- # buffer = Parser::Source::Buffer.new('(example)')
32
- # buffer.source = code
31
+ # buffer = Parser::Source::Buffer.new('(example)', source: code)
33
32
  # rewriter = RemoveDo.new
34
33
  #
35
34
  # # Rewrite the AST, returns a String with the new form.
@@ -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.1'
4
+ VERSION = '3.0.2.0'
5
5
  end
data/parser.gemspec CHANGED
@@ -20,31 +20,16 @@ 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/macruby.rb
36
- lib/parser/rubymotion.rb
37
- )
23
+ spec.files = Dir['bin/*', 'lib/**/*.rb', 'parser.gemspec', 'LICENSE.txt']
38
24
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
39
- spec.test_files = spec.files.grep(%r{^test/})
40
25
  spec.require_paths = ['lib']
41
26
 
42
27
  spec.required_ruby_version = '>= 2.0.0'
43
28
 
44
- spec.add_dependency 'ast', '~> 2.4.0'
29
+ spec.add_dependency 'ast', '~> 2.4.1'
45
30
 
46
31
  spec.add_development_dependency 'bundler', '>= 1.15', '< 3.0.0'
47
- spec.add_development_dependency 'rake', '~> 10.0'
32
+ spec.add_development_dependency 'rake', '~> 13.0.1'
48
33
  spec.add_development_dependency 'racc', '= 1.4.15'
49
34
  spec.add_development_dependency 'cliver', '~> 0.3.2'
50
35
 
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.1
4
+ version: 3.0.2.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: 2020-04-14 00:00:00.000000000 Z
11
+ date: 2021-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ast
@@ -16,14 +16,14 @@ 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
@@ -50,14 +50,14 @@ dependencies:
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '10.0'
53
+ version: 13.0.1
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '10.0'
60
+ version: 13.0.1
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: racc
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -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,39 +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
206
+ - lib/parser/ruby28.rb
207
+ - lib/parser/ruby30.rb
208
+ - lib/parser/ruby31.rb
232
209
  - lib/parser/rubymotion.rb
233
- - lib/parser/rubymotion.y
234
210
  - lib/parser/runner.rb
235
211
  - lib/parser/runner/ruby_parse.rb
236
212
  - lib/parser/runner/ruby_rewrite.rb
@@ -246,6 +222,7 @@ files:
246
222
  - lib/parser/source/map/heredoc.rb
247
223
  - lib/parser/source/map/index.rb
248
224
  - lib/parser/source/map/keyword.rb
225
+ - lib/parser/source/map/method_definition.rb
249
226
  - lib/parser/source/map/objc_kwarg.rb
250
227
  - lib/parser/source/map/operator.rb
251
228
  - lib/parser/source/map/rescue_body.rb
@@ -263,44 +240,15 @@ files:
263
240
  - lib/parser/variables_stack.rb
264
241
  - lib/parser/version.rb
265
242
  - parser.gemspec
266
- - test/bug_163/fixtures/input.rb
267
- - test/bug_163/fixtures/output.rb
268
- - test/bug_163/rewriter.rb
269
- - test/helper.rb
270
- - test/parse_helper.rb
271
- - test/racc_coverage_helper.rb
272
- - test/test_base.rb
273
- - test/test_current.rb
274
- - test/test_diagnostic.rb
275
- - test/test_diagnostic_engine.rb
276
- - test/test_encoding.rb
277
- - test/test_lexer.rb
278
- - test/test_lexer_stack_state.rb
279
- - test/test_parse_helper.rb
280
- - test/test_parser.rb
281
- - test/test_runner_parse.rb
282
- - test/test_runner_rewrite.rb
283
- - test/test_source_buffer.rb
284
- - test/test_source_comment.rb
285
- - test/test_source_comment_associator.rb
286
- - test/test_source_map.rb
287
- - test/test_source_range.rb
288
- - test/test_source_rewriter.rb
289
- - test/test_source_rewriter_action.rb
290
- - test/test_source_tree_rewriter.rb
291
- - test/test_static_environment.rb
292
- - test/using_tree_rewriter/fixtures/input.rb
293
- - test/using_tree_rewriter/fixtures/output.rb
294
- - test/using_tree_rewriter/using_tree_rewriter.rb
295
243
  homepage: https://github.com/whitequark/parser
296
244
  licenses:
297
245
  - MIT
298
246
  metadata:
299
247
  bug_tracker_uri: https://github.com/whitequark/parser/issues
300
- changelog_uri: https://github.com/whitequark/parser/blob/v2.7.1.1/CHANGELOG.md
301
- documentation_uri: https://www.rubydoc.info/gems/parser/2.7.1.1
302
- source_code_uri: https://github.com/whitequark/parser/tree/v2.7.1.1
303
- post_install_message:
248
+ changelog_uri: https://github.com/whitequark/parser/blob/v3.0.2.0/CHANGELOG.md
249
+ documentation_uri: https://www.rubydoc.info/gems/parser/3.0.2.0
250
+ source_code_uri: https://github.com/whitequark/parser/tree/v3.0.2.0
251
+ post_install_message:
304
252
  rdoc_options: []
305
253
  require_paths:
306
254
  - lib
@@ -316,36 +264,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
316
264
  version: '0'
317
265
  requirements: []
318
266
  rubygems_version: 3.0.6
319
- signing_key:
267
+ signing_key:
320
268
  specification_version: 4
321
269
  summary: A Ruby parser written in pure Ruby.
322
- test_files:
323
- - test/bug_163/fixtures/input.rb
324
- - test/bug_163/fixtures/output.rb
325
- - test/bug_163/rewriter.rb
326
- - test/helper.rb
327
- - test/parse_helper.rb
328
- - test/racc_coverage_helper.rb
329
- - test/test_base.rb
330
- - test/test_current.rb
331
- - test/test_diagnostic.rb
332
- - test/test_diagnostic_engine.rb
333
- - test/test_encoding.rb
334
- - test/test_lexer.rb
335
- - test/test_lexer_stack_state.rb
336
- - test/test_parse_helper.rb
337
- - test/test_parser.rb
338
- - test/test_runner_parse.rb
339
- - test/test_runner_rewrite.rb
340
- - test/test_source_buffer.rb
341
- - test/test_source_comment.rb
342
- - test/test_source_comment_associator.rb
343
- - test/test_source_map.rb
344
- - test/test_source_range.rb
345
- - test/test_source_rewriter.rb
346
- - test/test_source_rewriter_action.rb
347
- - test/test_source_tree_rewriter.rb
348
- - test/test_static_environment.rb
349
- - test/using_tree_rewriter/fixtures/input.rb
350
- - test/using_tree_rewriter/fixtures/output.rb
351
- - test/using_tree_rewriter/using_tree_rewriter.rb
270
+ test_files: []