parser 2.5.1.0 → 3.0.1.1

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 (103) hide show
  1. checksums.yaml +4 -4
  2. data/lib/parser.rb +4 -0
  3. data/lib/parser/all.rb +3 -0
  4. data/lib/parser/ast/processor.rb +49 -1
  5. data/lib/parser/base.rb +30 -6
  6. data/lib/parser/builders/default.rb +586 -29
  7. data/lib/parser/context.rb +17 -0
  8. data/lib/parser/current.rb +34 -7
  9. data/lib/parser/current_arg_stack.rb +46 -0
  10. data/lib/parser/diagnostic.rb +1 -1
  11. data/lib/parser/diagnostic/engine.rb +1 -2
  12. data/lib/parser/lexer.rb +23780 -0
  13. data/lib/parser/lexer/dedenter.rb +52 -49
  14. data/lib/parser/lexer/literal.rb +4 -0
  15. data/lib/parser/lexer/stack_state.rb +4 -0
  16. data/lib/parser/macruby.rb +6149 -0
  17. data/lib/parser/max_numparam_stack.rb +56 -0
  18. data/lib/parser/messages.rb +74 -44
  19. data/lib/parser/meta.rb +13 -3
  20. data/lib/parser/ruby18.rb +5667 -0
  21. data/lib/parser/ruby19.rb +6092 -0
  22. data/lib/parser/ruby20.rb +6527 -0
  23. data/lib/parser/ruby21.rb +6578 -0
  24. data/lib/parser/ruby22.rb +6613 -0
  25. data/lib/parser/ruby23.rb +6624 -0
  26. data/lib/parser/ruby24.rb +6694 -0
  27. data/lib/parser/ruby25.rb +6662 -0
  28. data/lib/parser/ruby26.rb +6676 -0
  29. data/lib/parser/ruby27.rb +7862 -0
  30. data/lib/parser/ruby28.rb +8047 -0
  31. data/lib/parser/ruby30.rb +8060 -0
  32. data/lib/parser/ruby31.rb +8075 -0
  33. data/lib/parser/rubymotion.rb +6086 -0
  34. data/lib/parser/runner.rb +36 -2
  35. data/lib/parser/runner/ruby_parse.rb +2 -2
  36. data/lib/parser/runner/ruby_rewrite.rb +2 -2
  37. data/lib/parser/source/buffer.rb +54 -29
  38. data/lib/parser/source/comment.rb +18 -5
  39. data/lib/parser/source/comment/associator.rb +34 -11
  40. data/lib/parser/source/map.rb +1 -1
  41. data/lib/parser/source/map/method_definition.rb +25 -0
  42. data/lib/parser/source/range.rb +20 -4
  43. data/lib/parser/source/tree_rewriter.rb +146 -16
  44. data/lib/parser/source/tree_rewriter/action.rb +137 -28
  45. data/lib/parser/static_environment.rb +14 -0
  46. data/lib/parser/tree_rewriter.rb +3 -3
  47. data/lib/parser/variables_stack.rb +36 -0
  48. data/lib/parser/version.rb +1 -1
  49. data/parser.gemspec +13 -21
  50. metadata +34 -98
  51. data/.gitignore +0 -32
  52. data/.travis.yml +0 -21
  53. data/.yardopts +0 -21
  54. data/CHANGELOG.md +0 -909
  55. data/CONTRIBUTING.md +0 -17
  56. data/Gemfile +0 -10
  57. data/README.md +0 -301
  58. data/Rakefile +0 -165
  59. data/doc/AST_FORMAT.md +0 -1718
  60. data/doc/CUSTOMIZATION.md +0 -37
  61. data/doc/INTERNALS.md +0 -21
  62. data/doc/css/.gitkeep +0 -0
  63. data/doc/css/common.css +0 -68
  64. data/lib/parser/lexer.rl +0 -2376
  65. data/lib/parser/macruby.y +0 -2198
  66. data/lib/parser/ruby18.y +0 -1934
  67. data/lib/parser/ruby19.y +0 -2175
  68. data/lib/parser/ruby20.y +0 -2353
  69. data/lib/parser/ruby21.y +0 -2357
  70. data/lib/parser/ruby22.y +0 -2364
  71. data/lib/parser/ruby23.y +0 -2370
  72. data/lib/parser/ruby24.y +0 -2395
  73. data/lib/parser/ruby25.y +0 -2392
  74. data/lib/parser/ruby26.y +0 -2392
  75. data/lib/parser/rubymotion.y +0 -2182
  76. data/test/bug_163/fixtures/input.rb +0 -5
  77. data/test/bug_163/fixtures/output.rb +0 -5
  78. data/test/bug_163/rewriter.rb +0 -20
  79. data/test/helper.rb +0 -52
  80. data/test/parse_helper.rb +0 -315
  81. data/test/racc_coverage_helper.rb +0 -133
  82. data/test/test_base.rb +0 -31
  83. data/test/test_current.rb +0 -27
  84. data/test/test_diagnostic.rb +0 -96
  85. data/test/test_diagnostic_engine.rb +0 -62
  86. data/test/test_encoding.rb +0 -99
  87. data/test/test_lexer.rb +0 -3537
  88. data/test/test_lexer_stack_state.rb +0 -78
  89. data/test/test_parse_helper.rb +0 -80
  90. data/test/test_parser.rb +0 -6968
  91. data/test/test_runner_rewrite.rb +0 -47
  92. data/test/test_source_buffer.rb +0 -162
  93. data/test/test_source_comment.rb +0 -36
  94. data/test/test_source_comment_associator.rb +0 -367
  95. data/test/test_source_map.rb +0 -15
  96. data/test/test_source_range.rb +0 -172
  97. data/test/test_source_rewriter.rb +0 -541
  98. data/test/test_source_rewriter_action.rb +0 -46
  99. data/test/test_source_tree_rewriter.rb +0 -173
  100. data/test/test_static_environment.rb +0 -45
  101. data/test/using_tree_rewriter/fixtures/input.rb +0 -3
  102. data/test/using_tree_rewriter/fixtures/output.rb +0 -3
  103. data/test/using_tree_rewriter/using_tree_rewriter.rb +0 -9
@@ -3,6 +3,8 @@
3
3
  module Parser
4
4
 
5
5
  class StaticEnvironment
6
+ FORWARD_ARGS = :FORWARD_ARGS
7
+
6
8
  def initialize
7
9
  reset
8
10
  end
@@ -41,6 +43,18 @@ module Parser
41
43
  def declared?(name)
42
44
  @variables.include?(name.to_sym)
43
45
  end
46
+
47
+ def declare_forward_args
48
+ declare(FORWARD_ARGS)
49
+ end
50
+
51
+ def declared_forward_args?
52
+ declared?(FORWARD_ARGS)
53
+ end
54
+
55
+ def empty?
56
+ @stack.empty?
57
+ end
44
58
  end
45
59
 
46
60
  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.5.1.0'
4
+ VERSION = '3.0.1.1'
5
5
  end
data/parser.gemspec CHANGED
@@ -12,33 +12,25 @@ Gem::Specification.new do |spec|
12
12
  spec.summary = spec.description
13
13
  spec.homepage = 'https://github.com/whitequark/parser'
14
14
  spec.license = 'MIT'
15
- spec.has_rdoc = 'yard'
16
-
17
- spec.files = `git ls-files`.split + %w(
18
- lib/parser/lexer.rb
19
- lib/parser/ruby18.rb
20
- lib/parser/ruby19.rb
21
- lib/parser/ruby20.rb
22
- lib/parser/ruby21.rb
23
- lib/parser/ruby22.rb
24
- lib/parser/ruby23.rb
25
- lib/parser/ruby24.rb
26
- lib/parser/ruby25.rb
27
- lib/parser/ruby26.rb
28
- lib/parser/macruby.rb
29
- lib/parser/rubymotion.rb
30
- )
15
+
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']
31
24
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
32
- spec.test_files = spec.files.grep(%r{^test/})
33
25
  spec.require_paths = ['lib']
34
26
 
35
27
  spec.required_ruby_version = '>= 2.0.0'
36
28
 
37
- spec.add_dependency 'ast', '~> 2.4.0'
29
+ spec.add_dependency 'ast', '~> 2.4.1'
38
30
 
39
- spec.add_development_dependency 'bundler', '~> 1.15'
40
- spec.add_development_dependency 'rake', '~> 10.0'
41
- 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'
42
34
  spec.add_development_dependency 'cliver', '~> 0.3.2'
43
35
 
44
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.5.1.0
4
+ version: 3.0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - whitequark
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-12 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
@@ -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,22 +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
- - doc/AST_FORMAT.md
174
- - doc/CUSTOMIZATION.md
175
- - doc/INTERNALS.md
176
- - doc/css/.gitkeep
177
- - doc/css/common.css
178
171
  - lib/gauntlet_parser.rb
179
172
  - lib/parser.rb
180
173
  - lib/parser/all.rb
@@ -186,40 +179,34 @@ files:
186
179
  - lib/parser/color.rb
187
180
  - lib/parser/context.rb
188
181
  - lib/parser/current.rb
182
+ - lib/parser/current_arg_stack.rb
189
183
  - lib/parser/deprecation.rb
190
184
  - lib/parser/diagnostic.rb
191
185
  - lib/parser/diagnostic/engine.rb
192
186
  - lib/parser/lexer.rb
193
- - lib/parser/lexer.rl
194
187
  - lib/parser/lexer/dedenter.rb
195
188
  - lib/parser/lexer/explanation.rb
196
189
  - lib/parser/lexer/literal.rb
197
190
  - lib/parser/lexer/stack_state.rb
198
191
  - lib/parser/macruby.rb
199
- - lib/parser/macruby.y
192
+ - lib/parser/max_numparam_stack.rb
200
193
  - lib/parser/messages.rb
201
194
  - lib/parser/meta.rb
202
195
  - lib/parser/rewriter.rb
203
196
  - lib/parser/ruby18.rb
204
- - lib/parser/ruby18.y
205
197
  - lib/parser/ruby19.rb
206
- - lib/parser/ruby19.y
207
198
  - lib/parser/ruby20.rb
208
- - lib/parser/ruby20.y
209
199
  - lib/parser/ruby21.rb
210
- - lib/parser/ruby21.y
211
200
  - lib/parser/ruby22.rb
212
- - lib/parser/ruby22.y
213
201
  - lib/parser/ruby23.rb
214
- - lib/parser/ruby23.y
215
202
  - lib/parser/ruby24.rb
216
- - lib/parser/ruby24.y
217
203
  - lib/parser/ruby25.rb
218
- - lib/parser/ruby25.y
219
204
  - lib/parser/ruby26.rb
220
- - lib/parser/ruby26.y
205
+ - lib/parser/ruby27.rb
206
+ - lib/parser/ruby28.rb
207
+ - lib/parser/ruby30.rb
208
+ - lib/parser/ruby31.rb
221
209
  - lib/parser/rubymotion.rb
222
- - lib/parser/rubymotion.y
223
210
  - lib/parser/runner.rb
224
211
  - lib/parser/runner/ruby_parse.rb
225
212
  - lib/parser/runner/ruby_rewrite.rb
@@ -235,6 +222,7 @@ files:
235
222
  - lib/parser/source/map/heredoc.rb
236
223
  - lib/parser/source/map/index.rb
237
224
  - lib/parser/source/map/keyword.rb
225
+ - lib/parser/source/map/method_definition.rb
238
226
  - lib/parser/source/map/objc_kwarg.rb
239
227
  - lib/parser/source/map/operator.rb
240
228
  - lib/parser/source/map/rescue_body.rb
@@ -249,41 +237,18 @@ files:
249
237
  - lib/parser/static_environment.rb
250
238
  - lib/parser/syntax_error.rb
251
239
  - lib/parser/tree_rewriter.rb
240
+ - lib/parser/variables_stack.rb
252
241
  - lib/parser/version.rb
253
242
  - parser.gemspec
254
- - test/bug_163/fixtures/input.rb
255
- - test/bug_163/fixtures/output.rb
256
- - test/bug_163/rewriter.rb
257
- - test/helper.rb
258
- - test/parse_helper.rb
259
- - test/racc_coverage_helper.rb
260
- - test/test_base.rb
261
- - test/test_current.rb
262
- - test/test_diagnostic.rb
263
- - test/test_diagnostic_engine.rb
264
- - test/test_encoding.rb
265
- - test/test_lexer.rb
266
- - test/test_lexer_stack_state.rb
267
- - test/test_parse_helper.rb
268
- - test/test_parser.rb
269
- - test/test_runner_rewrite.rb
270
- - test/test_source_buffer.rb
271
- - test/test_source_comment.rb
272
- - test/test_source_comment_associator.rb
273
- - test/test_source_map.rb
274
- - test/test_source_range.rb
275
- - test/test_source_rewriter.rb
276
- - test/test_source_rewriter_action.rb
277
- - test/test_source_tree_rewriter.rb
278
- - test/test_static_environment.rb
279
- - test/using_tree_rewriter/fixtures/input.rb
280
- - test/using_tree_rewriter/fixtures/output.rb
281
- - test/using_tree_rewriter/using_tree_rewriter.rb
282
243
  homepage: https://github.com/whitequark/parser
283
244
  licenses:
284
245
  - MIT
285
- metadata: {}
286
- 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.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
251
+ post_install_message:
287
252
  rdoc_options: []
288
253
  require_paths:
289
254
  - lib
@@ -298,37 +263,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
298
263
  - !ruby/object:Gem::Version
299
264
  version: '0'
300
265
  requirements: []
301
- rubyforge_project:
302
- rubygems_version: 2.7.6
303
- signing_key:
266
+ rubygems_version: 3.0.6
267
+ signing_key:
304
268
  specification_version: 4
305
269
  summary: A Ruby parser written in pure Ruby.
306
- test_files:
307
- - test/bug_163/fixtures/input.rb
308
- - test/bug_163/fixtures/output.rb
309
- - test/bug_163/rewriter.rb
310
- - test/helper.rb
311
- - test/parse_helper.rb
312
- - test/racc_coverage_helper.rb
313
- - test/test_base.rb
314
- - test/test_current.rb
315
- - test/test_diagnostic.rb
316
- - test/test_diagnostic_engine.rb
317
- - test/test_encoding.rb
318
- - test/test_lexer.rb
319
- - test/test_lexer_stack_state.rb
320
- - test/test_parse_helper.rb
321
- - test/test_parser.rb
322
- - test/test_runner_rewrite.rb
323
- - test/test_source_buffer.rb
324
- - test/test_source_comment.rb
325
- - test/test_source_comment_associator.rb
326
- - test/test_source_map.rb
327
- - test/test_source_range.rb
328
- - test/test_source_rewriter.rb
329
- - test/test_source_rewriter_action.rb
330
- - test/test_source_tree_rewriter.rb
331
- - test/test_static_environment.rb
332
- - test/using_tree_rewriter/fixtures/input.rb
333
- - test/using_tree_rewriter/fixtures/output.rb
334
- - 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
data/.travis.yml DELETED
@@ -1,21 +0,0 @@
1
- dist: trusty
2
- language: ruby
3
- rvm:
4
- - 2.0.0
5
- - 2.2.9
6
- - 2.3.6
7
- - 2.4.3
8
- - 2.5.0
9
- - ruby-head
10
- - jruby-9.1.15.0
11
- - rbx-2
12
- matrix:
13
- allow_failures:
14
- - rvm: ruby-head
15
- - rvm: rbx-2
16
- before_install:
17
- - gem install bundler
18
- - bundle --version
19
- - gem --version
20
- script:
21
- - bundle exec rake test_cov