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
@@ -1,78 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'helper'
4
-
5
- class TestLexerStackState < Minitest::Test
6
- def setup
7
- @state = Parser::Lexer::StackState.new('state')
8
- end
9
-
10
- def test_push
11
- refute @state.active?
12
-
13
- assert_equal true, @state.push(true)
14
- assert @state.active?
15
-
16
- assert_equal false, @state.push(false)
17
- refute @state.active?
18
- end
19
-
20
- def test_clear
21
- @state.push true
22
- @state.clear
23
-
24
- refute @state.active?
25
- end
26
-
27
- def test_pop
28
- @state.push(true)
29
-
30
- assert_equal true, @state.pop
31
- refute @state.active?
32
- end
33
-
34
- def test_pop_empty
35
- assert_equal false, @state.pop
36
- refute @state.active?
37
- end
38
-
39
- def test_lexpop_10
40
- @state.push(true)
41
- @state.push(false)
42
-
43
- assert_equal true, @state.lexpop
44
- assert_equal true, @state.pop
45
- end
46
-
47
- def test_lexpop_01
48
- @state.push(false)
49
- @state.push(true)
50
-
51
- assert_equal true, @state.lexpop
52
- assert_equal true, @state.pop
53
- end
54
-
55
- def test_lexpop_00
56
- @state.push(false)
57
- @state.push(false)
58
-
59
- assert_equal false, @state.lexpop
60
- assert_equal false, @state.pop
61
- end
62
-
63
- def test_dup
64
- @state.push(true)
65
- new_state = @state.dup
66
-
67
- assert_equal true, @state.pop
68
- assert_equal true, new_state.pop
69
- end
70
-
71
- def test_to_s
72
- @state.push(true)
73
- @state.push(false)
74
- @state.push(false)
75
-
76
- assert_equal '[100 <= state]', @state.to_s
77
- end
78
- end
@@ -1,80 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'helper'
4
- require 'parse_helper'
5
-
6
- class TestParseHelper < Minitest::Test
7
- include ParseHelper
8
-
9
- def test_parser_for_ruby_version
10
- assert_instance_of Parser::Ruby18,
11
- parser_for_ruby_version('1.8')
12
-
13
- assert_instance_of Parser::Ruby19,
14
- parser_for_ruby_version('1.9')
15
-
16
- assert_instance_of Parser::Ruby20,
17
- parser_for_ruby_version('2.0')
18
-
19
- assert_instance_of Parser::Ruby21,
20
- parser_for_ruby_version('2.1')
21
- end
22
-
23
- def parse_maps(what)
24
- parse_source_map_descriptions(what).to_a
25
- end
26
-
27
- def test_parse_mapsation_description
28
- assert_equal [[0, 4, 'expr', [], '~~~~ expr']],
29
- parse_maps('~~~~ expr')
30
-
31
- assert_equal [[0, 4, 'expr', [], '^~~~ expr']],
32
- parse_maps('^~~~ expr')
33
-
34
- assert_equal [[0, 4, 'expr', [], '^^^^ expr']],
35
- parse_maps('^^^^ expr')
36
-
37
- assert_equal [[2, 3, 'op', [], ' ^ op']],
38
- parse_maps(' ^ op')
39
-
40
- assert_equal [[2, 3, 'op', ['foo'], ' ~ op (foo)']],
41
- parse_maps(' ~ op (foo)')
42
-
43
- assert_equal [[2, 4, 'op', ['foo', 'bar'], ' ~~ op (foo.bar)']],
44
- parse_maps(' ~~ op (foo.bar)')
45
-
46
- assert_equal [[2, 4, 'op', ['foo/2', 'bar'], ' ~~ op (foo/2.bar)']],
47
- parse_maps(' ~~ op (foo/2.bar)')
48
-
49
- assert_equal [[0, 4, 'expr', [], '~~~~ expr'],
50
- [5, 7, 'op', ['str', 'e_h'], ' ~~ op (str.e_h)']],
51
- parse_maps(%{
52
- |~~~~ expr
53
- | ~~ op (str.e_h)
54
- })
55
- end
56
-
57
- def test_traverse_ast
58
- ast = s(:send,
59
- s(:int, 1), :+,
60
- s(:dstr,
61
- s(:str, 'foo'),
62
- s(:int, 2),
63
- s(:int, 3)))
64
-
65
- assert_equal ast, traverse_ast(ast, %w())
66
-
67
- assert_equal s(:int, 1), traverse_ast(ast, %w(int))
68
- assert_equal s(:str, 'foo'), traverse_ast(ast, %w(dstr str))
69
- assert_equal s(:int, 2), traverse_ast(ast, %w(dstr int))
70
- assert_equal s(:int, 2), traverse_ast(ast, %w(dstr int/1))
71
- assert_equal s(:int, 3), traverse_ast(ast, %w(dstr int/2))
72
-
73
- assert_nil traverse_ast(ast, %w(str))
74
- assert_nil traverse_ast(ast, %w(dstr int/3))
75
- end
76
-
77
- def test_assert_parses
78
- # Someone more clever and/or motivated than me is going to test this.
79
- end
80
- end