parser 2.3.1.4 → 2.3.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.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +14 -1
 - data/README.md +24 -2
 - data/doc/AST_FORMAT.md +19 -0
 - data/lib/parser/ast/processor.rb +1 -0
 - data/lib/parser/builders/default.rb +34 -5
 - data/lib/parser/current.rb +1 -1
 - data/lib/parser/macruby.y +6 -8
 - data/lib/parser/messages.rb +1 -0
 - data/lib/parser/ruby18.y +0 -3
 - data/lib/parser/ruby19.y +6 -8
 - data/lib/parser/ruby20.y +8 -8
 - data/lib/parser/ruby21.y +8 -8
 - data/lib/parser/ruby22.y +8 -8
 - data/lib/parser/ruby23.y +8 -8
 - data/lib/parser/ruby24.y +63 -70
 - data/lib/parser/rubymotion.y +5 -4
 - data/lib/parser/version.rb +1 -1
 - data/test/test_parser.rb +421 -170
 - metadata +2 -2
 
    
        data/lib/parser/rubymotion.y
    CHANGED
    
    | 
         @@ -1323,9 +1323,6 @@ rule 
     | 
|
| 
       1323 
1323 
     | 
    
         
             
                                              concat(val[3])
         
     | 
| 
       1324 
1324 
     | 
    
         
             
                                }
         
     | 
| 
       1325 
1325 
     | 
    
         
             
                            | f_arg tCOMMA
         
     | 
| 
       1326 
     | 
    
         
            -
                              {
         
     | 
| 
       1327 
     | 
    
         
            -
                                result = [@builder.multi_lhs(nil, val[0], nil)]
         
     | 
| 
       1328 
     | 
    
         
            -
                              }
         
     | 
| 
       1329 
1326 
     | 
    
         
             
                            | f_arg tCOMMA                       f_rest_arg tCOMMA f_arg opt_f_block_arg
         
     | 
| 
       1330 
1327 
     | 
    
         
             
                                {
         
     | 
| 
       1331 
1328 
     | 
    
         
             
                                  result = val[0].
         
     | 
| 
         @@ -1335,7 +1332,11 @@ rule 
     | 
|
| 
       1335 
1332 
     | 
    
         
             
                                }
         
     | 
| 
       1336 
1333 
     | 
    
         
             
                            | f_arg                                                      opt_f_block_arg
         
     | 
| 
       1337 
1334 
     | 
    
         
             
                                {
         
     | 
| 
       1338 
     | 
    
         
            -
                                   
     | 
| 
      
 1335 
     | 
    
         
            +
                                  if val[1].empty? && val[0].size == 1
         
     | 
| 
      
 1336 
     | 
    
         
            +
                                    result = [@builder.procarg0(val[0][0])]
         
     | 
| 
      
 1337 
     | 
    
         
            +
                                  else
         
     | 
| 
      
 1338 
     | 
    
         
            +
                                    result = val[0].concat(val[1])
         
     | 
| 
      
 1339 
     | 
    
         
            +
                                  end
         
     | 
| 
       1339 
1340 
     | 
    
         
             
                                }
         
     | 
| 
       1340 
1341 
     | 
    
         
             
                            | f_block_optarg tCOMMA f_rest_arg              opt_f_block_arg
         
     | 
| 
       1341 
1342 
     | 
    
         
             
                                {
         
     | 
    
        data/lib/parser/version.rb
    CHANGED
    
    
    
        data/test/test_parser.rb
    CHANGED
    
    | 
         @@ -19,6 +19,13 @@ class TestParser < Minitest::Test 
     | 
|
| 
       19 
19 
     | 
    
         
             
                parser
         
     | 
| 
       20 
20 
     | 
    
         
             
              end
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
      
 22 
     | 
    
         
            +
              SINCE_1_9 = ALL_VERSIONS - %w(1.8)
         
     | 
| 
      
 23 
     | 
    
         
            +
              SINCE_2_0 = SINCE_1_9 - %w(1.9 mac ios)
         
     | 
| 
      
 24 
     | 
    
         
            +
              SINCE_2_1 = SINCE_2_0 - %w(2.0)
         
     | 
| 
      
 25 
     | 
    
         
            +
              SINCE_2_2 = SINCE_2_1 - %w(2.1)
         
     | 
| 
      
 26 
     | 
    
         
            +
              SINCE_2_3 = SINCE_2_2 - %w(2.2)
         
     | 
| 
      
 27 
     | 
    
         
            +
              SINCE_2_4 = SINCE_2_3 - %w(2.3)
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
       22 
29 
     | 
    
         
             
              # Guidelines for test naming:
         
     | 
| 
       23 
30 
     | 
    
         
             
              #  * Test structure follows structure of AST_FORMAT.md.
         
     | 
| 
       24 
31 
     | 
    
         
             
              #  * Test names follow node names.
         
     | 
| 
         @@ -123,13 +130,13 @@ class TestParser < Minitest::Test 
     | 
|
| 
       123 
130 
     | 
    
         
             
                  s(:rational, Rational(42)),
         
     | 
| 
       124 
131 
     | 
    
         
             
                  %q{42r},
         
     | 
| 
       125 
132 
     | 
    
         
             
                  %q{~~~ expression},
         
     | 
| 
       126 
     | 
    
         
            -
                   
     | 
| 
      
 133 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       127 
134 
     | 
    
         | 
| 
       128 
135 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       129 
136 
     | 
    
         
             
                  s(:rational, Rational(421, 10)),
         
     | 
| 
       130 
137 
     | 
    
         
             
                  %q{42.1r},
         
     | 
| 
       131 
138 
     | 
    
         
             
                  %q{~~~~~ expression},
         
     | 
| 
       132 
     | 
    
         
            -
                   
     | 
| 
      
 139 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       133 
140 
     | 
    
         
             
              end
         
     | 
| 
       134 
141 
     | 
    
         | 
| 
       135 
142 
     | 
    
         
             
              def test_complex
         
     | 
| 
         @@ -137,25 +144,25 @@ class TestParser < Minitest::Test 
     | 
|
| 
       137 
144 
     | 
    
         
             
                  s(:complex, Complex(0, 42)),
         
     | 
| 
       138 
145 
     | 
    
         
             
                  %q{42i},
         
     | 
| 
       139 
146 
     | 
    
         
             
                  %q{~~~ expression},
         
     | 
| 
       140 
     | 
    
         
            -
                   
     | 
| 
      
 147 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       141 
148 
     | 
    
         | 
| 
       142 
149 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       143 
150 
     | 
    
         
             
                  s(:complex, Complex(0, Rational(42))),
         
     | 
| 
       144 
151 
     | 
    
         
             
                  %q{42ri},
         
     | 
| 
       145 
152 
     | 
    
         
             
                  %q{~~~~ expression},
         
     | 
| 
       146 
     | 
    
         
            -
                   
     | 
| 
      
 153 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       147 
154 
     | 
    
         | 
| 
       148 
155 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       149 
156 
     | 
    
         
             
                  s(:complex, Complex(0, 42.1)),
         
     | 
| 
       150 
157 
     | 
    
         
             
                  %q{42.1i},
         
     | 
| 
       151 
158 
     | 
    
         
             
                  %q{~~~~~ expression},
         
     | 
| 
       152 
     | 
    
         
            -
                   
     | 
| 
      
 159 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       153 
160 
     | 
    
         | 
| 
       154 
161 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       155 
162 
     | 
    
         
             
                  s(:complex, Complex(0, Rational(421, 10))),
         
     | 
| 
       156 
163 
     | 
    
         
             
                  %q{42.1ri},
         
     | 
| 
       157 
164 
     | 
    
         
             
                  %q{~~~~~~ expression},
         
     | 
| 
       158 
     | 
    
         
            -
                   
     | 
| 
      
 165 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       159 
166 
     | 
    
         
             
              end
         
     | 
| 
       160 
167 
     | 
    
         | 
| 
       161 
168 
     | 
    
         
             
              # Strings
         
     | 
| 
         @@ -230,7 +237,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       230 
237 
     | 
    
         
             
                  %q{?a},
         
     | 
| 
       231 
238 
     | 
    
         
             
                  %q{^ begin
         
     | 
| 
       232 
239 
     | 
    
         
             
                    |~~ expression},
         
     | 
| 
       233 
     | 
    
         
            -
                   
     | 
| 
      
 240 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       234 
241 
     | 
    
         | 
| 
       235 
242 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       236 
243 
     | 
    
         
             
                  s(:int, 97),
         
     | 
| 
         @@ -279,21 +286,21 @@ class TestParser < Minitest::Test 
     | 
|
| 
       279 
286 
     | 
    
         
             
                    s(:dstr)),
         
     | 
| 
       280 
287 
     | 
    
         
             
                  %Q{p <<~E\nE},
         
     | 
| 
       281 
288 
     | 
    
         
             
                  %q{},
         
     | 
| 
       282 
     | 
    
         
            -
                   
     | 
| 
      
 289 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       283 
290 
     | 
    
         | 
| 
       284 
291 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       285 
292 
     | 
    
         
             
                  s(:send, nil, :p,
         
     | 
| 
       286 
293 
     | 
    
         
             
                    s(:dstr)),
         
     | 
| 
       287 
294 
     | 
    
         
             
                  %Q{p <<~E\n  E},
         
     | 
| 
       288 
295 
     | 
    
         
             
                  %q{},
         
     | 
| 
       289 
     | 
    
         
            -
                   
     | 
| 
      
 296 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       290 
297 
     | 
    
         | 
| 
       291 
298 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       292 
299 
     | 
    
         
             
                  s(:send, nil, :p,
         
     | 
| 
       293 
300 
     | 
    
         
             
                    s(:str, "x\n")),
         
     | 
| 
       294 
301 
     | 
    
         
             
                  %Q{p <<~E\n  x\nE},
         
     | 
| 
       295 
302 
     | 
    
         
             
                  %q{},
         
     | 
| 
       296 
     | 
    
         
            -
                   
     | 
| 
      
 303 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       297 
304 
     | 
    
         | 
| 
       298 
305 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       299 
306 
     | 
    
         
             
                  s(:send, nil, :p,
         
     | 
| 
         @@ -302,7 +309,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       302 
309 
     | 
    
         
             
                      s(:str, "  y\n"))),
         
     | 
| 
       303 
310 
     | 
    
         
             
                  %Q{p <<~E\n  x\n    y\nE},
         
     | 
| 
       304 
311 
     | 
    
         
             
                  %q{},
         
     | 
| 
       305 
     | 
    
         
            -
                   
     | 
| 
      
 312 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       306 
313 
     | 
    
         | 
| 
       307 
314 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       308 
315 
     | 
    
         
             
                  s(:send, nil, :p,
         
     | 
| 
         @@ -311,7 +318,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       311 
318 
     | 
    
         
             
                      s(:str, "y\n"))),
         
     | 
| 
       312 
319 
     | 
    
         
             
                  %Q{p <<~E\n\tx\n    y\nE},
         
     | 
| 
       313 
320 
     | 
    
         
             
                  %q{},
         
     | 
| 
       314 
     | 
    
         
            -
                   
     | 
| 
      
 321 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       315 
322 
     | 
    
         | 
| 
       316 
323 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       317 
324 
     | 
    
         
             
                  s(:send, nil, :p,
         
     | 
| 
         @@ -320,7 +327,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       320 
327 
     | 
    
         
             
                      s(:str, "y\n"))),
         
     | 
| 
       321 
328 
     | 
    
         
             
                  %Q{p <<~E\n\tx\n        y\nE},
         
     | 
| 
       322 
329 
     | 
    
         
             
                  %q{},
         
     | 
| 
       323 
     | 
    
         
            -
                   
     | 
| 
      
 330 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       324 
331 
     | 
    
         | 
| 
       325 
332 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       326 
333 
     | 
    
         
             
                  s(:send, nil, :p,
         
     | 
| 
         @@ -329,7 +336,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       329 
336 
     | 
    
         
             
                      s(:str, "y\n"))),
         
     | 
| 
       330 
337 
     | 
    
         
             
                  %Q{p <<~E\n    \tx\n        y\nE},
         
     | 
| 
       331 
338 
     | 
    
         
             
                  %q{},
         
     | 
| 
       332 
     | 
    
         
            -
                   
     | 
| 
      
 339 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       333 
340 
     | 
    
         | 
| 
       334 
341 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       335 
342 
     | 
    
         
             
                  s(:send, nil, :p,
         
     | 
| 
         @@ -338,7 +345,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       338 
345 
     | 
    
         
             
                      s(:str, "y\n"))),
         
     | 
| 
       339 
346 
     | 
    
         
             
                  %Q{p <<~E\n        \tx\n\ty\nE},
         
     | 
| 
       340 
347 
     | 
    
         
             
                  %q{},
         
     | 
| 
       341 
     | 
    
         
            -
                   
     | 
| 
      
 348 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       342 
349 
     | 
    
         | 
| 
       343 
350 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       344 
351 
     | 
    
         
             
                  s(:send, nil, :p,
         
     | 
| 
         @@ -348,7 +355,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       348 
355 
     | 
    
         
             
                      s(:str, "y\n"))),
         
     | 
| 
       349 
356 
     | 
    
         
             
                  %Q{p <<~E\n  x\n\ny\nE},
         
     | 
| 
       350 
357 
     | 
    
         
             
                  %q{},
         
     | 
| 
       351 
     | 
    
         
            -
                   
     | 
| 
      
 358 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       352 
359 
     | 
    
         | 
| 
       353 
360 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       354 
361 
     | 
    
         
             
                  s(:send, nil, :p,
         
     | 
| 
         @@ -358,7 +365,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       358 
365 
     | 
    
         
             
                      s(:str, "y\n"))),
         
     | 
| 
       359 
366 
     | 
    
         
             
                  %Q{p <<~E\n  x\n    \n  y\nE},
         
     | 
| 
       360 
367 
     | 
    
         
             
                  %q{},
         
     | 
| 
       361 
     | 
    
         
            -
                   
     | 
| 
      
 368 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       362 
369 
     | 
    
         | 
| 
       363 
370 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       364 
371 
     | 
    
         
             
                  s(:send, nil, :p,
         
     | 
| 
         @@ -367,7 +374,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       367 
374 
     | 
    
         
             
                      s(:str, "  y\n"))),
         
     | 
| 
       368 
375 
     | 
    
         
             
                  %Q{p <<~E\n    x\n  \\  y\nE},
         
     | 
| 
       369 
376 
     | 
    
         
             
                  %q{},
         
     | 
| 
       370 
     | 
    
         
            -
                   
     | 
| 
      
 377 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       371 
378 
     | 
    
         | 
| 
       372 
379 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       373 
380 
     | 
    
         
             
                  s(:send, nil, :p,
         
     | 
| 
         @@ -376,7 +383,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       376 
383 
     | 
    
         
             
                      s(:str, "\ty\n"))),
         
     | 
| 
       377 
384 
     | 
    
         
             
                  %Q{p <<~E\n    x\n  \\\ty\nE},
         
     | 
| 
       378 
385 
     | 
    
         
             
                  %q{},
         
     | 
| 
       379 
     | 
    
         
            -
                   
     | 
| 
      
 386 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       380 
387 
     | 
    
         | 
| 
       381 
388 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       382 
389 
     | 
    
         
             
                  s(:send, nil, :p,
         
     | 
| 
         @@ -388,7 +395,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       388 
395 
     | 
    
         
             
                      s(:str, "\n"))),
         
     | 
| 
       389 
396 
     | 
    
         
             
                  %Q{p <<~"E"\n    x\n  \#{foo}\nE},
         
     | 
| 
       390 
397 
     | 
    
         
             
                  %q{},
         
     | 
| 
       391 
     | 
    
         
            -
                   
     | 
| 
      
 398 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       392 
399 
     | 
    
         | 
| 
       393 
400 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       394 
401 
     | 
    
         
             
                  s(:send, nil, :p,
         
     | 
| 
         @@ -400,7 +407,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       400 
407 
     | 
    
         
             
                      s(:str, "\n"))),
         
     | 
| 
       401 
408 
     | 
    
         
             
                  %Q{p <<~`E`\n    x\n  \#{foo}\nE},
         
     | 
| 
       402 
409 
     | 
    
         
             
                  %q{},
         
     | 
| 
       403 
     | 
    
         
            -
                   
     | 
| 
      
 410 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       404 
411 
     | 
    
         | 
| 
       405 
412 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       406 
413 
     | 
    
         
             
                  s(:send, nil, :p,
         
     | 
| 
         @@ -412,7 +419,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       412 
419 
     | 
    
         
             
                      s(:str, "\n"))),
         
     | 
| 
       413 
420 
     | 
    
         
             
                  %Q{p <<~"E"\n    x\n  \#{"  y"}\nE},
         
     | 
| 
       414 
421 
     | 
    
         
             
                  %q{},
         
     | 
| 
       415 
     | 
    
         
            -
                   
     | 
| 
      
 422 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       416 
423 
     | 
    
         
             
              end
         
     | 
| 
       417 
424 
     | 
    
         | 
| 
       418 
425 
     | 
    
         
             
              # Symbols
         
     | 
| 
         @@ -526,13 +533,13 @@ class TestParser < Minitest::Test 
     | 
|
| 
       526 
533 
     | 
    
         
             
                  [:error, :invalid_regexp, {:message => message}],
         
     | 
| 
       527 
534 
     | 
    
         
             
                  %q[/?/],
         
     | 
| 
       528 
535 
     | 
    
         
             
                  %q(~~~ location),
         
     | 
| 
       529 
     | 
    
         
            -
                   
     | 
| 
      
 536 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       530 
537 
     | 
    
         | 
| 
       531 
538 
     | 
    
         
             
                assert_diagnoses(
         
     | 
| 
       532 
539 
     | 
    
         
             
                  [:error, :invalid_regexp, {:message => message}],
         
     | 
| 
       533 
540 
     | 
    
         
             
                  %q[/#{""}?/],
         
     | 
| 
       534 
541 
     | 
    
         
             
                  %q(~~~~~~~~ location),
         
     | 
| 
       535 
     | 
    
         
            -
                   
     | 
| 
      
 542 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       536 
543 
     | 
    
         
             
              end
         
     | 
| 
       537 
544 
     | 
    
         | 
| 
       538 
545 
     | 
    
         
             
              # Arrays
         
     | 
| 
         @@ -558,7 +565,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       558 
565 
     | 
    
         
             
                    |    ^ operator (splat)
         
     | 
| 
       559 
566 
     | 
    
         
             
                    |    ~~~~ expression (splat)
         
     | 
| 
       560 
567 
     | 
    
         
             
                    |~~~~~~~~~~~~ expression},
         
     | 
| 
       561 
     | 
    
         
            -
                   
     | 
| 
      
 568 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       562 
569 
     | 
    
         | 
| 
       563 
570 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       564 
571 
     | 
    
         
             
                  s(:array,
         
     | 
| 
         @@ -592,7 +599,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       592 
599 
     | 
    
         
             
                    s(:hash, s(:pair, s(:int, 2), s(:int, 3)))),
         
     | 
| 
       593 
600 
     | 
    
         
             
                  %q{[ 1, 2 => 3 ]},
         
     | 
| 
       594 
601 
     | 
    
         
             
                  %q{},
         
     | 
| 
       595 
     | 
    
         
            -
                   
     | 
| 
      
 602 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       596 
603 
     | 
    
         
             
              end
         
     | 
| 
       597 
604 
     | 
    
         | 
| 
       598 
605 
     | 
    
         
             
              def test_array_words
         
     | 
| 
         @@ -651,7 +658,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       651 
658 
     | 
    
         
             
                    |          ^ end
         
     | 
| 
       652 
659 
     | 
    
         
             
                    |   ~~~ expression (sym)
         
     | 
| 
       653 
660 
     | 
    
         
             
                    |~~~~~~~~~~~ expression},
         
     | 
| 
       654 
     | 
    
         
            -
                   
     | 
| 
      
 661 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       655 
662 
     | 
    
         
             
              end
         
     | 
| 
       656 
663 
     | 
    
         | 
| 
       657 
664 
     | 
    
         
             
              def test_array_symbols_interp
         
     | 
| 
         @@ -668,7 +675,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       668 
675 
     | 
    
         
             
                    |       ~~~~~~ expression (dsym.begin)
         
     | 
| 
       669 
676 
     | 
    
         
             
                    |         ~~~ expression (dsym.begin.lvar)
         
     | 
| 
       670 
677 
     | 
    
         
             
                    |~~~~~~~~~~~~~~ expression},
         
     | 
| 
       671 
     | 
    
         
            -
                   
     | 
| 
      
 678 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       672 
679 
     | 
    
         | 
| 
       673 
680 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       674 
681 
     | 
    
         
             
                  s(:array,
         
     | 
| 
         @@ -677,7 +684,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       677 
684 
     | 
    
         
             
                      s(:begin, s(:lvar, :bar)))),
         
     | 
| 
       678 
685 
     | 
    
         
             
                  %q{%I[foo#{bar}]},
         
     | 
| 
       679 
686 
     | 
    
         
             
                  %q{},
         
     | 
| 
       680 
     | 
    
         
            -
                   
     | 
| 
      
 687 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       681 
688 
     | 
    
         
             
              end
         
     | 
| 
       682 
689 
     | 
    
         | 
| 
       683 
690 
     | 
    
         
             
              def test_array_symbols_empty
         
     | 
| 
         @@ -687,13 +694,13 @@ class TestParser < Minitest::Test 
     | 
|
| 
       687 
694 
     | 
    
         
             
                  %q{^^^ begin
         
     | 
| 
       688 
695 
     | 
    
         
             
                    |   ^ end
         
     | 
| 
       689 
696 
     | 
    
         
             
                    |~~~~ expression},
         
     | 
| 
       690 
     | 
    
         
            -
                   
     | 
| 
      
 697 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       691 
698 
     | 
    
         | 
| 
       692 
699 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       693 
700 
     | 
    
         
             
                  s(:array),
         
     | 
| 
       694 
701 
     | 
    
         
             
                  %q{%I()},
         
     | 
| 
       695 
702 
     | 
    
         
             
                  %q{},
         
     | 
| 
       696 
     | 
    
         
            -
                   
     | 
| 
      
 703 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       697 
704 
     | 
    
         
             
              end
         
     | 
| 
       698 
705 
     | 
    
         | 
| 
       699 
706 
     | 
    
         
             
              # Hashes
         
     | 
| 
         @@ -734,7 +741,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       734 
741 
     | 
    
         
             
                    |  ~~~ expression (pair.sym)
         
     | 
| 
       735 
742 
     | 
    
         
             
                    |  ~~~~~~ expression (pair)
         
     | 
| 
       736 
743 
     | 
    
         
             
                    |~~~~~~~~~~ expression},
         
     | 
| 
       737 
     | 
    
         
            -
                   
     | 
| 
      
 744 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       738 
745 
     | 
    
         
             
              end
         
     | 
| 
       739 
746 
     | 
    
         | 
| 
       740 
747 
     | 
    
         
             
              def test_hash_label_end
         
     | 
| 
         @@ -749,7 +756,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       749 
756 
     | 
    
         
             
                    |  ~~~~~ expression (pair.sym)
         
     | 
| 
       750 
757 
     | 
    
         
             
                    |  ~~~~~~~~ expression (pair)
         
     | 
| 
       751 
758 
     | 
    
         
             
                    |~~~~~~~~~~~~ expression},
         
     | 
| 
       752 
     | 
    
         
            -
                   
     | 
| 
      
 759 
     | 
    
         
            +
                  SINCE_2_2)
         
     | 
| 
       753 
760 
     | 
    
         | 
| 
       754 
761 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       755 
762 
     | 
    
         
             
                  s(:hash,
         
     | 
| 
         @@ -757,7 +764,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       757 
764 
     | 
    
         
             
                    s(:pair, s(:sym, :bar), s(:hash))),
         
     | 
| 
       758 
765 
     | 
    
         
             
                  %q[{ 'foo': 2, 'bar': {}}],
         
     | 
| 
       759 
766 
     | 
    
         
             
                  %q{},
         
     | 
| 
       760 
     | 
    
         
            -
                   
     | 
| 
      
 767 
     | 
    
         
            +
                  SINCE_2_2)
         
     | 
| 
       761 
768 
     | 
    
         | 
| 
       762 
769 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       763 
770 
     | 
    
         
             
                  s(:send, nil, :f,
         
     | 
| 
         @@ -766,7 +773,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       766 
773 
     | 
    
         
             
                      s(:int, 1))),
         
     | 
| 
       767 
774 
     | 
    
         
             
                  %q{f(a ? "a":1)},
         
     | 
| 
       768 
775 
     | 
    
         
             
                  %q{},
         
     | 
| 
       769 
     | 
    
         
            -
                   
     | 
| 
      
 776 
     | 
    
         
            +
                  SINCE_2_2)
         
     | 
| 
       770 
777 
     | 
    
         
             
              end
         
     | 
| 
       771 
778 
     | 
    
         | 
| 
       772 
779 
     | 
    
         
             
              def test_hash_kwsplat
         
     | 
| 
         @@ -777,7 +784,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       777 
784 
     | 
    
         
             
                  %q[{ foo: 2, **bar }],
         
     | 
| 
       778 
785 
     | 
    
         
             
                  %q{          ^^ operator (kwsplat)
         
     | 
| 
       779 
786 
     | 
    
         
             
                    |          ~~~~~ expression (kwsplat)},
         
     | 
| 
       780 
     | 
    
         
            -
                   
     | 
| 
      
 787 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       781 
788 
     | 
    
         
             
              end
         
     | 
| 
       782 
789 
     | 
    
         | 
| 
       783 
790 
     | 
    
         
             
              def test_hash_no_hashrocket
         
     | 
| 
         @@ -913,7 +920,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       913 
920 
     | 
    
         
             
                  s(:const, s(:const, nil, :Encoding), :UTF_8),
         
     | 
| 
       914 
921 
     | 
    
         
             
                  %q{__ENCODING__},
         
     | 
| 
       915 
922 
     | 
    
         
             
                  %q{~~~~~~~~~~~~ expression},
         
     | 
| 
       916 
     | 
    
         
            -
                   
     | 
| 
      
 923 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       917 
924 
     | 
    
         
             
              end
         
     | 
| 
       918 
925 
     | 
    
         | 
| 
       919 
926 
     | 
    
         
             
              # defined?
         
     | 
| 
         @@ -1140,7 +1147,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       1140 
1147 
     | 
    
         
             
                    s(:array, s(:splat, s(:lvar, :foo)), s(:lvar, :bar))),
         
     | 
| 
       1141 
1148 
     | 
    
         
             
                  %q{a, b = *foo, bar},
         
     | 
| 
       1142 
1149 
     | 
    
         
             
                  %q{},
         
     | 
| 
       1143 
     | 
    
         
            -
                   
     | 
| 
      
 1150 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       1144 
1151 
     | 
    
         | 
| 
       1145 
1152 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       1146 
1153 
     | 
    
         
             
                  s(:masgn,
         
     | 
| 
         @@ -1157,7 +1164,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       1157 
1164 
     | 
    
         
             
                    s(:lvar, :bar)),
         
     | 
| 
       1158 
1165 
     | 
    
         
             
                  %q{a, *b, c = bar},
         
     | 
| 
       1159 
1166 
     | 
    
         
             
                  %q{},
         
     | 
| 
       1160 
     | 
    
         
            -
                   
     | 
| 
      
 1167 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       1161 
1168 
     | 
    
         | 
| 
       1162 
1169 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       1163 
1170 
     | 
    
         
             
                  s(:masgn,
         
     | 
| 
         @@ -1174,7 +1181,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       1174 
1181 
     | 
    
         
             
                    s(:lvar, :bar)),
         
     | 
| 
       1175 
1182 
     | 
    
         
             
                  %q{a, *, c = bar},
         
     | 
| 
       1176 
1183 
     | 
    
         
             
                  %q{},
         
     | 
| 
       1177 
     | 
    
         
            -
                   
     | 
| 
      
 1184 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       1178 
1185 
     | 
    
         | 
| 
       1179 
1186 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       1180 
1187 
     | 
    
         
             
                  s(:masgn,
         
     | 
| 
         @@ -1190,7 +1197,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       1190 
1197 
     | 
    
         
             
                    s(:lvar, :bar)),
         
     | 
| 
       1191 
1198 
     | 
    
         
             
                  %q{*b, c = bar},
         
     | 
| 
       1192 
1199 
     | 
    
         
             
                  %q{},
         
     | 
| 
       1193 
     | 
    
         
            -
                   
     | 
| 
      
 1200 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       1194 
1201 
     | 
    
         | 
| 
       1195 
1202 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       1196 
1203 
     | 
    
         
             
                  s(:masgn,
         
     | 
| 
         @@ -1207,7 +1214,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       1207 
1214 
     | 
    
         
             
                    s(:lvar, :bar)),
         
     | 
| 
       1208 
1215 
     | 
    
         
             
                  %q{*, c, d = bar},
         
     | 
| 
       1209 
1216 
     | 
    
         
             
                  %q{},
         
     | 
| 
       1210 
     | 
    
         
            -
                   
     | 
| 
      
 1217 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       1211 
1218 
     | 
    
         
             
              end
         
     | 
| 
       1212 
1219 
     | 
    
         | 
| 
       1213 
1220 
     | 
    
         
             
              def test_masgn_nested
         
     | 
| 
         @@ -1393,7 +1400,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       1393 
1400 
     | 
    
         
             
                    s(:int, 1)),
         
     | 
| 
       1394 
1401 
     | 
    
         
             
                  %q{::A += 1},
         
     | 
| 
       1395 
1402 
     | 
    
         
             
                  %q{},
         
     | 
| 
       1396 
     | 
    
         
            -
                   
     | 
| 
      
 1403 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       1397 
1404 
     | 
    
         | 
| 
       1398 
1405 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       1399 
1406 
     | 
    
         
             
                  s(:op_asgn,
         
     | 
| 
         @@ -1401,7 +1408,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       1401 
1408 
     | 
    
         
             
                    s(:int, 1)),
         
     | 
| 
       1402 
1409 
     | 
    
         
             
                  %q{B::A += 1},
         
     | 
| 
       1403 
1410 
     | 
    
         
             
                  %q{},
         
     | 
| 
       1404 
     | 
    
         
            -
                   
     | 
| 
      
 1411 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       1405 
1412 
     | 
    
         | 
| 
       1406 
1413 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       1407 
1414 
     | 
    
         
             
                  s(:def, :x, s(:args),
         
     | 
| 
         @@ -1410,7 +1417,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       1410 
1417 
     | 
    
         
             
                      s(:int, 1))),
         
     | 
| 
       1411 
1418 
     | 
    
         
             
                  %q{def x; self::A ||= 1; end},
         
     | 
| 
       1412 
1419 
     | 
    
         
             
                  %q{},
         
     | 
| 
       1413 
     | 
    
         
            -
                   
     | 
| 
      
 1420 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       1414 
1421 
     | 
    
         | 
| 
       1415 
1422 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       1416 
1423 
     | 
    
         
             
                  s(:def, :x, s(:args),
         
     | 
| 
         @@ -1419,7 +1426,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       1419 
1426 
     | 
    
         
             
                      s(:int, 1))),
         
     | 
| 
       1420 
1427 
     | 
    
         
             
                  %q{def x; ::A ||= 1; end},
         
     | 
| 
       1421 
1428 
     | 
    
         
             
                  %q{},
         
     | 
| 
       1422 
     | 
    
         
            -
                   
     | 
| 
      
 1429 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       1423 
1430 
     | 
    
         
             
              end
         
     | 
| 
       1424 
1431 
     | 
    
         | 
| 
       1425 
1432 
     | 
    
         
             
              def test_const_op_asgn_invalid
         
     | 
| 
         @@ -1493,13 +1500,19 @@ class TestParser < Minitest::Test 
     | 
|
| 
       1493 
1500 
     | 
    
         
             
                    s(:send, nil, :m, s(:lvar, :foo))),
         
     | 
| 
       1494 
1501 
     | 
    
         
             
                  %q{foo.A += m foo})
         
     | 
| 
       1495 
1502 
     | 
    
         | 
| 
      
 1503 
     | 
    
         
            +
                assert_diagnoses(
         
     | 
| 
      
 1504 
     | 
    
         
            +
                  [:error, :const_reassignment],
         
     | 
| 
      
 1505 
     | 
    
         
            +
                  %q{foo::A += m foo},
         
     | 
| 
      
 1506 
     | 
    
         
            +
                  %q{       ~~ location},
         
     | 
| 
      
 1507 
     | 
    
         
            +
                  %w(1.9 mac))
         
     | 
| 
      
 1508 
     | 
    
         
            +
             
     | 
| 
       1496 
1509 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       1497 
1510 
     | 
    
         
             
                  s(:op_asgn,
         
     | 
| 
       1498 
     | 
    
         
            -
                    s(: 
     | 
| 
      
 1511 
     | 
    
         
            +
                    s(:casgn, s(:lvar, :foo), :A), :+,
         
     | 
| 
       1499 
1512 
     | 
    
         
             
                    s(:send, nil, :m, s(:lvar, :foo))),
         
     | 
| 
       1500 
1513 
     | 
    
         
             
                  %q{foo::A += m foo},
         
     | 
| 
       1501 
1514 
     | 
    
         
             
                  %q{},
         
     | 
| 
       1502 
     | 
    
         
            -
                   
     | 
| 
      
 1515 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       1503 
1516 
     | 
    
         
             
              end
         
     | 
| 
       1504 
1517 
     | 
    
         | 
| 
       1505 
1518 
     | 
    
         
             
              def test_op_asgn_index
         
     | 
| 
         @@ -1680,7 +1693,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       1680 
1693 
     | 
    
         
             
                    nil),
         
     | 
| 
       1681 
1694 
     | 
    
         
             
                  %q{class Foo end},
         
     | 
| 
       1682 
1695 
     | 
    
         
             
                  %q{},
         
     | 
| 
       1683 
     | 
    
         
            -
                   
     | 
| 
      
 1696 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       1684 
1697 
     | 
    
         
             
              end
         
     | 
| 
       1685 
1698 
     | 
    
         | 
| 
       1686 
1699 
     | 
    
         
             
              def test_class_super
         
     | 
| 
         @@ -1704,7 +1717,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       1704 
1717 
     | 
    
         
             
                    nil),
         
     | 
| 
       1705 
1718 
     | 
    
         
             
                  %q{class Foo < a:b; end},
         
     | 
| 
       1706 
1719 
     | 
    
         
             
                  %q{},
         
     | 
| 
       1707 
     | 
    
         
            -
                   
     | 
| 
      
 1720 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       1708 
1721 
     | 
    
         
             
              end
         
     | 
| 
       1709 
1722 
     | 
    
         | 
| 
       1710 
1723 
     | 
    
         
             
              def test_class_invalid
         
     | 
| 
         @@ -1940,7 +1953,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       1940 
1953 
     | 
    
         
             
                  %q{def f(foo:); end},
         
     | 
| 
       1941 
1954 
     | 
    
         
             
                  %q{      ~~~ name (args.kwarg)
         
     | 
| 
       1942 
1955 
     | 
    
         
             
                    |      ~~~~ expression (args.kwarg)},
         
     | 
| 
       1943 
     | 
    
         
            -
                   
     | 
| 
      
 1956 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       1944 
1957 
     | 
    
         
             
              end
         
     | 
| 
       1945 
1958 
     | 
    
         | 
| 
       1946 
1959 
     | 
    
         
             
              def test_kwoptarg
         
     | 
| 
         @@ -1951,7 +1964,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       1951 
1964 
     | 
    
         
             
                  %q{def f(foo: 1); end},
         
     | 
| 
       1952 
1965 
     | 
    
         
             
                  %q{      ~~~ name (args.kwoptarg)
         
     | 
| 
       1953 
1966 
     | 
    
         
             
                    |      ~~~~~~ expression (args.kwoptarg)},
         
     | 
| 
       1954 
     | 
    
         
            -
                   
     | 
| 
      
 1967 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       1955 
1968 
     | 
    
         
             
              end
         
     | 
| 
       1956 
1969 
     | 
    
         | 
| 
       1957 
1970 
     | 
    
         
             
              def test_kwrestarg_named
         
     | 
| 
         @@ -1962,7 +1975,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       1962 
1975 
     | 
    
         
             
                  %q{def f(**foo); end},
         
     | 
| 
       1963 
1976 
     | 
    
         
             
                  %q{        ~~~ name (args.kwrestarg)
         
     | 
| 
       1964 
1977 
     | 
    
         
             
                    |      ~~~~~ expression (args.kwrestarg)},
         
     | 
| 
       1965 
     | 
    
         
            -
                   
     | 
| 
      
 1978 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       1966 
1979 
     | 
    
         
             
              end
         
     | 
| 
       1967 
1980 
     | 
    
         | 
| 
       1968 
1981 
     | 
    
         
             
              def test_kwrestarg_unnamed
         
     | 
| 
         @@ -1972,7 +1985,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       1972 
1985 
     | 
    
         
             
                    nil),
         
     | 
| 
       1973 
1986 
     | 
    
         
             
                  %q{def f(**); end},
         
     | 
| 
       1974 
1987 
     | 
    
         
             
                  %q{      ~~ expression (args.kwrestarg)},
         
     | 
| 
       1975 
     | 
    
         
            -
                   
     | 
| 
      
 1988 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       1976 
1989 
     | 
    
         
             
              end
         
     | 
| 
       1977 
1990 
     | 
    
         | 
| 
       1978 
1991 
     | 
    
         
             
              def test_blockarg
         
     | 
| 
         @@ -2017,7 +2030,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2017 
2030 
     | 
    
         
             
                    s(:lvar, :var)),
         
     | 
| 
       2018 
2031 
     | 
    
         
             
                  %q{def f(var = defined?(var)) var end},
         
     | 
| 
       2019 
2032 
     | 
    
         
             
                  %q{},
         
     | 
| 
       2020 
     | 
    
         
            -
                   
     | 
| 
      
 2033 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       2021 
2034 
     | 
    
         | 
| 
       2022 
2035 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       2023 
2036 
     | 
    
         
             
                  s(:def, :f,
         
     | 
| 
         @@ -2025,7 +2038,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2025 
2038 
     | 
    
         
             
                    s(:lvar, :var)),
         
     | 
| 
       2026 
2039 
     | 
    
         
             
                  %q{def f(var: defined?(var)) var end},
         
     | 
| 
       2027 
2040 
     | 
    
         
             
                  %q{},
         
     | 
| 
       2028 
     | 
    
         
            -
                   
     | 
| 
      
 2041 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       2029 
2042 
     | 
    
         | 
| 
       2030 
2043 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       2031 
2044 
     | 
    
         
             
                  s(:block,
         
     | 
| 
         @@ -2034,7 +2047,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2034 
2047 
     | 
    
         
             
                    s(:lvar, :a)),
         
     | 
| 
       2035 
2048 
     | 
    
         
             
                  %q{lambda{|;a|a}},
         
     | 
| 
       2036 
2049 
     | 
    
         
             
                  %q{},
         
     | 
| 
       2037 
     | 
    
         
            -
                   
     | 
| 
      
 2050 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2038 
2051 
     | 
    
         
             
              end
         
     | 
| 
       2039 
2052 
     | 
    
         | 
| 
       2040 
2053 
     | 
    
         
             
              def assert_parses_args(ast, code, versions=ALL_VERSIONS)
         
     | 
| 
         @@ -2064,7 +2077,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2064 
2077 
     | 
    
         
             
                    s(:arg, :p),
         
     | 
| 
       2065 
2078 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2066 
2079 
     | 
    
         
             
                  %q{a, o=1, *r, p, &b},
         
     | 
| 
       2067 
     | 
    
         
            -
                   
     | 
| 
      
 2080 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2068 
2081 
     | 
    
         | 
| 
       2069 
2082 
     | 
    
         
             
                # f_arg tCOMMA f_optarg                                opt_f_block_arg
         
     | 
| 
       2070 
2083 
     | 
    
         
             
                assert_parses_args(
         
     | 
| 
         @@ -2082,7 +2095,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2082 
2095 
     | 
    
         
             
                    s(:arg, :p),
         
     | 
| 
       2083 
2096 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2084 
2097 
     | 
    
         
             
                  %q{a, o=1, p, &b},
         
     | 
| 
       2085 
     | 
    
         
            -
                   
     | 
| 
      
 2098 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2086 
2099 
     | 
    
         | 
| 
       2087 
2100 
     | 
    
         
             
                # f_arg tCOMMA                 f_rest_arg              opt_f_block_arg
         
     | 
| 
       2088 
2101 
     | 
    
         
             
                assert_parses_args(
         
     | 
| 
         @@ -2100,7 +2113,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2100 
2113 
     | 
    
         
             
                    s(:arg, :p),
         
     | 
| 
       2101 
2114 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2102 
2115 
     | 
    
         
             
                  %q{a, *r, p, &b},
         
     | 
| 
       2103 
     | 
    
         
            -
                   
     | 
| 
      
 2116 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2104 
2117 
     | 
    
         | 
| 
       2105 
2118 
     | 
    
         
             
                # f_arg                                                opt_f_block_arg
         
     | 
| 
       2106 
2119 
     | 
    
         
             
                assert_parses_args(
         
     | 
| 
         @@ -2125,7 +2138,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2125 
2138 
     | 
    
         
             
                    s(:arg, :p),
         
     | 
| 
       2126 
2139 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2127 
2140 
     | 
    
         
             
                  %q{o=1, *r, p, &b},
         
     | 
| 
       2128 
     | 
    
         
            -
                   
     | 
| 
      
 2141 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2129 
2142 
     | 
    
         | 
| 
       2130 
2143 
     | 
    
         
             
                #              f_optarg                                opt_f_block_arg
         
     | 
| 
       2131 
2144 
     | 
    
         
             
                assert_parses_args(
         
     | 
| 
         @@ -2141,7 +2154,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2141 
2154 
     | 
    
         
             
                    s(:arg, :p),
         
     | 
| 
       2142 
2155 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2143 
2156 
     | 
    
         
             
                  %q{o=1, p, &b},
         
     | 
| 
       2144 
     | 
    
         
            -
                   
     | 
| 
      
 2157 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2145 
2158 
     | 
    
         | 
| 
       2146 
2159 
     | 
    
         
             
                #                              f_rest_arg              opt_f_block_arg
         
     | 
| 
       2147 
2160 
     | 
    
         
             
                assert_parses_args(
         
     | 
| 
         @@ -2157,7 +2170,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2157 
2170 
     | 
    
         
             
                    s(:arg, :p),
         
     | 
| 
       2158 
2171 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2159 
2172 
     | 
    
         
             
                  %q{*r, p, &b},
         
     | 
| 
       2160 
     | 
    
         
            -
                   
     | 
| 
      
 2173 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2161 
2174 
     | 
    
         | 
| 
       2162 
2175 
     | 
    
         
             
                #                                                          f_block_arg
         
     | 
| 
       2163 
2176 
     | 
    
         
             
                assert_parses_args(
         
     | 
| 
         @@ -2180,7 +2193,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2180 
2193 
     | 
    
         
             
                    s(:kwrestarg, :baz),
         
     | 
| 
       2181 
2194 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2182 
2195 
     | 
    
         
             
                  %q{(foo: 1, bar: 2, **baz, &b)},
         
     | 
| 
       2183 
     | 
    
         
            -
                   
     | 
| 
      
 2196 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       2184 
2197 
     | 
    
         | 
| 
       2185 
2198 
     | 
    
         
             
                # f_kwarg opt_f_block_arg
         
     | 
| 
       2186 
2199 
     | 
    
         
             
                assert_parses_args(
         
     | 
| 
         @@ -2188,7 +2201,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2188 
2201 
     | 
    
         
             
                    s(:kwoptarg, :foo, s(:int, 1)),
         
     | 
| 
       2189 
2202 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2190 
2203 
     | 
    
         
             
                  %q{(foo: 1, &b)},
         
     | 
| 
       2191 
     | 
    
         
            -
                   
     | 
| 
      
 2204 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       2192 
2205 
     | 
    
         | 
| 
       2193 
2206 
     | 
    
         
             
                # f_kwrest opt_f_block_arg
         
     | 
| 
       2194 
2207 
     | 
    
         
             
                assert_parses_args(
         
     | 
| 
         @@ -2196,14 +2209,14 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2196 
2209 
     | 
    
         
             
                    s(:kwrestarg, :baz),
         
     | 
| 
       2197 
2210 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2198 
2211 
     | 
    
         
             
                  %q{**baz, &b},
         
     | 
| 
       2199 
     | 
    
         
            -
                   
     | 
| 
      
 2212 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       2200 
2213 
     | 
    
         | 
| 
       2201 
2214 
     | 
    
         
             
                assert_parses_args(
         
     | 
| 
       2202 
2215 
     | 
    
         
             
                  s(:args,
         
     | 
| 
       2203 
2216 
     | 
    
         
             
                    s(:restarg),
         
     | 
| 
       2204 
2217 
     | 
    
         
             
                    s(:kwrestarg)),
         
     | 
| 
       2205 
2218 
     | 
    
         
             
                  %q{*, **},
         
     | 
| 
       2206 
     | 
    
         
            -
                   
     | 
| 
      
 2219 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       2207 
2220 
     | 
    
         
             
              end
         
     | 
| 
       2208 
2221 
     | 
    
         | 
| 
       2209 
2222 
     | 
    
         
             
              def test_kwarg_no_paren
         
     | 
| 
         @@ -2211,16 +2224,16 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2211 
2224 
     | 
    
         
             
                  s(:args,
         
     | 
| 
       2212 
2225 
     | 
    
         
             
                    s(:kwarg, :foo)),
         
     | 
| 
       2213 
2226 
     | 
    
         
             
                  %Q{foo:\n},
         
     | 
| 
       2214 
     | 
    
         
            -
                   
     | 
| 
      
 2227 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       2215 
2228 
     | 
    
         | 
| 
       2216 
2229 
     | 
    
         
             
                assert_parses_args(
         
     | 
| 
       2217 
2230 
     | 
    
         
             
                  s(:args,
         
     | 
| 
       2218 
2231 
     | 
    
         
             
                    s(:kwoptarg, :foo, s(:int, -1))),
         
     | 
| 
       2219 
2232 
     | 
    
         
             
                  %Q{foo: -1\n},
         
     | 
| 
       2220 
     | 
    
         
            -
                   
     | 
| 
      
 2233 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       2221 
2234 
     | 
    
         
             
              end
         
     | 
| 
       2222 
2235 
     | 
    
         | 
| 
       2223 
     | 
    
         
            -
              def assert_parses_margs(ast, code, versions= 
     | 
| 
      
 2236 
     | 
    
         
            +
              def assert_parses_margs(ast, code, versions=SINCE_1_9)
         
     | 
| 
       2224 
2237 
     | 
    
         
             
                assert_parses_args(
         
     | 
| 
       2225 
2238 
     | 
    
         
             
                  s(:args, ast),
         
     | 
| 
       2226 
2239 
     | 
    
         
             
                  %Q{(#{code})},
         
     | 
| 
         @@ -2319,12 +2332,12 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2319 
2332 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
       2320 
2333 
     | 
    
         
             
                  s(:args, s(:shadowarg, :a)),
         
     | 
| 
       2321 
2334 
     | 
    
         
             
                  %q{|;a|},
         
     | 
| 
       2322 
     | 
    
         
            -
                   
     | 
| 
      
 2335 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2323 
2336 
     | 
    
         | 
| 
       2324 
2337 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
       2325 
2338 
     | 
    
         
             
                  s(:args, s(:shadowarg, :a)),
         
     | 
| 
       2326 
2339 
     | 
    
         
             
                  %Q{|;\na\n|},
         
     | 
| 
       2327 
     | 
    
         
            -
                   
     | 
| 
      
 2340 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       2328 
2341 
     | 
    
         | 
| 
       2329 
2342 
     | 
    
         
             
                # tOROP
         
     | 
| 
       2330 
2343 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
         @@ -2336,9 +2349,15 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2336 
2349 
     | 
    
         
             
                # block_par tCOMMA tAMPER lhs
         
     | 
| 
       2337 
2350 
     | 
    
         
             
                # f_arg                                                      opt_f_block_arg
         
     | 
| 
       2338 
2351 
     | 
    
         
             
                # f_arg tCOMMA
         
     | 
| 
      
 2352 
     | 
    
         
            +
                assert_parses_blockargs(
         
     | 
| 
      
 2353 
     | 
    
         
            +
                  s(:args, s(:procarg0, :a)),
         
     | 
| 
      
 2354 
     | 
    
         
            +
                  %q{|a|},
         
     | 
| 
      
 2355 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
      
 2356 
     | 
    
         
            +
             
     | 
| 
       2339 
2357 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
       2340 
2358 
     | 
    
         
             
                  s(:args, s(:arg, :a)),
         
     | 
| 
       2341 
     | 
    
         
            -
                  %q{|a|} 
     | 
| 
      
 2359 
     | 
    
         
            +
                  %q{|a|},
         
     | 
| 
      
 2360 
     | 
    
         
            +
                  %w(1.8))
         
     | 
| 
       2342 
2361 
     | 
    
         | 
| 
       2343 
2362 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
       2344 
2363 
     | 
    
         
             
                  s(:args, s(:arg, :a), s(:arg, :c)),
         
     | 
| 
         @@ -2350,7 +2369,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2350 
2369 
     | 
    
         
             
                  %w(1.8))
         
     | 
| 
       2351 
2370 
     | 
    
         | 
| 
       2352 
2371 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
       2353 
     | 
    
         
            -
                  s(:args, s(: 
     | 
| 
      
 2372 
     | 
    
         
            +
                  s(:args, s(:arg, :a)),
         
     | 
| 
       2354 
2373 
     | 
    
         
             
                  %q{|a,|}
         
     | 
| 
       2355 
2374 
     | 
    
         
             
                )
         
     | 
| 
       2356 
2375 
     | 
    
         | 
| 
         @@ -2466,7 +2485,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2466 
2485 
     | 
    
         
             
                    s(:restarg, :r),
         
     | 
| 
       2467 
2486 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2468 
2487 
     | 
    
         
             
                  %q{|a, o=1, o1=2, *r, &b|},
         
     | 
| 
       2469 
     | 
    
         
            -
                   
     | 
| 
      
 2488 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2470 
2489 
     | 
    
         | 
| 
       2471 
2490 
     | 
    
         
             
                # f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg
         
     | 
| 
       2472 
2491 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
         @@ -2477,7 +2496,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2477 
2496 
     | 
    
         
             
                    s(:arg, :p),
         
     | 
| 
       2478 
2497 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2479 
2498 
     | 
    
         
             
                  %q{|a, o=1, *r, p, &b|},
         
     | 
| 
       2480 
     | 
    
         
            -
                   
     | 
| 
      
 2499 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2481 
2500 
     | 
    
         | 
| 
       2482 
2501 
     | 
    
         
             
                # f_arg tCOMMA f_block_optarg                                opt_f_block_arg
         
     | 
| 
       2483 
2502 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
         @@ -2486,7 +2505,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2486 
2505 
     | 
    
         
             
                    s(:optarg, :o, s(:int, 1)),
         
     | 
| 
       2487 
2506 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2488 
2507 
     | 
    
         
             
                  %q{|a, o=1, &b|},
         
     | 
| 
       2489 
     | 
    
         
            -
                   
     | 
| 
      
 2508 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2490 
2509 
     | 
    
         | 
| 
       2491 
2510 
     | 
    
         
             
                # f_arg tCOMMA f_block_optarg tCOMMA                   f_arg opt_f_block_arg
         
     | 
| 
       2492 
2511 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
         @@ -2496,7 +2515,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2496 
2515 
     | 
    
         
             
                    s(:arg, :p),
         
     | 
| 
       2497 
2516 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2498 
2517 
     | 
    
         
             
                  %q{|a, o=1, p, &b|},
         
     | 
| 
       2499 
     | 
    
         
            -
                   
     | 
| 
      
 2518 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2500 
2519 
     | 
    
         | 
| 
       2501 
2520 
     | 
    
         
             
                # f_arg tCOMMA                       f_rest_arg tCOMMA f_arg opt_f_block_arg
         
     | 
| 
       2502 
2521 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
         @@ -2506,7 +2525,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2506 
2525 
     | 
    
         
             
                    s(:arg, :p),
         
     | 
| 
       2507 
2526 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2508 
2527 
     | 
    
         
             
                  %q{|a, *r, p, &b|},
         
     | 
| 
       2509 
     | 
    
         
            -
                   
     | 
| 
      
 2528 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2510 
2529 
     | 
    
         | 
| 
       2511 
2530 
     | 
    
         
             
                #              f_block_optarg tCOMMA f_rest_arg              opt_f_block_arg
         
     | 
| 
       2512 
2531 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
         @@ -2515,7 +2534,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2515 
2534 
     | 
    
         
             
                    s(:restarg, :r),
         
     | 
| 
       2516 
2535 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2517 
2536 
     | 
    
         
             
                  %q{|o=1, *r, &b|},
         
     | 
| 
       2518 
     | 
    
         
            -
                   
     | 
| 
      
 2537 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2519 
2538 
     | 
    
         | 
| 
       2520 
2539 
     | 
    
         
             
                #              f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg
         
     | 
| 
       2521 
2540 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
         @@ -2525,7 +2544,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2525 
2544 
     | 
    
         
             
                    s(:arg, :p),
         
     | 
| 
       2526 
2545 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2527 
2546 
     | 
    
         
             
                  %q{|o=1, *r, p, &b|},
         
     | 
| 
       2528 
     | 
    
         
            -
                   
     | 
| 
      
 2547 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2529 
2548 
     | 
    
         | 
| 
       2530 
2549 
     | 
    
         
             
                #              f_block_optarg                                opt_f_block_arg
         
     | 
| 
       2531 
2550 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
         @@ -2533,7 +2552,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2533 
2552 
     | 
    
         
             
                    s(:optarg, :o, s(:int, 1)),
         
     | 
| 
       2534 
2553 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2535 
2554 
     | 
    
         
             
                  %q{|o=1, &b|},
         
     | 
| 
       2536 
     | 
    
         
            -
                   
     | 
| 
      
 2555 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2537 
2556 
     | 
    
         | 
| 
       2538 
2557 
     | 
    
         
             
                #              f_block_optarg tCOMMA                   f_arg opt_f_block_arg
         
     | 
| 
       2539 
2558 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
         @@ -2542,7 +2561,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2542 
2561 
     | 
    
         
             
                    s(:arg, :p),
         
     | 
| 
       2543 
2562 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2544 
2563 
     | 
    
         
             
                  %q{|o=1, p, &b|},
         
     | 
| 
       2545 
     | 
    
         
            -
                   
     | 
| 
      
 2564 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2546 
2565 
     | 
    
         | 
| 
       2547 
2566 
     | 
    
         
             
                #                                    f_rest_arg tCOMMA f_arg opt_f_block_arg
         
     | 
| 
       2548 
2567 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
         @@ -2551,7 +2570,26 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2551 
2570 
     | 
    
         
             
                    s(:arg, :p),
         
     | 
| 
       2552 
2571 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2553 
2572 
     | 
    
         
             
                  %q{|*r, p, &b|},
         
     | 
| 
       2554 
     | 
    
         
            -
                   
     | 
| 
      
 2573 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
      
 2574 
     | 
    
         
            +
              end
         
     | 
| 
      
 2575 
     | 
    
         
            +
             
     | 
| 
      
 2576 
     | 
    
         
            +
              def test_multiple_args_with_trailing_comma
         
     | 
| 
      
 2577 
     | 
    
         
            +
                assert_parses_blockargs(
         
     | 
| 
      
 2578 
     | 
    
         
            +
                  s(:args,
         
     | 
| 
      
 2579 
     | 
    
         
            +
                    s(:arg, :a),
         
     | 
| 
      
 2580 
     | 
    
         
            +
                    s(:arg, :b)),
         
     | 
| 
      
 2581 
     | 
    
         
            +
                  %q(|a, b,|)
         
     | 
| 
      
 2582 
     | 
    
         
            +
                )
         
     | 
| 
      
 2583 
     | 
    
         
            +
              end
         
     | 
| 
      
 2584 
     | 
    
         
            +
             
     | 
| 
      
 2585 
     | 
    
         
            +
              def test_procarg0_legacy
         
     | 
| 
      
 2586 
     | 
    
         
            +
                Parser::Builders::Default.emit_procarg0 = false
         
     | 
| 
      
 2587 
     | 
    
         
            +
                assert_parses_blockargs(
         
     | 
| 
      
 2588 
     | 
    
         
            +
                  s(:args,
         
     | 
| 
      
 2589 
     | 
    
         
            +
                    s(:arg, :a)),
         
     | 
| 
      
 2590 
     | 
    
         
            +
                  %q{|a|}
         
     | 
| 
      
 2591 
     | 
    
         
            +
                )
         
     | 
| 
      
 2592 
     | 
    
         
            +
                Parser::Builders::Default.emit_procarg0 = true
         
     | 
| 
       2555 
2593 
     | 
    
         
             
              end
         
     | 
| 
       2556 
2594 
     | 
    
         | 
| 
       2557 
2595 
     | 
    
         
             
              def test_block_kwarg_combinations
         
     | 
| 
         @@ -2563,7 +2601,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2563 
2601 
     | 
    
         
             
                    s(:kwrestarg, :baz),
         
     | 
| 
       2564 
2602 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2565 
2603 
     | 
    
         
             
                  %q{|foo: 1, bar: 2, **baz, &b|},
         
     | 
| 
       2566 
     | 
    
         
            -
                   
     | 
| 
      
 2604 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       2567 
2605 
     | 
    
         | 
| 
       2568 
2606 
     | 
    
         
             
                # f_block_kwarg opt_f_block_arg
         
     | 
| 
       2569 
2607 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
         @@ -2571,7 +2609,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2571 
2609 
     | 
    
         
             
                    s(:kwoptarg, :foo, s(:int, 1)),
         
     | 
| 
       2572 
2610 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2573 
2611 
     | 
    
         
             
                  %q{|foo: 1, &b|},
         
     | 
| 
       2574 
     | 
    
         
            -
                   
     | 
| 
      
 2612 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       2575 
2613 
     | 
    
         | 
| 
       2576 
2614 
     | 
    
         
             
                # f_kwrest opt_f_block_arg
         
     | 
| 
       2577 
2615 
     | 
    
         
             
                assert_parses_blockargs(
         
     | 
| 
         @@ -2579,7 +2617,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2579 
2617 
     | 
    
         
             
                    s(:kwrestarg, :baz),
         
     | 
| 
       2580 
2618 
     | 
    
         
             
                    s(:blockarg, :b)),
         
     | 
| 
       2581 
2619 
     | 
    
         
             
                  %q{|**baz, &b|},
         
     | 
| 
       2582 
     | 
    
         
            -
                   
     | 
| 
      
 2620 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       2583 
2621 
     | 
    
         
             
              end
         
     | 
| 
       2584 
2622 
     | 
    
         | 
| 
       2585 
2623 
     | 
    
         
             
              def test_block_kwarg
         
     | 
| 
         @@ -2587,7 +2625,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2587 
2625 
     | 
    
         
             
                  s(:args,
         
     | 
| 
       2588 
2626 
     | 
    
         
             
                    s(:kwarg, :foo)),
         
     | 
| 
       2589 
2627 
     | 
    
         
             
                  %q{|foo:|},
         
     | 
| 
       2590 
     | 
    
         
            -
                   
     | 
| 
      
 2628 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       2591 
2629 
     | 
    
         
             
              end
         
     | 
| 
       2592 
2630 
     | 
    
         | 
| 
       2593 
2631 
     | 
    
         
             
              def test_arg_invalid
         
     | 
| 
         @@ -2642,14 +2680,14 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2642 
2680 
     | 
    
         
             
                  %q{def foo(aa, (bb, aa)); end},
         
     | 
| 
       2643 
2681 
     | 
    
         
             
                  %q{                 ^^ location
         
     | 
| 
       2644 
2682 
     | 
    
         
             
                    |        ~~ highlights (0)},
         
     | 
| 
       2645 
     | 
    
         
            -
                   
     | 
| 
      
 2683 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2646 
2684 
     | 
    
         | 
| 
       2647 
2685 
     | 
    
         
             
                assert_diagnoses(
         
     | 
| 
       2648 
2686 
     | 
    
         
             
                  [:error, :duplicate_argument],
         
     | 
| 
       2649 
2687 
     | 
    
         
             
                  %q{def foo(aa, *r, aa); end},
         
     | 
| 
       2650 
2688 
     | 
    
         
             
                  %q{                ^^ location
         
     | 
| 
       2651 
2689 
     | 
    
         
             
                    |        ~~ highlights (0)},
         
     | 
| 
       2652 
     | 
    
         
            -
                   
     | 
| 
      
 2690 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2653 
2691 
     | 
    
         | 
| 
       2654 
2692 
     | 
    
         | 
| 
       2655 
2693 
     | 
    
         
             
                assert_diagnoses(
         
     | 
| 
         @@ -2657,28 +2695,28 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2657 
2695 
     | 
    
         
             
                  %q{lambda do |aa; aa| end},
         
     | 
| 
       2658 
2696 
     | 
    
         
             
                  %q{               ^^ location
         
     | 
| 
       2659 
2697 
     | 
    
         
             
                    |           ~~ highlights (0)},
         
     | 
| 
       2660 
     | 
    
         
            -
                   
     | 
| 
      
 2698 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2661 
2699 
     | 
    
         | 
| 
       2662 
2700 
     | 
    
         
             
                assert_diagnoses(
         
     | 
| 
       2663 
2701 
     | 
    
         
             
                  [:error, :duplicate_argument],
         
     | 
| 
       2664 
2702 
     | 
    
         
             
                  %q{def foo(aa, aa: 1); end},
         
     | 
| 
       2665 
2703 
     | 
    
         
             
                  %q{            ^^ location
         
     | 
| 
       2666 
2704 
     | 
    
         
             
                    |        ~~ highlights (0)},
         
     | 
| 
       2667 
     | 
    
         
            -
                   
     | 
| 
      
 2705 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       2668 
2706 
     | 
    
         | 
| 
       2669 
2707 
     | 
    
         
             
                assert_diagnoses(
         
     | 
| 
       2670 
2708 
     | 
    
         
             
                  [:error, :duplicate_argument],
         
     | 
| 
       2671 
2709 
     | 
    
         
             
                  %q{def foo(aa, **aa); end},
         
     | 
| 
       2672 
2710 
     | 
    
         
             
                  %q{              ^^ location
         
     | 
| 
       2673 
2711 
     | 
    
         
             
                    |        ~~ highlights (0)},
         
     | 
| 
       2674 
     | 
    
         
            -
                   
     | 
| 
      
 2712 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       2675 
2713 
     | 
    
         | 
| 
       2676 
2714 
     | 
    
         
             
                assert_diagnoses(
         
     | 
| 
       2677 
2715 
     | 
    
         
             
                  [:error, :duplicate_argument],
         
     | 
| 
       2678 
2716 
     | 
    
         
             
                  %q{def foo(aa, aa:); end},
         
     | 
| 
       2679 
2717 
     | 
    
         
             
                  %q{            ^^ location
         
     | 
| 
       2680 
2718 
     | 
    
         
             
                    |        ~~ highlights (0)},
         
     | 
| 
       2681 
     | 
    
         
            -
                   
     | 
| 
      
 2719 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       2682 
2720 
     | 
    
         
             
              end
         
     | 
| 
       2683 
2721 
     | 
    
         | 
| 
       2684 
2722 
     | 
    
         
             
              def test_arg_duplicate_ignored
         
     | 
| 
         @@ -2694,7 +2732,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2694 
2732 
     | 
    
         
             
                    nil),
         
     | 
| 
       2695 
2733 
     | 
    
         
             
                  %q{def foo(_, _); end},
         
     | 
| 
       2696 
2734 
     | 
    
         
             
                  %q{},
         
     | 
| 
       2697 
     | 
    
         
            -
                   
     | 
| 
      
 2735 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2698 
2736 
     | 
    
         | 
| 
       2699 
2737 
     | 
    
         
             
                assert_diagnoses(
         
     | 
| 
       2700 
2738 
     | 
    
         
             
                  [:error, :duplicate_argument],
         
     | 
| 
         @@ -2708,7 +2746,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2708 
2746 
     | 
    
         
             
                    nil),
         
     | 
| 
       2709 
2747 
     | 
    
         
             
                  %q{def foo(_a, _a); end},
         
     | 
| 
       2710 
2748 
     | 
    
         
             
                  %q{},
         
     | 
| 
       2711 
     | 
    
         
            -
                   
     | 
| 
      
 2749 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       2712 
2750 
     | 
    
         
             
              end
         
     | 
| 
       2713 
2751 
     | 
    
         | 
| 
       2714 
2752 
     | 
    
         
             
              def test_arg_duplicate_proc
         
     | 
| 
         @@ -2724,7 +2762,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2724 
2762 
     | 
    
         
             
                  [:error, :duplicate_argument],
         
     | 
| 
       2725 
2763 
     | 
    
         
             
                  %q{proc{|a,a|}},
         
     | 
| 
       2726 
2764 
     | 
    
         
             
                  %q{},
         
     | 
| 
       2727 
     | 
    
         
            -
                   
     | 
| 
      
 2765 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2728 
2766 
     | 
    
         
             
              end
         
     | 
| 
       2729 
2767 
     | 
    
         | 
| 
       2730 
2768 
     | 
    
         
             
              def test_kwarg_invalid
         
     | 
| 
         @@ -2732,13 +2770,13 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2732 
2770 
     | 
    
         
             
                  [:error, :argument_const],
         
     | 
| 
       2733 
2771 
     | 
    
         
             
                  %q{def foo(Abc: 1); end},
         
     | 
| 
       2734 
2772 
     | 
    
         
             
                  %q{        ~~~~ location},
         
     | 
| 
       2735 
     | 
    
         
            -
                   
     | 
| 
      
 2773 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       2736 
2774 
     | 
    
         | 
| 
       2737 
2775 
     | 
    
         
             
                assert_diagnoses(
         
     | 
| 
       2738 
2776 
     | 
    
         
             
                  [:error, :argument_const],
         
     | 
| 
       2739 
2777 
     | 
    
         
             
                  %q{def foo(Abc:); end},
         
     | 
| 
       2740 
2778 
     | 
    
         
             
                  %q{        ~~~~ location},
         
     | 
| 
       2741 
     | 
    
         
            -
                   
     | 
| 
      
 2779 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       2742 
2780 
     | 
    
         
             
              end
         
     | 
| 
       2743 
2781 
     | 
    
         | 
| 
       2744 
2782 
     | 
    
         
             
              def test_arg_label
         
     | 
| 
         @@ -2747,14 +2785,14 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2747 
2785 
     | 
    
         
             
                    s(:send, nil, :a, s(:sym, :b))),
         
     | 
| 
       2748 
2786 
     | 
    
         
             
                  %q{def foo() a:b end},
         
     | 
| 
       2749 
2787 
     | 
    
         
             
                  %q{},
         
     | 
| 
       2750 
     | 
    
         
            -
                   
     | 
| 
      
 2788 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2751 
2789 
     | 
    
         | 
| 
       2752 
2790 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       2753 
2791 
     | 
    
         
             
                  s(:def, :foo, s(:args),
         
     | 
| 
       2754 
2792 
     | 
    
         
             
                    s(:send, nil, :a, s(:sym, :b))),
         
     | 
| 
       2755 
2793 
     | 
    
         
             
                  %Q{def foo\n a:b end},
         
     | 
| 
       2756 
2794 
     | 
    
         
             
                  %q{},
         
     | 
| 
       2757 
     | 
    
         
            -
                   
     | 
| 
      
 2795 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2758 
2796 
     | 
    
         | 
| 
       2759 
2797 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       2760 
2798 
     | 
    
         
             
                  s(:block,
         
     | 
| 
         @@ -2764,7 +2802,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2764 
2802 
     | 
    
         
             
                      s(:sym, :b))),
         
     | 
| 
       2765 
2803 
     | 
    
         
             
                  %Q{f { || a:b }},
         
     | 
| 
       2766 
2804 
     | 
    
         
             
                  %q{},
         
     | 
| 
       2767 
     | 
    
         
            -
                   
     | 
| 
      
 2805 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       2768 
2806 
     | 
    
         
             
              end
         
     | 
| 
       2769 
2807 
     | 
    
         | 
| 
       2770 
2808 
     | 
    
         
             
              #
         
     | 
| 
         @@ -2915,7 +2953,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2915 
2953 
     | 
    
         
             
                  [:warning, :ambiguous_prefix, { :prefix => '**' }],
         
     | 
| 
       2916 
2954 
     | 
    
         
             
                  %q{m **foo},
         
     | 
| 
       2917 
2955 
     | 
    
         
             
                  %q{  ^^ location},
         
     | 
| 
       2918 
     | 
    
         
            -
                   
     | 
| 
      
 2956 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       2919 
2957 
     | 
    
         
             
              end
         
     | 
| 
       2920 
2958 
     | 
    
         | 
| 
       2921 
2959 
     | 
    
         
             
              def test_send_block_chain_cmd
         
     | 
| 
         @@ -2977,7 +3015,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2977 
3015 
     | 
    
         
             
                    s(:args), nil),
         
     | 
| 
       2978 
3016 
     | 
    
         
             
                  %q{meth 1 do end.fun bar do end},
         
     | 
| 
       2979 
3017 
     | 
    
         
             
                  %q{},
         
     | 
| 
       2980 
     | 
    
         
            -
                   
     | 
| 
      
 3018 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       2981 
3019 
     | 
    
         | 
| 
       2982 
3020 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       2983 
3021 
     | 
    
         
             
                  s(:block,
         
     | 
| 
         @@ -2989,7 +3027,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       2989 
3027 
     | 
    
         
             
                    s(:args), nil),
         
     | 
| 
       2990 
3028 
     | 
    
         
             
                  %q{meth 1 do end.fun(bar) {}},
         
     | 
| 
       2991 
3029 
     | 
    
         
             
                  %q{},
         
     | 
| 
       2992 
     | 
    
         
            -
                   
     | 
| 
      
 3030 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       2993 
3031 
     | 
    
         | 
| 
       2994 
3032 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       2995 
3033 
     | 
    
         
             
                  s(:block,
         
     | 
| 
         @@ -3001,7 +3039,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3001 
3039 
     | 
    
         
             
                    s(:args), nil),
         
     | 
| 
       3002 
3040 
     | 
    
         
             
                  %q{meth 1 do end.fun {}},
         
     | 
| 
       3003 
3041 
     | 
    
         
             
                  %q{},
         
     | 
| 
       3004 
     | 
    
         
            -
                   
     | 
| 
      
 3042 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       3005 
3043 
     | 
    
         
             
              end
         
     | 
| 
       3006 
3044 
     | 
    
         | 
| 
       3007 
3045 
     | 
    
         
             
              def test_send_paren_block_cmd
         
     | 
| 
         @@ -3098,7 +3136,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3098 
3136 
     | 
    
         
             
                  s(:send, s(:lvar, :foo), :'!=', s(:int, 1)),
         
     | 
| 
       3099 
3137 
     | 
    
         
             
                  %q{foo != 1},
         
     | 
| 
       3100 
3138 
     | 
    
         
             
                  %q{},
         
     | 
| 
       3101 
     | 
    
         
            -
                   
     | 
| 
      
 3139 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3102 
3140 
     | 
    
         | 
| 
       3103 
3141 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       3104 
3142 
     | 
    
         
             
                  s(:send, s(:lvar, :foo), :===, s(:int, 1)),
         
     | 
| 
         @@ -3118,7 +3156,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3118 
3156 
     | 
    
         
             
                  s(:send, s(:lvar, :foo), :'!~', s(:int, 1)),
         
     | 
| 
       3119 
3157 
     | 
    
         
             
                  %q{foo !~ 1},
         
     | 
| 
       3120 
3158 
     | 
    
         
             
                  %q{},
         
     | 
| 
       3121 
     | 
    
         
            -
                   
     | 
| 
      
 3159 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3122 
3160 
     | 
    
         | 
| 
       3123 
3161 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       3124 
3162 
     | 
    
         
             
                  s(:send, s(:lvar, :foo), :<<, s(:int, 1)),
         
     | 
| 
         @@ -3156,7 +3194,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3156 
3194 
     | 
    
         
             
                  s(:send, s(:lvar, :foo), :'!'),
         
     | 
| 
       3157 
3195 
     | 
    
         
             
                  %q{!foo},
         
     | 
| 
       3158 
3196 
     | 
    
         
             
                  %{},
         
     | 
| 
       3159 
     | 
    
         
            -
                   
     | 
| 
      
 3197 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3160 
3198 
     | 
    
         
             
              end
         
     | 
| 
       3161 
3199 
     | 
    
         | 
| 
       3162 
3200 
     | 
    
         
             
              def test_bang_cmd
         
     | 
| 
         @@ -3170,7 +3208,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3170 
3208 
     | 
    
         
             
                  s(:send, s(:send, nil, :m, s(:lvar, :foo)), :'!'),
         
     | 
| 
       3171 
3209 
     | 
    
         
             
                  %q{!m foo},
         
     | 
| 
       3172 
3210 
     | 
    
         
             
                  %{},
         
     | 
| 
       3173 
     | 
    
         
            -
                   
     | 
| 
      
 3211 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3174 
3212 
     | 
    
         
             
              end
         
     | 
| 
       3175 
3213 
     | 
    
         | 
| 
       3176 
3214 
     | 
    
         
             
              def test_not
         
     | 
| 
         @@ -3184,19 +3222,19 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3184 
3222 
     | 
    
         
             
                  s(:send, s(:lvar, :foo), :'!'),
         
     | 
| 
       3185 
3223 
     | 
    
         
             
                  %q{not foo},
         
     | 
| 
       3186 
3224 
     | 
    
         
             
                  %{},
         
     | 
| 
       3187 
     | 
    
         
            -
                   
     | 
| 
      
 3225 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3188 
3226 
     | 
    
         | 
| 
       3189 
3227 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       3190 
3228 
     | 
    
         
             
                  s(:send, s(:lvar, :foo), :'!'),
         
     | 
| 
       3191 
3229 
     | 
    
         
             
                  %q{not(foo)},
         
     | 
| 
       3192 
3230 
     | 
    
         
             
                  %q{~~~~~~~~ expression},
         
     | 
| 
       3193 
     | 
    
         
            -
                   
     | 
| 
      
 3231 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3194 
3232 
     | 
    
         | 
| 
       3195 
3233 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       3196 
3234 
     | 
    
         
             
                  s(:send, s(:begin), :'!'),
         
     | 
| 
       3197 
3235 
     | 
    
         
             
                  %q{not()},
         
     | 
| 
       3198 
3236 
     | 
    
         
             
                  %q{~~~~~ expression},
         
     | 
| 
       3199 
     | 
    
         
            -
                   
     | 
| 
      
 3237 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3200 
3238 
     | 
    
         
             
              end
         
     | 
| 
       3201 
3239 
     | 
    
         | 
| 
       3202 
3240 
     | 
    
         
             
              def test_not_cmd
         
     | 
| 
         @@ -3210,7 +3248,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3210 
3248 
     | 
    
         
             
                  s(:send, s(:send, nil, :m, s(:lvar, :foo)), :'!'),
         
     | 
| 
       3211 
3249 
     | 
    
         
             
                  %q{not m foo},
         
     | 
| 
       3212 
3250 
     | 
    
         
             
                  %{},
         
     | 
| 
       3213 
     | 
    
         
            -
                   
     | 
| 
      
 3251 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3214 
3252 
     | 
    
         
             
              end
         
     | 
| 
       3215 
3253 
     | 
    
         | 
| 
       3216 
3254 
     | 
    
         
             
              def test_pow_precedence
         
     | 
| 
         @@ -3292,7 +3330,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3292 
3330 
     | 
    
         
             
                    |  ^ begin
         
     | 
| 
       3293 
3331 
     | 
    
         
             
                    |    ^ end
         
     | 
| 
       3294 
3332 
     | 
    
         
             
                    |~~~~~ expression},
         
     | 
| 
       3295 
     | 
    
         
            -
                   
     | 
| 
      
 3333 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3296 
3334 
     | 
    
         | 
| 
       3297 
3335 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       3298 
3336 
     | 
    
         
             
                  s(:block, s(:lambda),
         
     | 
| 
         @@ -3303,7 +3341,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3303 
3341 
     | 
    
         
             
                    |       ^ end
         
     | 
| 
       3304 
3342 
     | 
    
         
             
                    |   ^ expression (args.restarg)
         
     | 
| 
       3305 
3343 
     | 
    
         
             
                    |~~~~~~~~ expression},
         
     | 
| 
       3306 
     | 
    
         
            -
                   
     | 
| 
      
 3344 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3307 
3345 
     | 
    
         | 
| 
       3308 
3346 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       3309 
3347 
     | 
    
         
             
                  s(:block, s(:lambda),
         
     | 
| 
         @@ -3313,7 +3351,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3313 
3351 
     | 
    
         
             
                    |   ^^ begin
         
     | 
| 
       3314 
3352 
     | 
    
         
             
                    |      ^^^ end
         
     | 
| 
       3315 
3353 
     | 
    
         
             
                    |~~~~~~~~~ expression},
         
     | 
| 
       3316 
     | 
    
         
            -
                   
     | 
| 
      
 3354 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3317 
3355 
     | 
    
         
             
              end
         
     | 
| 
       3318 
3356 
     | 
    
         | 
| 
       3319 
3357 
     | 
    
         
             
              def test_send_lambda_args
         
     | 
| 
         @@ -3329,7 +3367,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3329 
3367 
     | 
    
         
             
                    |      ^ begin
         
     | 
| 
       3330 
3368 
     | 
    
         
             
                    |        ^ end
         
     | 
| 
       3331 
3369 
     | 
    
         
             
                    |~~~~~~~~~ expression},
         
     | 
| 
       3332 
     | 
    
         
            -
                   
     | 
| 
      
 3370 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3333 
3371 
     | 
    
         | 
| 
       3334 
3372 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       3335 
3373 
     | 
    
         
             
                  s(:block, s(:lambda),
         
     | 
| 
         @@ -3338,7 +3376,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3338 
3376 
     | 
    
         
             
                    nil),
         
     | 
| 
       3339 
3377 
     | 
    
         
             
                  %q{-> (a) { }},
         
     | 
| 
       3340 
3378 
     | 
    
         
             
                  %q{},
         
     | 
| 
       3341 
     | 
    
         
            -
                   
     | 
| 
      
 3379 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       3342 
3380 
     | 
    
         
             
              end
         
     | 
| 
       3343 
3381 
     | 
    
         | 
| 
       3344 
3382 
     | 
    
         
             
              def test_send_lambda_args_shadow
         
     | 
| 
         @@ -3351,7 +3389,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3351 
3389 
     | 
    
         
             
                    nil),
         
     | 
| 
       3352 
3390 
     | 
    
         
             
                  %q{->(a; foo, bar) { }},
         
     | 
| 
       3353 
3391 
     | 
    
         
             
                  %q{      ~~~ expression (args.shadowarg)},
         
     | 
| 
       3354 
     | 
    
         
            -
                   
     | 
| 
      
 3392 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3355 
3393 
     | 
    
         
             
              end
         
     | 
| 
       3356 
3394 
     | 
    
         | 
| 
       3357 
3395 
     | 
    
         
             
              def test_send_lambda_args_noparen
         
     | 
| 
         @@ -3362,7 +3400,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3362 
3400 
     | 
    
         
             
                    nil),
         
     | 
| 
       3363 
3401 
     | 
    
         
             
                  %q{-> a: 1 { }},
         
     | 
| 
       3364 
3402 
     | 
    
         
             
                  %q{},
         
     | 
| 
       3365 
     | 
    
         
            -
                   
     | 
| 
      
 3403 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       3366 
3404 
     | 
    
         | 
| 
       3367 
3405 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       3368 
3406 
     | 
    
         
             
                  s(:block, s(:lambda),
         
     | 
| 
         @@ -3371,7 +3409,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3371 
3409 
     | 
    
         
             
                    nil),
         
     | 
| 
       3372 
3410 
     | 
    
         
             
                  %q{-> a: { }},
         
     | 
| 
       3373 
3411 
     | 
    
         
             
                  %q{},
         
     | 
| 
       3374 
     | 
    
         
            -
                   
     | 
| 
      
 3412 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       3375 
3413 
     | 
    
         
             
              end
         
     | 
| 
       3376 
3414 
     | 
    
         | 
| 
       3377 
3415 
     | 
    
         
             
              def test_send_lambda_legacy
         
     | 
| 
         @@ -3384,7 +3422,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3384 
3422 
     | 
    
         
             
                    |  ^ begin
         
     | 
| 
       3385 
3423 
     | 
    
         
             
                    |    ^ end
         
     | 
| 
       3386 
3424 
     | 
    
         
             
                    |~~~~~ expression},
         
     | 
| 
       3387 
     | 
    
         
            -
                   
     | 
| 
      
 3425 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3388 
3426 
     | 
    
         
             
                Parser::Builders::Default.emit_lambda = true
         
     | 
| 
       3389 
3427 
     | 
    
         
             
              end
         
     | 
| 
       3390 
3428 
     | 
    
         | 
| 
         @@ -3397,7 +3435,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3397 
3435 
     | 
    
         
             
                    |      ^ end
         
     | 
| 
       3398 
3436 
     | 
    
         
             
                    |   ^ dot
         
     | 
| 
       3399 
3437 
     | 
    
         
             
                    |~~~~~~~ expression},
         
     | 
| 
       3400 
     | 
    
         
            -
                   
     | 
| 
      
 3438 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3401 
3439 
     | 
    
         | 
| 
       3402 
3440 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       3403 
3441 
     | 
    
         
             
                  s(:send, s(:lvar, :foo), :call,
         
     | 
| 
         @@ -3407,7 +3445,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3407 
3445 
     | 
    
         
             
                    |       ^ end
         
     | 
| 
       3408 
3446 
     | 
    
         
             
                    |   ^^ dot
         
     | 
| 
       3409 
3447 
     | 
    
         
             
                    |~~~~~~~~ expression},
         
     | 
| 
       3410 
     | 
    
         
            -
                   
     | 
| 
      
 3448 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3411 
3449 
     | 
    
         
             
              end
         
     | 
| 
       3412 
3450 
     | 
    
         | 
| 
       3413 
3451 
     | 
    
         
             
              def test_send_conditional
         
     | 
| 
         @@ -3415,7 +3453,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3415 
3453 
     | 
    
         
             
                  s(:csend, s(:send, nil, :a), :b),
         
     | 
| 
       3416 
3454 
     | 
    
         
             
                  %q{a&.b},
         
     | 
| 
       3417 
3455 
     | 
    
         
             
                  %q{ ^^ dot},
         
     | 
| 
       3418 
     | 
    
         
            -
                   
     | 
| 
      
 3456 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       3419 
3457 
     | 
    
         
             
              end
         
     | 
| 
       3420 
3458 
     | 
    
         | 
| 
       3421 
3459 
     | 
    
         
             
              def test_send_attr_asgn_conditional
         
     | 
| 
         @@ -3423,7 +3461,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3423 
3461 
     | 
    
         
             
                  s(:csend, s(:send, nil, :a), :b=, s(:int, 1)),
         
     | 
| 
       3424 
3462 
     | 
    
         
             
                  %q{a&.b = 1},
         
     | 
| 
       3425 
3463 
     | 
    
         
             
                  %q{ ^^ dot},
         
     | 
| 
       3426 
     | 
    
         
            -
                   
     | 
| 
      
 3464 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       3427 
3465 
     | 
    
         
             
              end
         
     | 
| 
       3428 
3466 
     | 
    
         | 
| 
       3429 
3467 
     | 
    
         
             
              def test_send_block_conditional
         
     | 
| 
         @@ -3434,7 +3472,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3434 
3472 
     | 
    
         
             
                    s(:args), nil),
         
     | 
| 
       3435 
3473 
     | 
    
         
             
                  %q{foo&.bar {}},
         
     | 
| 
       3436 
3474 
     | 
    
         
             
                  %q{},
         
     | 
| 
       3437 
     | 
    
         
            -
                   
     | 
| 
      
 3475 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       3438 
3476 
     | 
    
         
             
              end
         
     | 
| 
       3439 
3477 
     | 
    
         | 
| 
       3440 
3478 
     | 
    
         
             
              def test_send_op_asgn_conditional
         
     | 
| 
         @@ -3442,7 +3480,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3442 
3480 
     | 
    
         
             
                  s(:and_asgn, s(:csend, s(:send, nil, :a), :b), s(:int, 1)),
         
     | 
| 
       3443 
3481 
     | 
    
         
             
                  %q{a&.b &&= 1},
         
     | 
| 
       3444 
3482 
     | 
    
         
             
                  %q{},
         
     | 
| 
       3445 
     | 
    
         
            -
                   
     | 
| 
      
 3483 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       3446 
3484 
     | 
    
         
             
              end
         
     | 
| 
       3447 
3485 
     | 
    
         | 
| 
       3448 
3486 
     | 
    
         
             
              def test_lvar_injecting_match
         
     | 
| 
         @@ -3457,7 +3495,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3457 
3495 
     | 
    
         
             
                  %q{/(?<match>bar)/ =~ 'bar'; match},
         
     | 
| 
       3458 
3496 
     | 
    
         
             
                  %q{                ~~ selector (match_with_lvasgn)
         
     | 
| 
       3459 
3497 
     | 
    
         
             
                    |~~~~~~~~~~~~~~~~~~~~~~~~ expression (match_with_lvasgn)},
         
     | 
| 
       3460 
     | 
    
         
            -
                   
     | 
| 
      
 3498 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3461 
3499 
     | 
    
         
             
              end
         
     | 
| 
       3462 
3500 
     | 
    
         | 
| 
       3463 
3501 
     | 
    
         
             
              def test_non_lvar_injecting_match
         
     | 
| 
         @@ -3614,7 +3652,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3614 
3652 
     | 
    
         
             
                    s(:lvar, :bar)),
         
     | 
| 
       3615 
3653 
     | 
    
         
             
                  %q{foo[bar,]},
         
     | 
| 
       3616 
3654 
     | 
    
         
             
                  %q{},
         
     | 
| 
       3617 
     | 
    
         
            -
                   
     | 
| 
      
 3655 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3618 
3656 
     | 
    
         
             
              end
         
     | 
| 
       3619 
3657 
     | 
    
         | 
| 
       3620 
3658 
     | 
    
         
             
              def test_args_assocs
         
     | 
| 
         @@ -3655,7 +3693,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3655 
3693 
     | 
    
         
             
                    s(:hash, s(:pair, s(:sym, :baz), s(:int, 1)))),
         
     | 
| 
       3656 
3694 
     | 
    
         
             
                  %q{foo[:baz => 1,]},
         
     | 
| 
       3657 
3695 
     | 
    
         
             
                  %q{},
         
     | 
| 
       3658 
     | 
    
         
            -
                   
     | 
| 
      
 3696 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3659 
3697 
     | 
    
         
             
              end
         
     | 
| 
       3660 
3698 
     | 
    
         | 
| 
       3661 
3699 
     | 
    
         
             
              def test_args_args_assocs
         
     | 
| 
         @@ -3680,7 +3718,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3680 
3718 
     | 
    
         
             
                    s(:hash, s(:pair, s(:sym, :baz), s(:int, 1)))),
         
     | 
| 
       3681 
3719 
     | 
    
         
             
                  %q{foo[bar, :baz => 1,]},
         
     | 
| 
       3682 
3720 
     | 
    
         
             
                  %q{},
         
     | 
| 
       3683 
     | 
    
         
            -
                   
     | 
| 
      
 3721 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3684 
3722 
     | 
    
         
             
              end
         
     | 
| 
       3685 
3723 
     | 
    
         | 
| 
       3686 
3724 
     | 
    
         
             
              def test_args_args_assocs_star
         
     | 
| 
         @@ -3748,7 +3786,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3748 
3786 
     | 
    
         
             
                    s(:args), nil),
         
     | 
| 
       3749 
3787 
     | 
    
         
             
                  %q{foo.fun (1) {}},
         
     | 
| 
       3750 
3788 
     | 
    
         
             
                  %q{},
         
     | 
| 
       3751 
     | 
    
         
            -
                   
     | 
| 
      
 3789 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3752 
3790 
     | 
    
         | 
| 
       3753 
3791 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       3754 
3792 
     | 
    
         
             
                  s(:block,
         
     | 
| 
         @@ -3764,7 +3802,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3764 
3802 
     | 
    
         
             
                    s(:args), nil),
         
     | 
| 
       3765 
3803 
     | 
    
         
             
                  %q{foo::fun (1) {}},
         
     | 
| 
       3766 
3804 
     | 
    
         
             
                  %q{},
         
     | 
| 
       3767 
     | 
    
         
            -
                   
     | 
| 
      
 3805 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       3768 
3806 
     | 
    
         
             
              end
         
     | 
| 
       3769 
3807 
     | 
    
         | 
| 
       3770 
3808 
     | 
    
         
             
              def test_space_args_hash_literal_then_block
         
     | 
| 
         @@ -3775,8 +3813,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       3775 
3813 
     | 
    
         
             
                    s(:args),
         
     | 
| 
       3776 
3814 
     | 
    
         
             
                    s(:int, 1)),
         
     | 
| 
       3777 
3815 
     | 
    
         
             
                  %q{f 1, {1 => 2} {1}},
         
     | 
| 
       3778 
     | 
    
         
            -
                  %q{} 
     | 
| 
       3779 
     | 
    
         
            -
                  ALL_VERSIONS)
         
     | 
| 
      
 3816 
     | 
    
         
            +
                  %q{})
         
     | 
| 
       3780 
3817 
     | 
    
         
             
              end
         
     | 
| 
       3781 
3818 
     | 
    
         | 
| 
       3782 
3819 
     | 
    
         
             
              def test_space_args_arg_call
         
     | 
| 
         @@ -4019,7 +4056,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       4019 
4056 
     | 
    
         
             
                    s(:args), nil),
         
     | 
| 
       4020 
4057 
     | 
    
         
             
                  %q{fun () {}},
         
     | 
| 
       4021 
4058 
     | 
    
         
             
                  %q{    ~~ expression (send.begin)},
         
     | 
| 
       4022 
     | 
    
         
            -
                   
     | 
| 
      
 4059 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       4023 
4060 
     | 
    
         
             
              end
         
     | 
| 
       4024 
4061 
     | 
    
         | 
| 
       4025 
4062 
     | 
    
         
             
              #
         
     | 
| 
         @@ -4204,7 +4241,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       4204 
4241 
     | 
    
         
             
                      s(:const, nil, :T))),
         
     | 
| 
       4205 
4242 
     | 
    
         
             
                  %q{t=1;(foo)?t:T},
         
     | 
| 
       4206 
4243 
     | 
    
         
             
                  %q{},
         
     | 
| 
       4207 
     | 
    
         
            -
                   
     | 
| 
      
 4244 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       4208 
4245 
     | 
    
         
             
              end
         
     | 
| 
       4209 
4246 
     | 
    
         | 
| 
       4210 
4247 
     | 
    
         
             
              def test_if_masgn
         
     | 
| 
         @@ -4221,7 +4258,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       4221 
4258 
     | 
    
         
             
                    s(:begin, nil), nil, nil),
         
     | 
| 
       4222 
4259 
     | 
    
         
             
                  %q{if (a, b = foo); end},
         
     | 
| 
       4223 
4260 
     | 
    
         
             
                  %q{},
         
     | 
| 
       4224 
     | 
    
         
            -
                   
     | 
| 
      
 4261 
     | 
    
         
            +
                  SINCE_2_4)
         
     | 
| 
       4225 
4262 
     | 
    
         
             
              end
         
     | 
| 
       4226 
4263 
     | 
    
         | 
| 
       4227 
4264 
     | 
    
         
             
              def test_if_mod_masgn
         
     | 
| 
         @@ -4548,7 +4585,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       4548 
4585 
     | 
    
         
             
                  %q{break(foo)},
         
     | 
| 
       4549 
4586 
     | 
    
         
             
                  %q{~~~~~ keyword
         
     | 
| 
       4550 
4587 
     | 
    
         
             
                    |~~~~~~~~~~ expression},
         
     | 
| 
       4551 
     | 
    
         
            -
                   
     | 
| 
      
 4588 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       4552 
4589 
     | 
    
         | 
| 
       4553 
4590 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       4554 
4591 
     | 
    
         
             
                  s(:break, s(:begin, s(:lvar, :foo))),
         
     | 
| 
         @@ -4568,7 +4605,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       4568 
4605 
     | 
    
         
             
                  %q{break()},
         
     | 
| 
       4569 
4606 
     | 
    
         
             
                  %q{~~~~~ keyword
         
     | 
| 
       4570 
4607 
     | 
    
         
             
                    |~~~~~~~ expression},
         
     | 
| 
       4571 
     | 
    
         
            -
                   
     | 
| 
      
 4608 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       4572 
4609 
     | 
    
         | 
| 
       4573 
4610 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       4574 
4611 
     | 
    
         
             
                  s(:break),
         
     | 
| 
         @@ -4595,7 +4632,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       4595 
4632 
     | 
    
         
             
                  %q{return(foo)},
         
     | 
| 
       4596 
4633 
     | 
    
         
             
                  %q{~~~~~~ keyword
         
     | 
| 
       4597 
4634 
     | 
    
         
             
                    |~~~~~~~~~~~ expression},
         
     | 
| 
       4598 
     | 
    
         
            -
                   
     | 
| 
      
 4635 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       4599 
4636 
     | 
    
         | 
| 
       4600 
4637 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       4601 
4638 
     | 
    
         
             
                  s(:return, s(:begin, s(:lvar, :foo))),
         
     | 
| 
         @@ -4615,7 +4652,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       4615 
4652 
     | 
    
         
             
                  %q{return()},
         
     | 
| 
       4616 
4653 
     | 
    
         
             
                  %q{~~~~~~ keyword
         
     | 
| 
       4617 
4654 
     | 
    
         
             
                    |~~~~~~~~ expression},
         
     | 
| 
       4618 
     | 
    
         
            -
                   
     | 
| 
      
 4655 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       4619 
4656 
     | 
    
         | 
| 
       4620 
4657 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       4621 
4658 
     | 
    
         
             
                  s(:return),
         
     | 
| 
         @@ -4642,7 +4679,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       4642 
4679 
     | 
    
         
             
                  %q{next(foo)},
         
     | 
| 
       4643 
4680 
     | 
    
         
             
                  %q{~~~~ keyword
         
     | 
| 
       4644 
4681 
     | 
    
         
             
                    |~~~~~~~~~ expression},
         
     | 
| 
       4645 
     | 
    
         
            -
                   
     | 
| 
      
 4682 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       4646 
4683 
     | 
    
         | 
| 
       4647 
4684 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       4648 
4685 
     | 
    
         
             
                  s(:next, s(:begin, s(:lvar, :foo))),
         
     | 
| 
         @@ -4662,7 +4699,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       4662 
4699 
     | 
    
         
             
                  %q{next()},
         
     | 
| 
       4663 
4700 
     | 
    
         
             
                  %q{~~~~ keyword
         
     | 
| 
       4664 
4701 
     | 
    
         
             
                    |~~~~~~ expression},
         
     | 
| 
       4665 
     | 
    
         
            -
                   
     | 
| 
      
 4702 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       4666 
4703 
     | 
    
         | 
| 
       4667 
4704 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       4668 
4705 
     | 
    
         
             
                  s(:next),
         
     | 
| 
         @@ -4720,6 +4757,13 @@ class TestParser < Minitest::Test 
     | 
|
| 
       4720 
4757 
     | 
    
         
             
              end
         
     | 
| 
       4721 
4758 
     | 
    
         | 
| 
       4722 
4759 
     | 
    
         
             
              def test_rescue_else_useless
         
     | 
| 
      
 4760 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 4761 
     | 
    
         
            +
                  s(:kwbegin,
         
     | 
| 
      
 4762 
     | 
    
         
            +
                    s(:begin,
         
     | 
| 
      
 4763 
     | 
    
         
            +
                      s(:int, 2))),
         
     | 
| 
      
 4764 
     | 
    
         
            +
                  %q{begin; else; 2; end},
         
     | 
| 
      
 4765 
     | 
    
         
            +
                  %q{       ~~~~ begin (begin)})
         
     | 
| 
      
 4766 
     | 
    
         
            +
             
     | 
| 
       4723 
4767 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       4724 
4768 
     | 
    
         
             
                  s(:kwbegin,
         
     | 
| 
       4725 
4769 
     | 
    
         
             
                    s(:int, 1),
         
     | 
| 
         @@ -4840,7 +4884,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       4840 
4884 
     | 
    
         
             
                    |            ~~~~~~~~~~ expression (rescue.resbody)
         
     | 
| 
       4841 
4885 
     | 
    
         
             
                    |       ~~~~~~~~~~~~~~~ expression (rescue)
         
     | 
| 
       4842 
4886 
     | 
    
         
             
                    |~~~~~~~~~~~~~~~~~~~~~~ expression},
         
     | 
| 
       4843 
     | 
    
         
            -
                   
     | 
| 
      
 4887 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       4844 
4888 
     | 
    
         
             
              end
         
     | 
| 
       4845 
4889 
     | 
    
         | 
| 
       4846 
4890 
     | 
    
         
             
              def test_resbody_list
         
     | 
| 
         @@ -4982,7 +5026,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       4982 
5026 
     | 
    
         
             
                        s(:int, 1)))),
         
     | 
| 
       4983 
5027 
     | 
    
         
             
                  %q{p begin 1.times do 1 end end},
         
     | 
| 
       4984 
5028 
     | 
    
         
             
                  %{},
         
     | 
| 
       4985 
     | 
    
         
            -
                   
     | 
| 
      
 5029 
     | 
    
         
            +
                  SINCE_2_0)
         
     | 
| 
       4986 
5030 
     | 
    
         
             
              end
         
     | 
| 
       4987 
5031 
     | 
    
         | 
| 
       4988 
5032 
     | 
    
         
             
              def test_bug_cmdarg
         
     | 
| 
         @@ -5007,7 +5051,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5007 
5051 
     | 
    
         
             
                      s(:pair, s(:sym, :do), s(:true)))),
         
     | 
| 
       5008 
5052 
     | 
    
         
             
                  %q{assert do: true},
         
     | 
| 
       5009 
5053 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5010 
     | 
    
         
            -
                   
     | 
| 
      
 5054 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       5011 
5055 
     | 
    
         | 
| 
       5012 
5056 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       5013 
5057 
     | 
    
         
             
                  s(:send, nil, :f,
         
     | 
| 
         @@ -5022,7 +5066,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5022 
5066 
     | 
    
         
             
                            s(:args), nil))))),
         
     | 
| 
       5023 
5067 
     | 
    
         
             
                  %q{f x: -> do meth do end end},
         
     | 
| 
       5024 
5068 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5025 
     | 
    
         
            -
                   
     | 
| 
      
 5069 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       5026 
5070 
     | 
    
         
             
              end
         
     | 
| 
       5027 
5071 
     | 
    
         | 
| 
       5028 
5072 
     | 
    
         
             
              def test_file_line_non_literals
         
     | 
| 
         @@ -5069,7 +5113,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5069 
5113 
     | 
    
         
             
                      s(:str, "")),
         
     | 
| 
       5070 
5114 
     | 
    
         
             
                    %q{/\xa8/n =~ ""}.force_encoding(Encoding::UTF_8),
         
     | 
| 
       5071 
5115 
     | 
    
         
             
                    %{},
         
     | 
| 
       5072 
     | 
    
         
            -
                     
     | 
| 
      
 5116 
     | 
    
         
            +
                    SINCE_1_9)
         
     | 
| 
       5073 
5117 
     | 
    
         
             
                end
         
     | 
| 
       5074 
5118 
     | 
    
         
             
              end
         
     | 
| 
       5075 
5119 
     | 
    
         | 
| 
         @@ -5101,7 +5145,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5101 
5145 
     | 
    
         
             
                  [:error, :unicode_point_too_large],
         
     | 
| 
       5102 
5146 
     | 
    
         
             
                  %q{"\u{120 120000}"},
         
     | 
| 
       5103 
5147 
     | 
    
         
             
                  %q{        ~~~~~~ location},
         
     | 
| 
       5104 
     | 
    
         
            -
                   
     | 
| 
      
 5148 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       5105 
5149 
     | 
    
         
             
              end
         
     | 
| 
       5106 
5150 
     | 
    
         | 
| 
       5107 
5151 
     | 
    
         
             
              def test_on_error
         
     | 
| 
         @@ -5224,7 +5268,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5224 
5268 
     | 
    
         
             
                        nil))),
         
     | 
| 
       5225 
5269 
     | 
    
         
             
                  %q{bar def foo; self.each do end end},
         
     | 
| 
       5226 
5270 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5227 
     | 
    
         
            -
                   
     | 
| 
      
 5271 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       5228 
5272 
     | 
    
         
             
              end
         
     | 
| 
       5229 
5273 
     | 
    
         | 
| 
       5230 
5274 
     | 
    
         
             
              def test_bug_do_block_in_cmdarg
         
     | 
| 
         @@ -5261,7 +5305,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5261 
5305 
     | 
    
         
             
                  s(:while, s(:send, s(:begin, s(:true)), :"!"), nil),
         
     | 
| 
       5262 
5306 
     | 
    
         
             
                  %q{while not (true) do end},
         
     | 
| 
       5263 
5307 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5264 
     | 
    
         
            -
                   
     | 
| 
      
 5308 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       5265 
5309 
     | 
    
         
             
              end
         
     | 
| 
       5266 
5310 
     | 
    
         | 
| 
       5267 
5311 
     | 
    
         
             
              def test_bug_rescue_empty_else
         
     | 
| 
         @@ -5322,14 +5366,14 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5322 
5366 
     | 
    
         
             
                  [:error, :invalid_encoding],
         
     | 
| 
       5323 
5367 
     | 
    
         
             
                  %q{?\xc3},
         
     | 
| 
       5324 
5368 
     | 
    
         
             
                  %q{^^^^^ location},
         
     | 
| 
       5325 
     | 
    
         
            -
                   
     | 
| 
      
 5369 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       5326 
5370 
     | 
    
         | 
| 
       5327 
5371 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       5328 
5372 
     | 
    
         
             
                  s(:str, "проверка"),
         
     | 
| 
       5329 
5373 
     | 
    
         
             
                  %q{# coding:utf-8
         
     | 
| 
       5330 
5374 
     | 
    
         
             
                     "\xD0\xBF\xD1\x80\xD0\xBE\xD0\xB2\xD0\xB5\xD1\x80\xD0\xBA\xD0\xB0"},
         
     | 
| 
       5331 
5375 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5332 
     | 
    
         
            -
                   
     | 
| 
      
 5376 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       5333 
5377 
     | 
    
         
             
              end
         
     | 
| 
       5334 
5378 
     | 
    
         | 
| 
       5335 
5379 
     | 
    
         
             
              def test_ruby_bug_9669
         
     | 
| 
         @@ -5337,7 +5381,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5337 
5381 
     | 
    
         
             
                  s(:def, :a, s(:args, s(:kwarg, :b)), s(:return)),
         
     | 
| 
       5338 
5382 
     | 
    
         
             
                  %Q{def a b:\nreturn\nend},
         
     | 
| 
       5339 
5383 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5340 
     | 
    
         
            -
                   
     | 
| 
      
 5384 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       5341 
5385 
     | 
    
         | 
| 
       5342 
5386 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       5343 
5387 
     | 
    
         
             
                  s(:lvasgn, :o,
         
     | 
| 
         @@ -5345,7 +5389,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5345 
5389 
     | 
    
         
             
                      s(:pair, s(:sym, :a), s(:int, 1)))),
         
     | 
| 
       5346 
5390 
     | 
    
         
             
                  %Q{o = {\na:\n1\n}},
         
     | 
| 
       5347 
5391 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5348 
     | 
    
         
            -
                   
     | 
| 
      
 5392 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       5349 
5393 
     | 
    
         
             
              end
         
     | 
| 
       5350 
5394 
     | 
    
         | 
| 
       5351 
5395 
     | 
    
         
             
              def test_ruby_bug_10279
         
     | 
| 
         @@ -5355,10 +5399,25 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5355 
5399 
     | 
    
         
             
                    s(:if, s(:true), s(:int, 42), nil))),
         
     | 
| 
       5356 
5400 
     | 
    
         
             
                  %q{{a: if true then 42 end}},
         
     | 
| 
       5357 
5401 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5358 
     | 
    
         
            -
                   
     | 
| 
      
 5402 
     | 
    
         
            +
                  SINCE_2_1)
         
     | 
| 
       5359 
5403 
     | 
    
         
             
              end
         
     | 
| 
       5360 
5404 
     | 
    
         | 
| 
       5361 
5405 
     | 
    
         
             
              def test_ruby_bug_10653
         
     | 
| 
      
 5406 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 5407 
     | 
    
         
            +
                  s(:if,
         
     | 
| 
      
 5408 
     | 
    
         
            +
                    s(:true),
         
     | 
| 
      
 5409 
     | 
    
         
            +
                    s(:block,
         
     | 
| 
      
 5410 
     | 
    
         
            +
                      s(:send,
         
     | 
| 
      
 5411 
     | 
    
         
            +
                        s(:int, 1), :tap),
         
     | 
| 
      
 5412 
     | 
    
         
            +
                      s(:args,
         
     | 
| 
      
 5413 
     | 
    
         
            +
                        s(:procarg0, :n)),
         
     | 
| 
      
 5414 
     | 
    
         
            +
                      s(:send, nil, :p,
         
     | 
| 
      
 5415 
     | 
    
         
            +
                        s(:lvar, :n))),
         
     | 
| 
      
 5416 
     | 
    
         
            +
                    s(:int, 0)),
         
     | 
| 
      
 5417 
     | 
    
         
            +
                  %q{true ? 1.tap do |n| p n end : 0},
         
     | 
| 
      
 5418 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5419 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
      
 5420 
     | 
    
         
            +
             
     | 
| 
       5362 
5421 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       5363 
5422 
     | 
    
         
             
                  s(:if,
         
     | 
| 
       5364 
5423 
     | 
    
         
             
                    s(:true),
         
     | 
| 
         @@ -5372,7 +5431,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5372 
5431 
     | 
    
         
             
                    s(:int, 0)),
         
     | 
| 
       5373 
5432 
     | 
    
         
             
                  %q{true ? 1.tap do |n| p n end : 0},
         
     | 
| 
       5374 
5433 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5375 
     | 
    
         
            -
                   
     | 
| 
      
 5434 
     | 
    
         
            +
                  %w(1.8))
         
     | 
| 
       5376 
5435 
     | 
    
         | 
| 
       5377 
5436 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       5378 
5437 
     | 
    
         
             
                  s(:if,
         
     | 
| 
         @@ -5410,7 +5469,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5410 
5469 
     | 
    
         
             
                      s(:block, s(:send, nil, :a), s(:args), nil))),
         
     | 
| 
       5411 
5470 
     | 
    
         
             
                  %q{p ->() do a() do end end},
         
     | 
| 
       5412 
5471 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5413 
     | 
    
         
            -
                   
     | 
| 
      
 5472 
     | 
    
         
            +
                  SINCE_2_1) # no 1.9 backport
         
     | 
| 
       5414 
5473 
     | 
    
         
             
              end
         
     | 
| 
       5415 
5474 
     | 
    
         | 
| 
       5416 
5475 
     | 
    
         
             
              def test_ruby_bug_11380
         
     | 
| 
         @@ -5427,7 +5486,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5427 
5486 
     | 
    
         
             
                    nil),
         
     | 
| 
       5428 
5487 
     | 
    
         
             
                  %q{p -> { :hello }, a: 1 do end},
         
     | 
| 
       5429 
5488 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5430 
     | 
    
         
            -
                   
     | 
| 
      
 5489 
     | 
    
         
            +
                  SINCE_2_1) # no 1.9 backport
         
     | 
| 
       5431 
5490 
     | 
    
         
             
              end
         
     | 
| 
       5432 
5491 
     | 
    
         | 
| 
       5433 
5492 
     | 
    
         
             
              def test_ruby_bug_11989
         
     | 
| 
         @@ -5436,7 +5495,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5436 
5495 
     | 
    
         
             
                    s(:str, "x\n   y\n")),
         
     | 
| 
       5437 
5496 
     | 
    
         
             
                  %Q{p <<~"E"\n  x\\n   y\nE},
         
     | 
| 
       5438 
5497 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5439 
     | 
    
         
            -
                   
     | 
| 
      
 5498 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       5440 
5499 
     | 
    
         
             
              end
         
     | 
| 
       5441 
5500 
     | 
    
         | 
| 
       5442 
5501 
     | 
    
         
             
              def test_ruby_bug_11990
         
     | 
| 
         @@ -5447,7 +5506,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5447 
5506 
     | 
    
         
             
                      s(:str, "  y"))),
         
     | 
| 
       5448 
5507 
     | 
    
         
             
                  %Q{p <<~E "  y"\n  x\nE},
         
     | 
| 
       5449 
5508 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5450 
     | 
    
         
            -
                   
     | 
| 
      
 5509 
     | 
    
         
            +
                  SINCE_2_3)
         
     | 
| 
       5451 
5510 
     | 
    
         
             
              end
         
     | 
| 
       5452 
5511 
     | 
    
         | 
| 
       5453 
5512 
     | 
    
         
             
              def test_ruby_bug_12073
         
     | 
| 
         @@ -5462,7 +5521,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5462 
5521 
     | 
    
         
             
                          s(:int, 1))))),
         
     | 
| 
       5463 
5522 
     | 
    
         
             
                  %q{a = 1; a b: 1},
         
     | 
| 
       5464 
5523 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5465 
     | 
    
         
            -
                   
     | 
| 
      
 5524 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       5466 
5525 
     | 
    
         | 
| 
       5467 
5526 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       5468 
5527 
     | 
    
         
             
                  s(:def, :foo,
         
     | 
| 
         @@ -5474,7 +5533,187 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5474 
5533 
     | 
    
         
             
                      s(:str, ""))),
         
     | 
| 
       5475 
5534 
     | 
    
         
             
                  %q{def foo raise; raise A::B, ''; end},
         
     | 
| 
       5476 
5535 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5477 
     | 
    
         
            -
                   
     | 
| 
      
 5536 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
      
 5537 
     | 
    
         
            +
              end
         
     | 
| 
      
 5538 
     | 
    
         
            +
             
     | 
| 
      
 5539 
     | 
    
         
            +
              def test_ruby_bug_12402
         
     | 
| 
      
 5540 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 5541 
     | 
    
         
            +
                  s(:lvasgn, :foo,
         
     | 
| 
      
 5542 
     | 
    
         
            +
                    s(:rescue,
         
     | 
| 
      
 5543 
     | 
    
         
            +
                      s(:send, nil, :raise,
         
     | 
| 
      
 5544 
     | 
    
         
            +
                        s(:lvar, :bar)),
         
     | 
| 
      
 5545 
     | 
    
         
            +
                      s(:resbody, nil, nil,
         
     | 
| 
      
 5546 
     | 
    
         
            +
                        s(:nil)), nil)),
         
     | 
| 
      
 5547 
     | 
    
         
            +
                  %q{foo = raise(bar) rescue nil},
         
     | 
| 
      
 5548 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5549 
     | 
    
         
            +
                  SINCE_2_4)
         
     | 
| 
      
 5550 
     | 
    
         
            +
             
     | 
| 
      
 5551 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 5552 
     | 
    
         
            +
                  s(:op_asgn,
         
     | 
| 
      
 5553 
     | 
    
         
            +
                    s(:lvasgn, :foo), :+,
         
     | 
| 
      
 5554 
     | 
    
         
            +
                    s(:rescue,
         
     | 
| 
      
 5555 
     | 
    
         
            +
                      s(:send, nil, :raise,
         
     | 
| 
      
 5556 
     | 
    
         
            +
                        s(:lvar, :bar)),
         
     | 
| 
      
 5557 
     | 
    
         
            +
                      s(:resbody, nil, nil,
         
     | 
| 
      
 5558 
     | 
    
         
            +
                        s(:nil)), nil)),
         
     | 
| 
      
 5559 
     | 
    
         
            +
                  %q{foo += raise(bar) rescue nil},
         
     | 
| 
      
 5560 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5561 
     | 
    
         
            +
                  SINCE_2_4)
         
     | 
| 
      
 5562 
     | 
    
         
            +
             
     | 
| 
      
 5563 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 5564 
     | 
    
         
            +
                  s(:op_asgn,
         
     | 
| 
      
 5565 
     | 
    
         
            +
                    s(:send,
         
     | 
| 
      
 5566 
     | 
    
         
            +
                      s(:lvar, :foo), :[],
         
     | 
| 
      
 5567 
     | 
    
         
            +
                      s(:int, 0)), :+,
         
     | 
| 
      
 5568 
     | 
    
         
            +
                    s(:rescue,
         
     | 
| 
      
 5569 
     | 
    
         
            +
                      s(:send, nil, :raise,
         
     | 
| 
      
 5570 
     | 
    
         
            +
                        s(:lvar, :bar)),
         
     | 
| 
      
 5571 
     | 
    
         
            +
                      s(:resbody, nil, nil,
         
     | 
| 
      
 5572 
     | 
    
         
            +
                        s(:nil)), nil)),
         
     | 
| 
      
 5573 
     | 
    
         
            +
                  %q{foo[0] += raise(bar) rescue nil},
         
     | 
| 
      
 5574 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5575 
     | 
    
         
            +
                  SINCE_2_4)
         
     | 
| 
      
 5576 
     | 
    
         
            +
             
     | 
| 
      
 5577 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 5578 
     | 
    
         
            +
                  s(:op_asgn,
         
     | 
| 
      
 5579 
     | 
    
         
            +
                    s(:send,
         
     | 
| 
      
 5580 
     | 
    
         
            +
                      s(:lvar, :foo), :m), :+,
         
     | 
| 
      
 5581 
     | 
    
         
            +
                    s(:rescue,
         
     | 
| 
      
 5582 
     | 
    
         
            +
                      s(:send, nil, :raise,
         
     | 
| 
      
 5583 
     | 
    
         
            +
                        s(:lvar, :bar)),
         
     | 
| 
      
 5584 
     | 
    
         
            +
                      s(:resbody, nil, nil,
         
     | 
| 
      
 5585 
     | 
    
         
            +
                        s(:nil)), nil)),
         
     | 
| 
      
 5586 
     | 
    
         
            +
                  %q{foo.m += raise(bar) rescue nil},
         
     | 
| 
      
 5587 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5588 
     | 
    
         
            +
                  SINCE_2_4)
         
     | 
| 
      
 5589 
     | 
    
         
            +
             
     | 
| 
      
 5590 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 5591 
     | 
    
         
            +
                  s(:op_asgn,
         
     | 
| 
      
 5592 
     | 
    
         
            +
                    s(:send,
         
     | 
| 
      
 5593 
     | 
    
         
            +
                      s(:lvar, :foo), :m), :+,
         
     | 
| 
      
 5594 
     | 
    
         
            +
                    s(:rescue,
         
     | 
| 
      
 5595 
     | 
    
         
            +
                      s(:send, nil, :raise,
         
     | 
| 
      
 5596 
     | 
    
         
            +
                        s(:lvar, :bar)),
         
     | 
| 
      
 5597 
     | 
    
         
            +
                      s(:resbody, nil, nil,
         
     | 
| 
      
 5598 
     | 
    
         
            +
                        s(:nil)), nil)),
         
     | 
| 
      
 5599 
     | 
    
         
            +
                  %q{foo::m += raise(bar) rescue nil},
         
     | 
| 
      
 5600 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5601 
     | 
    
         
            +
                  SINCE_2_4)
         
     | 
| 
      
 5602 
     | 
    
         
            +
             
     | 
| 
      
 5603 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 5604 
     | 
    
         
            +
                  s(:op_asgn,
         
     | 
| 
      
 5605 
     | 
    
         
            +
                    s(:send,
         
     | 
| 
      
 5606 
     | 
    
         
            +
                      s(:lvar, :foo), :C), :+,
         
     | 
| 
      
 5607 
     | 
    
         
            +
                    s(:rescue,
         
     | 
| 
      
 5608 
     | 
    
         
            +
                      s(:send, nil, :raise,
         
     | 
| 
      
 5609 
     | 
    
         
            +
                        s(:lvar, :bar)),
         
     | 
| 
      
 5610 
     | 
    
         
            +
                      s(:resbody, nil, nil,
         
     | 
| 
      
 5611 
     | 
    
         
            +
                        s(:nil)), nil)),
         
     | 
| 
      
 5612 
     | 
    
         
            +
                  %q{foo.C += raise(bar) rescue nil},
         
     | 
| 
      
 5613 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5614 
     | 
    
         
            +
                  SINCE_2_4)
         
     | 
| 
      
 5615 
     | 
    
         
            +
             
     | 
| 
      
 5616 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 5617 
     | 
    
         
            +
                  s(:or_asgn,
         
     | 
| 
      
 5618 
     | 
    
         
            +
                    s(:casgn,
         
     | 
| 
      
 5619 
     | 
    
         
            +
                      s(:lvar, :foo), :C),
         
     | 
| 
      
 5620 
     | 
    
         
            +
                    s(:rescue,
         
     | 
| 
      
 5621 
     | 
    
         
            +
                      s(:send, nil, :raise,
         
     | 
| 
      
 5622 
     | 
    
         
            +
                        s(:lvar, :bar)),
         
     | 
| 
      
 5623 
     | 
    
         
            +
                      s(:resbody, nil, nil,
         
     | 
| 
      
 5624 
     | 
    
         
            +
                        s(:nil)), nil)),
         
     | 
| 
      
 5625 
     | 
    
         
            +
                  %q{foo::C ||= raise(bar) rescue nil},
         
     | 
| 
      
 5626 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5627 
     | 
    
         
            +
                  SINCE_2_4)
         
     | 
| 
      
 5628 
     | 
    
         
            +
             
     | 
| 
      
 5629 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 5630 
     | 
    
         
            +
                  s(:lvasgn, :foo,
         
     | 
| 
      
 5631 
     | 
    
         
            +
                    s(:rescue,
         
     | 
| 
      
 5632 
     | 
    
         
            +
                      s(:send, nil, :raise,
         
     | 
| 
      
 5633 
     | 
    
         
            +
                        s(:lvar, :bar)),
         
     | 
| 
      
 5634 
     | 
    
         
            +
                      s(:resbody, nil, nil,
         
     | 
| 
      
 5635 
     | 
    
         
            +
                        s(:nil)), nil)),
         
     | 
| 
      
 5636 
     | 
    
         
            +
                  %q{foo = raise bar rescue nil},
         
     | 
| 
      
 5637 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5638 
     | 
    
         
            +
                  SINCE_2_4)
         
     | 
| 
      
 5639 
     | 
    
         
            +
             
     | 
| 
      
 5640 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 5641 
     | 
    
         
            +
                  s(:op_asgn,
         
     | 
| 
      
 5642 
     | 
    
         
            +
                    s(:lvasgn, :foo), :+,
         
     | 
| 
      
 5643 
     | 
    
         
            +
                    s(:rescue,
         
     | 
| 
      
 5644 
     | 
    
         
            +
                      s(:send, nil, :raise,
         
     | 
| 
      
 5645 
     | 
    
         
            +
                        s(:lvar, :bar)),
         
     | 
| 
      
 5646 
     | 
    
         
            +
                      s(:resbody, nil, nil,
         
     | 
| 
      
 5647 
     | 
    
         
            +
                        s(:nil)), nil)),
         
     | 
| 
      
 5648 
     | 
    
         
            +
                  %q{foo += raise bar rescue nil},
         
     | 
| 
      
 5649 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5650 
     | 
    
         
            +
                  SINCE_2_4)
         
     | 
| 
      
 5651 
     | 
    
         
            +
             
     | 
| 
      
 5652 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 5653 
     | 
    
         
            +
                  s(:op_asgn,
         
     | 
| 
      
 5654 
     | 
    
         
            +
                    s(:send,
         
     | 
| 
      
 5655 
     | 
    
         
            +
                      s(:lvar, :foo), :[],
         
     | 
| 
      
 5656 
     | 
    
         
            +
                      s(:int, 0)), :+,
         
     | 
| 
      
 5657 
     | 
    
         
            +
                    s(:rescue,
         
     | 
| 
      
 5658 
     | 
    
         
            +
                      s(:send, nil, :raise,
         
     | 
| 
      
 5659 
     | 
    
         
            +
                        s(:lvar, :bar)),
         
     | 
| 
      
 5660 
     | 
    
         
            +
                      s(:resbody, nil, nil,
         
     | 
| 
      
 5661 
     | 
    
         
            +
                        s(:nil)), nil)),
         
     | 
| 
      
 5662 
     | 
    
         
            +
                  %q{foo[0] += raise bar rescue nil},
         
     | 
| 
      
 5663 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5664 
     | 
    
         
            +
                  SINCE_2_4)
         
     | 
| 
      
 5665 
     | 
    
         
            +
             
     | 
| 
      
 5666 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 5667 
     | 
    
         
            +
                  s(:op_asgn,
         
     | 
| 
      
 5668 
     | 
    
         
            +
                    s(:send,
         
     | 
| 
      
 5669 
     | 
    
         
            +
                      s(:lvar, :foo), :m), :+,
         
     | 
| 
      
 5670 
     | 
    
         
            +
                    s(:rescue,
         
     | 
| 
      
 5671 
     | 
    
         
            +
                      s(:send, nil, :raise,
         
     | 
| 
      
 5672 
     | 
    
         
            +
                        s(:lvar, :bar)),
         
     | 
| 
      
 5673 
     | 
    
         
            +
                      s(:resbody, nil, nil,
         
     | 
| 
      
 5674 
     | 
    
         
            +
                        s(:nil)), nil)),
         
     | 
| 
      
 5675 
     | 
    
         
            +
                  %q{foo.m += raise bar rescue nil},
         
     | 
| 
      
 5676 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5677 
     | 
    
         
            +
                  SINCE_2_4)
         
     | 
| 
      
 5678 
     | 
    
         
            +
             
     | 
| 
      
 5679 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 5680 
     | 
    
         
            +
                  s(:op_asgn,
         
     | 
| 
      
 5681 
     | 
    
         
            +
                    s(:send,
         
     | 
| 
      
 5682 
     | 
    
         
            +
                      s(:lvar, :foo), :m), :+,
         
     | 
| 
      
 5683 
     | 
    
         
            +
                    s(:rescue,
         
     | 
| 
      
 5684 
     | 
    
         
            +
                      s(:send, nil, :raise,
         
     | 
| 
      
 5685 
     | 
    
         
            +
                        s(:lvar, :bar)),
         
     | 
| 
      
 5686 
     | 
    
         
            +
                      s(:resbody, nil, nil,
         
     | 
| 
      
 5687 
     | 
    
         
            +
                        s(:nil)), nil)),
         
     | 
| 
      
 5688 
     | 
    
         
            +
                  %q{foo::m += raise bar rescue nil},
         
     | 
| 
      
 5689 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5690 
     | 
    
         
            +
                  SINCE_2_4)
         
     | 
| 
      
 5691 
     | 
    
         
            +
             
     | 
| 
      
 5692 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 5693 
     | 
    
         
            +
                  s(:op_asgn,
         
     | 
| 
      
 5694 
     | 
    
         
            +
                    s(:send,
         
     | 
| 
      
 5695 
     | 
    
         
            +
                      s(:lvar, :foo), :C), :+,
         
     | 
| 
      
 5696 
     | 
    
         
            +
                    s(:rescue,
         
     | 
| 
      
 5697 
     | 
    
         
            +
                      s(:send, nil, :raise,
         
     | 
| 
      
 5698 
     | 
    
         
            +
                        s(:lvar, :bar)),
         
     | 
| 
      
 5699 
     | 
    
         
            +
                      s(:resbody, nil, nil,
         
     | 
| 
      
 5700 
     | 
    
         
            +
                        s(:nil)), nil)),
         
     | 
| 
      
 5701 
     | 
    
         
            +
                  %q{foo.C += raise bar rescue nil},
         
     | 
| 
      
 5702 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5703 
     | 
    
         
            +
                  SINCE_2_4)
         
     | 
| 
      
 5704 
     | 
    
         
            +
             
     | 
| 
      
 5705 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 5706 
     | 
    
         
            +
                  s(:or_asgn,
         
     | 
| 
      
 5707 
     | 
    
         
            +
                    s(:casgn,
         
     | 
| 
      
 5708 
     | 
    
         
            +
                      s(:lvar, :foo), :C),
         
     | 
| 
      
 5709 
     | 
    
         
            +
                    s(:rescue,
         
     | 
| 
      
 5710 
     | 
    
         
            +
                      s(:send, nil, :raise,
         
     | 
| 
      
 5711 
     | 
    
         
            +
                        s(:lvar, :bar)),
         
     | 
| 
      
 5712 
     | 
    
         
            +
                      s(:resbody, nil, nil,
         
     | 
| 
      
 5713 
     | 
    
         
            +
                        s(:nil)), nil)),
         
     | 
| 
      
 5714 
     | 
    
         
            +
                  %q{foo::C ||= raise bar rescue nil},
         
     | 
| 
      
 5715 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5716 
     | 
    
         
            +
                  SINCE_2_4)
         
     | 
| 
       5478 
5717 
     | 
    
         
             
              end
         
     | 
| 
       5479 
5718 
     | 
    
         | 
| 
       5480 
5719 
     | 
    
         
             
              def test_ruby_bug_12686
         
     | 
| 
         @@ -5487,7 +5726,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5487 
5726 
     | 
    
         
             
                          s(:nil)), nil))),
         
     | 
| 
       5488 
5727 
     | 
    
         
             
                  %q{f (g rescue nil)},
         
     | 
| 
       5489 
5728 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5490 
     | 
    
         
            -
                   
     | 
| 
      
 5729 
     | 
    
         
            +
                  SINCE_2_4)
         
     | 
| 
       5491 
5730 
     | 
    
         | 
| 
       5492 
5731 
     | 
    
         
             
                assert_diagnoses(
         
     | 
| 
       5493 
5732 
     | 
    
         
             
                  [:error, :unexpected_token, {:token => 'kRESCUE_MOD'}],
         
     | 
| 
         @@ -5504,17 +5743,29 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5504 
5743 
     | 
    
         
             
                    s(:str, "#")),
         
     | 
| 
       5505 
5744 
     | 
    
         
             
                  %q{[/()\\1/, ?#]},
         
     | 
| 
       5506 
5745 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5507 
     | 
    
         
            -
                   
     | 
| 
      
 5746 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       5508 
5747 
     | 
    
         
             
              end
         
     | 
| 
       5509 
5748 
     | 
    
         | 
| 
       5510 
5749 
     | 
    
         
             
              def test_parser_bug_272
         
     | 
| 
      
 5750 
     | 
    
         
            +
                assert_parses(
         
     | 
| 
      
 5751 
     | 
    
         
            +
                  s(:block,
         
     | 
| 
      
 5752 
     | 
    
         
            +
                    s(:send, nil, :a,
         
     | 
| 
      
 5753 
     | 
    
         
            +
                      s(:ivar, :@b)),
         
     | 
| 
      
 5754 
     | 
    
         
            +
                    s(:args,
         
     | 
| 
      
 5755 
     | 
    
         
            +
                      s(:procarg0, :c)), nil),
         
     | 
| 
      
 5756 
     | 
    
         
            +
                  %q{a @b do |c|;end},
         
     | 
| 
      
 5757 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5758 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
      
 5759 
     | 
    
         
            +
             
     | 
| 
       5511 
5760 
     | 
    
         
             
                assert_parses(
         
     | 
| 
       5512 
5761 
     | 
    
         
             
                  s(:block,
         
     | 
| 
       5513 
5762 
     | 
    
         
             
                    s(:send, nil, :a,
         
     | 
| 
       5514 
5763 
     | 
    
         
             
                      s(:ivar, :@b)),
         
     | 
| 
       5515 
5764 
     | 
    
         
             
                    s(:args,
         
     | 
| 
       5516 
5765 
     | 
    
         
             
                      s(:arg, :c)), nil),
         
     | 
| 
       5517 
     | 
    
         
            -
                  %q{a @b do |c|;end} 
     | 
| 
      
 5766 
     | 
    
         
            +
                  %q{a @b do |c|;end},
         
     | 
| 
      
 5767 
     | 
    
         
            +
                  %q{},
         
     | 
| 
      
 5768 
     | 
    
         
            +
                  %w(1.8))
         
     | 
| 
       5518 
5769 
     | 
    
         
             
              end
         
     | 
| 
       5519 
5770 
     | 
    
         | 
| 
       5520 
5771 
     | 
    
         
             
              def test_bug_lambda_leakage
         
     | 
| 
         @@ -5527,7 +5778,7 @@ class TestParser < Minitest::Test 
     | 
|
| 
       5527 
5778 
     | 
    
         
             
                    s(:send, nil, :scope)),
         
     | 
| 
       5528 
5779 
     | 
    
         
             
                  %q{->(scope) {}; scope},
         
     | 
| 
       5529 
5780 
     | 
    
         
             
                  %q{},
         
     | 
| 
       5530 
     | 
    
         
            -
                   
     | 
| 
      
 5781 
     | 
    
         
            +
                  SINCE_1_9)
         
     | 
| 
       5531 
5782 
     | 
    
         
             
              end
         
     | 
| 
       5532 
5783 
     | 
    
         | 
| 
       5533 
5784 
     | 
    
         
             
              def test_bug_regex_verification
         
     |