parser 2.6.0.0 → 3.1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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