parser 2.6.4.1 → 2.6.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +10 -10
- data/CHANGELOG.md +88 -0
- data/lib/parser/current.rb +3 -3
- data/lib/parser/lexer.rl +32 -2
- data/lib/parser/macruby.y +1 -1
- data/lib/parser/ruby18.y +1 -1
- data/lib/parser/ruby19.y +1 -1
- data/lib/parser/ruby20.y +1 -1
- data/lib/parser/ruby21.y +1 -1
- data/lib/parser/ruby22.y +1 -1
- data/lib/parser/ruby23.y +1 -1
- data/lib/parser/ruby24.y +1 -1
- data/lib/parser/ruby25.y +1 -1
- data/lib/parser/ruby26.y +1 -1
- data/lib/parser/ruby27.y +1 -1
- data/lib/parser/rubymotion.y +1 -1
- data/lib/parser/source/tree_rewriter.rb +1 -1
- data/lib/parser/version.rb +1 -1
- data/test/test_lexer.rb +18 -10
- data/test/test_parser.rb +91 -26
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c12b17e36f142aa8aacc1aae95cd464ea9239cf526d973b7b1ed3f0825fc7698
|
4
|
+
data.tar.gz: 49948dbdc512a19d0b02d5edea2e12ff4eed8c89a2827728e5f0f9a618109b44
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67bbf82221c9795d5a892f51ccb3c51835657448842a078bbcee88b8b1ef649643600d01d2c1c0b2e59982a774803a3a780538c433e8cc3a4fdfe8168838a697
|
7
|
+
data.tar.gz: 9d7053f65800e04f8f2c0b1f344d9f83efd1282744aba49c02b384ea4242a3bcc5b65b7ac3eca4c4d0c34317ed70393a1eb26e146b34517ad75810b9498eb0a7
|
data/.travis.yml
CHANGED
@@ -11,14 +11,14 @@ matrix:
|
|
11
11
|
- name: 2.3.8 / Parser tests
|
12
12
|
rvm: 2.3.8
|
13
13
|
script: bundle exec rake test_cov
|
14
|
-
- name: 2.4.
|
15
|
-
rvm: 2.4.
|
14
|
+
- name: 2.4.9 / Parser tests
|
15
|
+
rvm: 2.4.9
|
16
16
|
script: bundle exec rake test_cov
|
17
|
-
- name: 2.5.
|
18
|
-
rvm: 2.5.
|
17
|
+
- name: 2.5.7 / Parser tests
|
18
|
+
rvm: 2.5.7
|
19
19
|
script: bundle exec rake test_cov
|
20
|
-
- name: 2.6.
|
21
|
-
rvm: 2.6.
|
20
|
+
- name: 2.6.5 / Parser tests
|
21
|
+
rvm: 2.6.5
|
22
22
|
script: bundle exec rake test_cov
|
23
23
|
- name: ruby-head / Parser tests
|
24
24
|
rvm: ruby-head
|
@@ -29,11 +29,11 @@ matrix:
|
|
29
29
|
- name: rbx-2 / Parser tests
|
30
30
|
rvm: rbx-2
|
31
31
|
script: bundle exec rake test_cov
|
32
|
-
- name: 2.5.
|
33
|
-
rvm: 2.5.
|
32
|
+
- name: 2.5.7 / Rubocop tests
|
33
|
+
rvm: 2.5.7
|
34
34
|
script: ./ci/run_rubocop_specs
|
35
|
-
- name: 2.6.
|
36
|
-
rvm: 2.6.
|
35
|
+
- name: 2.6.5 / Rubocop tests
|
36
|
+
rvm: 2.6.5
|
37
37
|
script: ./ci/run_rubocop_specs
|
38
38
|
allow_failures:
|
39
39
|
- rvm: ruby-head
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,94 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
v2.6.4.1 (2019-09-12)
|
5
|
+
---------------------
|
6
|
+
|
7
|
+
Bugs fixed:
|
8
|
+
* lexer.rl: fix parsing of 'm a + b do end' (#605) (Ilya Bylich)
|
9
|
+
|
10
|
+
v2.6.4.0 (2019-08-30)
|
11
|
+
---------------------
|
12
|
+
|
13
|
+
API modifications:
|
14
|
+
* Added specs for heredocs with mixed encoding. (#581) (Ilya Bylich)
|
15
|
+
|
16
|
+
Features implemented:
|
17
|
+
* ruby27.y: Revert "pipeline operator" (#601) (Koichi ITO)
|
18
|
+
* ruby27.y: Fix parsing of mutiple assignment with rescue modifier (#600) (Koichi ITO)
|
19
|
+
* ruby27.y: hoisted out f_rest_marg. (#594) (Ilya Bylich)
|
20
|
+
* ruby27.y: added pipeline operator. (#592) (Ilya Bylich)
|
21
|
+
* ruby27.y: reject safe navigator in LHS of mass-assignment. (#586) (Ilya Bylich)
|
22
|
+
* lexer.rl: reject whitespaces in meta and control chars. (#585) (Ilya Bylich)
|
23
|
+
* lexer.rl: Reject numparams as symbol literals. (#582) (Ilya Bylich)
|
24
|
+
* ruby27.y: Added numbered parameters support. (#565) (Ilya Bylich)
|
25
|
+
* lexer.rl: Reject \n and \r in heredoc identifiers starting from 2.7. (#575) (Ilya Bylich)
|
26
|
+
|
27
|
+
Bugs fixed:
|
28
|
+
* ruby-parse: print empty string when --emit-json and empty input are given. (#590) (Ilya Bylich)
|
29
|
+
* AST_FORMAT: fixed documentation of the string with interpolation. (#589) (Ilya Bylich)
|
30
|
+
* builder.rb, processor.rb: Changed format of the procarg0 node. (#587) (Ilya Bylich)
|
31
|
+
|
32
|
+
v2.6.3.0 (2019-04-28)
|
33
|
+
---------------------
|
34
|
+
|
35
|
+
Features implemented:
|
36
|
+
* ruby27.y: Added beginless ranges support. (#570) (Ilya Bylich)
|
37
|
+
|
38
|
+
v2.6.2.1 (2019-04-05)
|
39
|
+
---------------------
|
40
|
+
|
41
|
+
API modifications:
|
42
|
+
* Bump 2.4 branch to 2.4.6. (#569) (Ilya Bylich)
|
43
|
+
* Lexer should know about current parsing context. (#566) (Ilya Bylich)
|
44
|
+
|
45
|
+
v2.6.2.0 (2019-03-21)
|
46
|
+
---------------------
|
47
|
+
|
48
|
+
API modifications:
|
49
|
+
* Bump ruby versions to 2.5.5 and 2.6.2. (#563) (Ilya Bylich)
|
50
|
+
* Bump Ruby version to 2.6.1. (#554) (Ilya Bylich)
|
51
|
+
|
52
|
+
Features implemented:
|
53
|
+
* ruby27.y: dsym should be treated as string. (#560) (Ilya Bylich)
|
54
|
+
* ruby27.y: Refactored symbol rules. (#557) (Ilya Bylich)
|
55
|
+
* ruby27.y: Added method reference operator. (#556) (Ilya Bylich)
|
56
|
+
* ruby27.y: branch parser. (#546) (Ilya Bylich)
|
57
|
+
|
58
|
+
v2.6.0.0 (2019-01-16)
|
59
|
+
---------------------
|
60
|
+
|
61
|
+
API modifications:
|
62
|
+
* 2.6.0 was released, unmark is as -dev. (#538) (Ilya Bylich)
|
63
|
+
|
64
|
+
Bugs fixed:
|
65
|
+
* Fix parsing of "\\\n" escaped sequences in various literals. (#539) (Ilya Bylich)
|
66
|
+
|
67
|
+
v2.5.3.0 (2018-10-29)
|
68
|
+
---------------------
|
69
|
+
|
70
|
+
Bugs fixed:
|
71
|
+
* lexer.rl: Fix parsing of 'm :key => m do; m() do end; end'. (#526) (Ilya Bylich)
|
72
|
+
* lexer.rl: Fix parsing of ambiguous 1re. (#523) (Ilya Bylich)
|
73
|
+
|
74
|
+
v2.5.1.2 (2018-07-10)
|
75
|
+
---------------------
|
76
|
+
|
77
|
+
Bugs fixed:
|
78
|
+
* lexer.rl: Partially revert 5ba072d and properly handle 'm = -> *args do end'. (Ilya Bylich)
|
79
|
+
|
80
|
+
v2.5.1.1 (2018-07-10)
|
81
|
+
---------------------
|
82
|
+
|
83
|
+
Features implemented:
|
84
|
+
* ruby26.y: Endless ranges support. (Ilya Bylich)
|
85
|
+
|
86
|
+
Bugs fixed:
|
87
|
+
* lexer.rl: Fix parsing of 'm = -> *args do end'. (Ilya Bylich)
|
88
|
+
* AST::Processor: Properly recurse into "kwsplat" nodes (Nelson Elhage)
|
89
|
+
* ruby24, ruby25, ruby26: Fix cmdargs after command_args followed by tLBRACE_ARG. This commit tracks upstream commit ruby/ruby@f168dbd. (Ilya Bylich)
|
90
|
+
* lexer.rl: Fix parsing of `let (:a) { m do; end }`. (Ilya Bylich)
|
91
|
+
|
4
92
|
v2.5.1.0 (2018-04-12)
|
5
93
|
---------------------
|
6
94
|
|
data/lib/parser/current.rb
CHANGED
@@ -48,7 +48,7 @@ module Parser
|
|
48
48
|
CurrentRuby = Ruby23
|
49
49
|
|
50
50
|
when /^2\.4\./
|
51
|
-
current_version = '2.4.
|
51
|
+
current_version = '2.4.9'
|
52
52
|
if RUBY_VERSION != current_version
|
53
53
|
warn_syntax_deviation 'parser/ruby24', current_version
|
54
54
|
end
|
@@ -57,7 +57,7 @@ module Parser
|
|
57
57
|
CurrentRuby = Ruby24
|
58
58
|
|
59
59
|
when /^2\.5\./
|
60
|
-
current_version = '2.5.
|
60
|
+
current_version = '2.5.7'
|
61
61
|
if RUBY_VERSION != current_version
|
62
62
|
warn_syntax_deviation 'parser/ruby25', current_version
|
63
63
|
end
|
@@ -66,7 +66,7 @@ module Parser
|
|
66
66
|
CurrentRuby = Ruby25
|
67
67
|
|
68
68
|
when /^2\.6\./
|
69
|
-
current_version = '2.6.
|
69
|
+
current_version = '2.6.5'
|
70
70
|
if RUBY_VERSION != current_version
|
71
71
|
warn_syntax_deviation 'parser/ruby26', current_version
|
72
72
|
end
|
data/lib/parser/lexer.rl
CHANGED
@@ -89,7 +89,7 @@ class Parser::Lexer
|
|
89
89
|
|
90
90
|
REGEXP_META_CHARACTERS = Regexp.union(*"\\$()*+.<>?[]^{|}".chars).freeze
|
91
91
|
|
92
|
-
NUMPARAM_MAX =
|
92
|
+
NUMPARAM_MAX = 9
|
93
93
|
|
94
94
|
attr_reader :source_buffer
|
95
95
|
attr_reader :max_numparam_stack
|
@@ -2339,7 +2339,19 @@ class Parser::Lexer
|
|
2339
2339
|
p = p - tok.length + 2
|
2340
2340
|
fnext expr_dot; fbreak; };
|
2341
2341
|
|
2342
|
-
'.:'
|
2342
|
+
'.:'
|
2343
|
+
=> {
|
2344
|
+
if @version >= 27
|
2345
|
+
emit_table(PUNCTUATION)
|
2346
|
+
else
|
2347
|
+
emit(:tDOT, tok(@ts, @ts + 1), @ts, @ts + 1)
|
2348
|
+
fhold;
|
2349
|
+
end
|
2350
|
+
|
2351
|
+
fnext expr_dot; fbreak;
|
2352
|
+
};
|
2353
|
+
|
2354
|
+
'.' | '&.' | '::'
|
2343
2355
|
=> { emit_table(PUNCTUATION)
|
2344
2356
|
fnext expr_dot; fbreak; };
|
2345
2357
|
|
@@ -2453,7 +2465,25 @@ class Parser::Lexer
|
|
2453
2465
|
leading_dot := |*
|
2454
2466
|
# Insane leading dots:
|
2455
2467
|
# a #comment
|
2468
|
+
# # post-2.7 comment
|
2456
2469
|
# .b: a.b
|
2470
|
+
|
2471
|
+
# Here we use '\n' instead of w_newline to not modify @newline_s
|
2472
|
+
# and eventually properly emit tNL
|
2473
|
+
(w_space_comment '\n')+
|
2474
|
+
=> {
|
2475
|
+
if @version < 27
|
2476
|
+
# Ruby before 2.7 doesn't support comments before leading dot.
|
2477
|
+
# If a line after "a" starts with a comment then "a" is a self-contained statement.
|
2478
|
+
# So in that case we emit a special tNL token and start reading the
|
2479
|
+
# next line as a separate statement.
|
2480
|
+
#
|
2481
|
+
# Note: block comments before leading dot are not supported on any version of Ruby.
|
2482
|
+
emit(:tNL, nil, @newline_s, @newline_s + 1)
|
2483
|
+
fhold; fnext line_begin; fbreak;
|
2484
|
+
end
|
2485
|
+
};
|
2486
|
+
|
2457
2487
|
c_space* %{ tm = p } ('.' | '&.')
|
2458
2488
|
=> { p = tm - 1; fgoto expr_end; };
|
2459
2489
|
|
data/lib/parser/macruby.y
CHANGED
data/lib/parser/ruby18.y
CHANGED
data/lib/parser/ruby19.y
CHANGED
data/lib/parser/ruby20.y
CHANGED
data/lib/parser/ruby21.y
CHANGED
data/lib/parser/ruby22.y
CHANGED
data/lib/parser/ruby23.y
CHANGED
data/lib/parser/ruby24.y
CHANGED
data/lib/parser/ruby25.y
CHANGED
data/lib/parser/ruby26.y
CHANGED
data/lib/parser/ruby27.y
CHANGED
data/lib/parser/rubymotion.y
CHANGED
@@ -266,7 +266,7 @@ module Parser
|
|
266
266
|
|
267
267
|
def combine(range, attributes)
|
268
268
|
range = check_range_validity(range)
|
269
|
-
action = TreeRewriter::Action.new(range, @enforcer, attributes)
|
269
|
+
action = TreeRewriter::Action.new(range, @enforcer, **attributes)
|
270
270
|
@action_root = @action_root.combine(action)
|
271
271
|
self
|
272
272
|
end
|
data/lib/parser/version.rb
CHANGED
data/test/test_lexer.rb
CHANGED
@@ -477,14 +477,18 @@ class TestLexer < Minitest::Test
|
|
477
477
|
end
|
478
478
|
|
479
479
|
def test_comment
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
480
|
+
[26, 27].each do |version|
|
481
|
+
setup_lexer(version)
|
482
|
+
|
483
|
+
assert_scanned("1 # one\n# two\n2",
|
484
|
+
:tINTEGER, 1, [0, 1],
|
485
|
+
:tNL, nil, [7, 8],
|
486
|
+
:tINTEGER, 2, [14, 15])
|
484
487
|
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
+
assert_equal 2, @lex.comments.length
|
489
|
+
assert_equal '# one', @lex.comments[0].text
|
490
|
+
assert_equal '# two', @lex.comments[1].text
|
491
|
+
end
|
488
492
|
end
|
489
493
|
|
490
494
|
def test_comment_expr_beg
|
@@ -3559,6 +3563,8 @@ class TestLexer < Minitest::Test
|
|
3559
3563
|
end
|
3560
3564
|
|
3561
3565
|
def test_meth_ref
|
3566
|
+
setup_lexer(27)
|
3567
|
+
|
3562
3568
|
assert_scanned('foo.:bar',
|
3563
3569
|
:tIDENTIFIER, 'foo', [0, 3],
|
3564
3570
|
:tMETHREF, '.:', [3, 5],
|
@@ -3571,6 +3577,8 @@ class TestLexer < Minitest::Test
|
|
3571
3577
|
end
|
3572
3578
|
|
3573
3579
|
def test_meth_ref_unary_op
|
3580
|
+
setup_lexer(27)
|
3581
|
+
|
3574
3582
|
assert_scanned('foo.:+',
|
3575
3583
|
:tIDENTIFIER, 'foo', [0, 3],
|
3576
3584
|
:tMETHREF, '.:', [3, 5],
|
@@ -3646,11 +3654,11 @@ class TestLexer < Minitest::Test
|
|
3646
3654
|
assert_equal(@lex.max_numparam, 1)
|
3647
3655
|
|
3648
3656
|
setup_lexer(27)
|
3649
|
-
assert_scanned_numbered_parameter('@
|
3650
|
-
assert_equal(@lex.max_numparam,
|
3657
|
+
assert_scanned_numbered_parameter('@9')
|
3658
|
+
assert_equal(@lex.max_numparam, 9)
|
3651
3659
|
|
3652
3660
|
setup_lexer(27)
|
3653
|
-
refute_scanned_numbered_parameter('@
|
3661
|
+
refute_scanned_numbered_parameter('@10', :too_large_numparam)
|
3654
3662
|
|
3655
3663
|
setup_lexer(27)
|
3656
3664
|
refute_scanned_numbered_parameter('@01', :leading_zero_in_numparam)
|
data/test/test_parser.rb
CHANGED
@@ -5094,6 +5094,12 @@ class TestParser < Minitest::Test
|
|
5094
5094
|
%q{begin; 1; else; 2; end},
|
5095
5095
|
%q{ ~~~~ location},
|
5096
5096
|
SINCE_2_6)
|
5097
|
+
|
5098
|
+
assert_diagnoses(
|
5099
|
+
[:error, :useless_else],
|
5100
|
+
%q{begin; 1; else; end},
|
5101
|
+
%q{ ~~~~ location},
|
5102
|
+
SINCE_2_6)
|
5097
5103
|
end
|
5098
5104
|
|
5099
5105
|
def test_ensure
|
@@ -5668,7 +5674,9 @@ class TestParser < Minitest::Test
|
|
5668
5674
|
s(:def, :foo, s(:args),
|
5669
5675
|
s(:begin,
|
5670
5676
|
s(:begin, nil))),
|
5671
|
-
%q{def foo; else; end}
|
5677
|
+
%q{def foo; else; end},
|
5678
|
+
%q{},
|
5679
|
+
ALL_VERSIONS - SINCE_2_6)
|
5672
5680
|
end
|
5673
5681
|
|
5674
5682
|
def test_bug_heredoc_do
|
@@ -7206,7 +7214,7 @@ class TestParser < Minitest::Test
|
|
7206
7214
|
end
|
7207
7215
|
end
|
7208
7216
|
|
7209
|
-
def
|
7217
|
+
def test_meth_ref__27
|
7210
7218
|
assert_parses(
|
7211
7219
|
s(:meth_ref, s(:lvar, :foo), :bar),
|
7212
7220
|
%q{foo.:bar},
|
@@ -7224,6 +7232,20 @@ class TestParser < Minitest::Test
|
|
7224
7232
|
SINCE_2_7)
|
7225
7233
|
end
|
7226
7234
|
|
7235
|
+
def test_meth_ref__before_27
|
7236
|
+
assert_diagnoses(
|
7237
|
+
[:error, :unexpected_token, { :token => 'tCOLON' }],
|
7238
|
+
%q{foo.:bar},
|
7239
|
+
%q{ ^ location },
|
7240
|
+
ALL_VERSIONS - SINCE_2_7)
|
7241
|
+
|
7242
|
+
assert_diagnoses(
|
7243
|
+
[:error, :unexpected_token, { :token => 'tCOLON' }],
|
7244
|
+
%q{foo.:+@},
|
7245
|
+
%q{ ^ location },
|
7246
|
+
ALL_VERSIONS - SINCE_2_7)
|
7247
|
+
end
|
7248
|
+
|
7227
7249
|
def test_meth_ref_unsupported_newlines
|
7228
7250
|
assert_diagnoses(
|
7229
7251
|
[:error, :unexpected_token, { :token => 'tCOLON' }],
|
@@ -7273,31 +7295,31 @@ class TestParser < Minitest::Test
|
|
7273
7295
|
assert_parses(
|
7274
7296
|
s(:numblock,
|
7275
7297
|
s(:send, nil, :m),
|
7276
|
-
|
7298
|
+
9,
|
7277
7299
|
s(:send,
|
7278
7300
|
s(:numparam, 1), :+,
|
7279
|
-
s(:numparam,
|
7280
|
-
%q{m { @1 + @
|
7281
|
-
%q{
|
7301
|
+
s(:numparam, 9))),
|
7302
|
+
%q{m { @1 + @9 }},
|
7303
|
+
%q{^^^^^^^^^^^^^ expression
|
7282
7304
|
| ^^ name (send/2.numparam/1)
|
7283
7305
|
| ^^ expression (send/2.numparam/1)
|
7284
|
-
|
|
7285
|
-
|
|
7306
|
+
| ^^ name (send/2.numparam/2)
|
7307
|
+
| ^^ expression (send/2.numparam/2)},
|
7286
7308
|
SINCE_2_7)
|
7287
7309
|
|
7288
7310
|
assert_parses(
|
7289
7311
|
s(:numblock,
|
7290
7312
|
s(:send, nil, :m),
|
7291
|
-
|
7313
|
+
9,
|
7292
7314
|
s(:send,
|
7293
7315
|
s(:numparam, 1), :+,
|
7294
|
-
s(:numparam,
|
7295
|
-
%q{m do @1 + @
|
7296
|
-
%q{
|
7316
|
+
s(:numparam, 9))),
|
7317
|
+
%q{m do @1 + @9 end},
|
7318
|
+
%q{^^^^^^^^^^^^^^^^ expression
|
7297
7319
|
| ^^ name (send/2.numparam/1)
|
7298
7320
|
| ^^ expression (send/2.numparam/1)
|
7299
|
-
|
|
7300
|
-
|
|
7321
|
+
| ^^ name (send/2.numparam/2)
|
7322
|
+
| ^^ expression (send/2.numparam/2)},
|
7301
7323
|
SINCE_2_7)
|
7302
7324
|
|
7303
7325
|
# Lambdas
|
@@ -7305,31 +7327,31 @@ class TestParser < Minitest::Test
|
|
7305
7327
|
assert_parses(
|
7306
7328
|
s(:numblock,
|
7307
7329
|
s(:lambda),
|
7308
|
-
|
7330
|
+
9,
|
7309
7331
|
s(:send,
|
7310
7332
|
s(:numparam, 1), :+,
|
7311
|
-
s(:numparam,
|
7312
|
-
%q{-> { @1 + @
|
7313
|
-
%q{
|
7333
|
+
s(:numparam, 9))),
|
7334
|
+
%q{-> { @1 + @9}},
|
7335
|
+
%q{^^^^^^^^^^^^^ expression
|
7314
7336
|
| ^^ name (send.numparam/1)
|
7315
7337
|
| ^^ expression (send.numparam/1)
|
7316
|
-
|
|
7317
|
-
|
|
7338
|
+
| ^^ name (send.numparam/2)
|
7339
|
+
| ^^ expression (send.numparam/2)},
|
7318
7340
|
SINCE_2_7)
|
7319
7341
|
|
7320
7342
|
assert_parses(
|
7321
7343
|
s(:numblock,
|
7322
7344
|
s(:lambda),
|
7323
|
-
|
7345
|
+
9,
|
7324
7346
|
s(:send,
|
7325
7347
|
s(:numparam, 1), :+,
|
7326
|
-
s(:numparam,
|
7327
|
-
%q{-> do @1 + @
|
7328
|
-
%q{
|
7348
|
+
s(:numparam, 9))),
|
7349
|
+
%q{-> do @1 + @9 end},
|
7350
|
+
%q{^^^^^^^^^^^^^^^^^ expression
|
7329
7351
|
| ^^ name (send.numparam/1)
|
7330
7352
|
| ^^ expression (send.numparam/1)
|
7331
|
-
|
|
7332
|
-
|
|
7353
|
+
| ^^ name (send.numparam/2)
|
7354
|
+
| ^^ expression (send.numparam/2)},
|
7333
7355
|
SINCE_2_7)
|
7334
7356
|
end
|
7335
7357
|
|
@@ -7576,4 +7598,47 @@ class TestParser < Minitest::Test
|
|
7576
7598
|
%q{},
|
7577
7599
|
ALL_VERSIONS)
|
7578
7600
|
end
|
7601
|
+
|
7602
|
+
def test_comments_before_leading_dot__27
|
7603
|
+
assert_parses(
|
7604
|
+
s(:send,
|
7605
|
+
s(:send, nil, :a), :foo),
|
7606
|
+
%Q{a #\n#\n.foo\n},
|
7607
|
+
%q{},
|
7608
|
+
SINCE_2_7)
|
7609
|
+
|
7610
|
+
assert_parses(
|
7611
|
+
s(:csend,
|
7612
|
+
s(:send, nil, :a), :foo),
|
7613
|
+
%Q{a #\n#\n&.foo\n},
|
7614
|
+
%q{},
|
7615
|
+
SINCE_2_7)
|
7616
|
+
|
7617
|
+
assert_parses(
|
7618
|
+
s(:meth_ref,
|
7619
|
+
s(:send, nil, :a), :foo),
|
7620
|
+
%Q{a #\n#\n.:foo\n},
|
7621
|
+
%q{},
|
7622
|
+
SINCE_2_7)
|
7623
|
+
end
|
7624
|
+
|
7625
|
+
def test_comments_before_leading_dot__before_27
|
7626
|
+
assert_diagnoses(
|
7627
|
+
[:error, :unexpected_token, { :token => 'tDOT' }],
|
7628
|
+
%q{a #!#!.foo!}.gsub('!', "\n"),
|
7629
|
+
%q{ ^ location},
|
7630
|
+
ALL_VERSIONS - SINCE_2_7)
|
7631
|
+
|
7632
|
+
assert_diagnoses(
|
7633
|
+
[:error, :unexpected_token, { :token => 'tAMPER' }],
|
7634
|
+
%q{a #!#!&.foo!}.gsub('!', "\n"),
|
7635
|
+
%q{ ^ location},
|
7636
|
+
ALL_VERSIONS - SINCE_2_7)
|
7637
|
+
|
7638
|
+
assert_diagnoses(
|
7639
|
+
[:error, :unexpected_token, { :token => 'tDOT' }],
|
7640
|
+
%q{a #!#!.:foo!}.gsub('!', "\n"),
|
7641
|
+
%q{ ^ location},
|
7642
|
+
ALL_VERSIONS - SINCE_2_7)
|
7643
|
+
end
|
7579
7644
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.6.
|
4
|
+
version: 2.6.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- whitequark
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ast
|
@@ -309,7 +309,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
309
309
|
- !ruby/object:Gem::Version
|
310
310
|
version: '0'
|
311
311
|
requirements: []
|
312
|
-
rubygems_version: 3.0.
|
312
|
+
rubygems_version: 3.0.1
|
313
313
|
signing_key:
|
314
314
|
specification_version: 4
|
315
315
|
summary: A Ruby parser written in pure Ruby.
|