parser 2.7.1.4 → 3.0.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 (96) hide show
  1. checksums.yaml +4 -4
  2. data/lib/parser/all.rb +1 -1
  3. data/lib/parser/ast/processor.rb +3 -7
  4. data/lib/parser/base.rb +7 -5
  5. data/lib/parser/builders/default.rb +177 -28
  6. data/lib/parser/context.rb +4 -0
  7. data/lib/parser/current.rb +9 -9
  8. data/lib/parser/current_arg_stack.rb +5 -2
  9. data/lib/parser/lexer.rb +813 -803
  10. data/lib/parser/macruby.rb +1 -1
  11. data/lib/parser/max_numparam_stack.rb +13 -5
  12. data/lib/parser/messages.rb +3 -0
  13. data/lib/parser/meta.rb +7 -6
  14. data/lib/parser/ruby18.rb +7 -3
  15. data/lib/parser/ruby19.rb +1 -1
  16. data/lib/parser/ruby20.rb +1 -1
  17. data/lib/parser/ruby21.rb +1 -1
  18. data/lib/parser/ruby22.rb +1 -1
  19. data/lib/parser/ruby23.rb +1 -1
  20. data/lib/parser/ruby24.rb +1 -1
  21. data/lib/parser/ruby25.rb +1 -1
  22. data/lib/parser/ruby26.rb +1 -1
  23. data/lib/parser/ruby27.rb +3720 -3701
  24. data/lib/parser/ruby30.rb +8060 -0
  25. data/lib/parser/rubymotion.rb +1 -1
  26. data/lib/parser/runner.rb +4 -4
  27. data/lib/parser/source/buffer.rb +45 -27
  28. data/lib/parser/source/comment/associator.rb +1 -1
  29. data/lib/parser/source/comment.rb +1 -1
  30. data/lib/parser/source/map/{endless_definition.rb → method_definition.rb} +5 -3
  31. data/lib/parser/source/range.rb +2 -2
  32. data/lib/parser/static_environment.rb +4 -0
  33. data/lib/parser/variables_stack.rb +4 -0
  34. data/lib/parser/version.rb +1 -1
  35. data/lib/parser.rb +1 -1
  36. data/parser.gemspec +1 -17
  37. metadata +8 -97
  38. data/.gitignore +0 -34
  39. data/.travis.yml +0 -40
  40. data/.yardopts +0 -21
  41. data/CHANGELOG.md +0 -1116
  42. data/CONTRIBUTING.md +0 -17
  43. data/Gemfile +0 -10
  44. data/README.md +0 -309
  45. data/Rakefile +0 -167
  46. data/ci/run_rubocop_specs +0 -14
  47. data/doc/AST_FORMAT.md +0 -2283
  48. data/doc/CUSTOMIZATION.md +0 -37
  49. data/doc/INTERNALS.md +0 -21
  50. data/doc/css/.gitkeep +0 -0
  51. data/doc/css/common.css +0 -68
  52. data/lib/parser/lexer.rl +0 -2550
  53. data/lib/parser/macruby.y +0 -2208
  54. data/lib/parser/ruby18.y +0 -1936
  55. data/lib/parser/ruby19.y +0 -2185
  56. data/lib/parser/ruby20.y +0 -2363
  57. data/lib/parser/ruby21.y +0 -2364
  58. data/lib/parser/ruby22.y +0 -2371
  59. data/lib/parser/ruby23.y +0 -2377
  60. data/lib/parser/ruby24.y +0 -2415
  61. data/lib/parser/ruby25.y +0 -2412
  62. data/lib/parser/ruby26.y +0 -2420
  63. data/lib/parser/ruby27.y +0 -2950
  64. data/lib/parser/ruby28.y +0 -3043
  65. data/lib/parser/rubymotion.y +0 -2192
  66. data/test/bug_163/fixtures/input.rb +0 -5
  67. data/test/bug_163/fixtures/output.rb +0 -5
  68. data/test/bug_163/rewriter.rb +0 -20
  69. data/test/helper.rb +0 -103
  70. data/test/parse_helper.rb +0 -323
  71. data/test/racc_coverage_helper.rb +0 -133
  72. data/test/test_ast_processor.rb +0 -32
  73. data/test/test_base.rb +0 -31
  74. data/test/test_current.rb +0 -31
  75. data/test/test_diagnostic.rb +0 -95
  76. data/test/test_diagnostic_engine.rb +0 -59
  77. data/test/test_encoding.rb +0 -99
  78. data/test/test_lexer.rb +0 -3617
  79. data/test/test_lexer_stack_state.rb +0 -78
  80. data/test/test_meta.rb +0 -12
  81. data/test/test_parse_helper.rb +0 -80
  82. data/test/test_parser.rb +0 -9780
  83. data/test/test_runner_parse.rb +0 -56
  84. data/test/test_runner_rewrite.rb +0 -47
  85. data/test/test_source_buffer.rb +0 -165
  86. data/test/test_source_comment.rb +0 -36
  87. data/test/test_source_comment_associator.rb +0 -399
  88. data/test/test_source_map.rb +0 -14
  89. data/test/test_source_range.rb +0 -192
  90. data/test/test_source_rewriter.rb +0 -541
  91. data/test/test_source_rewriter_action.rb +0 -46
  92. data/test/test_source_tree_rewriter.rb +0 -361
  93. data/test/test_static_environment.rb +0 -45
  94. data/test/using_tree_rewriter/fixtures/input.rb +0 -3
  95. data/test/using_tree_rewriter/fixtures/output.rb +0 -3
  96. data/test/using_tree_rewriter/using_tree_rewriter.rb +0 -9
@@ -1,192 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'helper'
4
-
5
- class TestSourceRange < Minitest::Test
6
- def setup
7
- @buf = Parser::Source::Buffer.new('(string)',
8
- source: "foobar\nbaz")
9
- @sr1_3 = Parser::Source::Range.new(@buf, 1, 3)
10
- @sr2_2 = Parser::Source::Range.new(@buf, 2, 2)
11
- @sr3_3 = Parser::Source::Range.new(@buf, 3, 3)
12
- @sr2_6 = Parser::Source::Range.new(@buf, 2, 6)
13
- @sr5_8 = Parser::Source::Range.new(@buf, 5, 8)
14
- @sr5_7 = Parser::Source::Range.new(@buf, 5, 7)
15
- @sr6_7 = Parser::Source::Range.new(@buf, 6, 7)
16
- end
17
-
18
- def test_initialize
19
- assert_equal 1, @sr1_3.begin_pos
20
- assert_equal 3, @sr1_3.end_pos
21
- assert @sr1_3.frozen?
22
- end
23
-
24
- def test_size
25
- assert_equal 4, @sr2_6.size
26
- end
27
-
28
- def test_bad_size
29
- assert_raises ArgumentError do
30
- Parser::Source::Range.new(@buf, 2, 1)
31
- end
32
- end
33
-
34
- def test_join
35
- sr = @sr1_3.join(@sr5_8)
36
-
37
- assert_equal 1, sr.begin_pos
38
- assert_equal 8, sr.end_pos
39
- end
40
-
41
- def test_intersect
42
- assert_equal 2, @sr1_3.intersect(@sr2_6).begin_pos
43
- assert_equal 3, @sr1_3.intersect(@sr2_6).end_pos
44
- assert_equal 5, @sr2_6.intersect(@sr5_8).begin_pos
45
- assert_equal 6, @sr2_6.intersect(@sr5_8).end_pos
46
- assert @sr1_3.intersect(@sr5_8) == nil
47
- assert_equal 2, @sr1_3.intersect(@sr2_2).begin_pos
48
- assert_equal 2, @sr1_3.intersect(@sr2_2).end_pos
49
- assert_equal 2, @sr2_2.intersect(@sr2_2).begin_pos
50
- assert_equal 2, @sr2_2.intersect(@sr2_2).end_pos
51
- end
52
-
53
- def test_overlaps
54
- assert !@sr1_3.overlaps?(@sr5_8)
55
- assert @sr1_3.overlaps?(@sr2_6)
56
- assert @sr2_6.overlaps?(@sr5_8)
57
- assert @sr1_3.overlaps?(@sr2_2)
58
- assert !@sr2_6.overlaps?(@sr2_2)
59
- assert @sr2_2.overlaps?(@sr2_2)
60
- end
61
-
62
- def check_relationship(relationship, sr1, sr2, reflexive_relationship = relationship)
63
- # Double check equality
64
- assert_equal true, sr1 == sr1.dup
65
- assert_equal true, sr1 != sr2
66
- # Check relationships and reflexivity
67
- assert_equal true, sr1.send(relationship, sr2)
68
- assert_equal true, sr2.send(reflexive_relationship, sr1)
69
- # Check it's not true for itself
70
- assert_equal false, sr1.send(relationship, sr1)
71
- # Check other relationships return false
72
- others = %i[disjoint? crossing? contains? contained?] - [relationship, reflexive_relationship]
73
- others.each do |other_rel|
74
- assert_equal false, sr1.send(other_rel, sr2), other_rel
75
- assert_equal false, sr2.send(other_rel, sr1), other_rel
76
- end
77
- end
78
-
79
- def test_disjoint
80
- check_relationship(:disjoint?, @sr1_3, @sr5_8)
81
- check_relationship(:disjoint?, @sr2_2, @sr2_6)
82
- check_relationship(:disjoint?, @sr2_2, @sr3_3)
83
- check_relationship(:disjoint?, @sr2_6, @sr6_7)
84
- end
85
-
86
- def test_crossing
87
- check_relationship(:crossing?, @sr1_3, @sr2_6)
88
- end
89
-
90
- def test_containment
91
- check_relationship(:contained?, @sr2_2, @sr1_3, :contains?)
92
- check_relationship(:contained?, @sr5_7, @sr5_8, :contains?)
93
- check_relationship(:contained?, @sr6_7, @sr5_8, :contains?)
94
- end
95
-
96
- def test_order
97
- assert_equal 0, @sr1_3 <=> @sr1_3
98
- assert_equal(-1, @sr1_3 <=> @sr5_8)
99
- assert_equal(-1, @sr2_2 <=> @sr2_6)
100
- assert_equal(+1, @sr2_6 <=> @sr2_2)
101
-
102
- assert_equal(-1, @sr1_3 <=> @sr2_6)
103
-
104
- assert_equal(+1, @sr2_2 <=> @sr1_3)
105
- assert_equal(-1, @sr1_3 <=> @sr2_2)
106
- assert_equal(-1, @sr5_7 <=> @sr5_8)
107
-
108
- assert_nil @sr1_3 <=> Parser::Source::Range.new(@buf.dup, 1, 3)
109
- assert_nil @sr1_3 <=> 4
110
- end
111
-
112
- def test_empty
113
- assert !@sr1_3.empty?
114
- assert @sr2_2.empty?
115
- end
116
-
117
- def test_line
118
- sr = Parser::Source::Range.new(@buf, 7, 8)
119
- assert_equal 2, sr.line
120
- end
121
-
122
- def test_source_line
123
- sr = Parser::Source::Range.new(@buf, 7, 8)
124
- assert_equal 'baz', sr.source_line
125
- end
126
-
127
- def test_columns
128
- sr = Parser::Source::Range.new(@buf, 7, 8)
129
- assert_equal 0, sr.begin.column
130
- assert_equal 1, sr.end.column
131
- assert_equal 0...1, sr.column_range
132
- end
133
-
134
- def test_begin_end
135
- sr_beg = @sr2_6.begin
136
- assert_equal 2, sr_beg.begin_pos
137
- assert_equal 2, sr_beg.end_pos
138
-
139
- sr_end = @sr2_6.end
140
- assert_equal 6, sr_end.begin_pos
141
- assert_equal 6, sr_end.end_pos
142
- end
143
-
144
- def test_source
145
- sr = Parser::Source::Range.new(@buf, 0, 3)
146
- assert_equal 'foo', sr.source
147
-
148
- sr_multi = Parser::Source::Range.new(@buf, 0, 10)
149
- assert_equal "foobar\nbaz", sr_multi.source
150
- end
151
-
152
- def test_is?
153
- sr = Parser::Source::Range.new(@buf, 0, 3)
154
- assert sr.is?('foo')
155
- refute sr.is?('bar')
156
- end
157
-
158
- def test_to_range
159
- sr = Parser::Source::Range.new(@buf, 10, 20)
160
- assert_equal (10...20), sr.to_range
161
- end
162
-
163
- def test_to_s
164
- sr = Parser::Source::Range.new(@buf, 8, 9)
165
- assert_equal '(string):2:2', sr.to_s
166
- end
167
-
168
- def test_with
169
- sr2 = @sr1_3.with(begin_pos: 2)
170
- sr3 = @sr1_3.with(end_pos: 4)
171
-
172
- assert_equal 2, sr2.begin_pos
173
- assert_equal 3, sr2.end_pos
174
- assert_equal 1, sr3.begin_pos
175
- assert_equal 4, sr3.end_pos
176
- end
177
-
178
- def test_eql_and_hash
179
- assert_equal false, @sr1_3.eql?(@sr3_3)
180
- assert @sr1_3.hash != @sr3_3.hash
181
-
182
- also_1_3 = @sr3_3.with(begin_pos: 1)
183
- assert_equal true, @sr1_3.eql?(also_1_3)
184
- assert_equal @sr1_3.hash, also_1_3.hash
185
-
186
- buf2 = Parser::Source::Buffer.new('(string)',
187
- source: "foobar\nbaz")
188
- from_other_buf = Parser::Source::Range.new(buf2, 1, 3)
189
- assert_equal false, @sr1_3.eql?(from_other_buf)
190
- assert @sr1_3.hash != from_other_buf.hash
191
- end
192
- end