parser 2.3.3.1 → 2.4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +0 -1
- data/CHANGELOG.md +11 -1
- data/lib/parser/current.rb +4 -4
- data/lib/parser/lexer.rl +2 -0
- data/lib/parser/rubymotion.y +24 -16
- data/lib/parser/version.rb +1 -1
- data/test/test_lexer.rb +7 -1
- data/test/test_parser.rb +4 -4
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 255b58022cc99fb078d57e0fcc881d5892401872
|
4
|
+
data.tar.gz: e00f38a300cc9c62b6bab48a155e6dc3639e51ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad1ae6b22370cd26b56a39791984aae59e440bd58ce2f738522b71224b07cf3d0db45abf4bf8b2765c659d81dfa4117f57c03da7e7696f63da9ee25389a40a88
|
7
|
+
data.tar.gz: c3e9d34d73795b90501ce47cae91886198358dd3d5bb62de1e44485b3280537463e79da30ae652c4fc21da017a9d5be0fa57a86acdcdca4439414e5049de6607
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
v2.4.0.0 (2017-02-07)
|
5
|
+
---------------------
|
6
|
+
|
7
|
+
API modifications:
|
8
|
+
* parser/current: update for the 2.4 release. (whitequark)
|
9
|
+
* rubymotion.y: "a&.b": implement safe navigation operator in RubyMotion. (Mark Villacampa)
|
10
|
+
|
11
|
+
Bugs fixed:
|
12
|
+
* lexer.rl: "a &. b": accept &. in EXPR_ARG also. (whitequark)
|
13
|
+
|
4
14
|
v2.3.3.1 (2016-12-02)
|
5
15
|
---------------------
|
6
16
|
|
@@ -122,7 +132,7 @@ Bugs fixed:
|
|
122
132
|
* Add :csend to Parser::Meta::NODE_TYPES (Markus Schirp)
|
123
133
|
* lexer/dedenter: "\<\<x\n y\\n z\nx": don't dedent after escaped newline. (whitequark)
|
124
134
|
|
125
|
-
v2.
|
135
|
+
v2.4.0.0 (2016-01-16)
|
126
136
|
---------------------
|
127
137
|
|
128
138
|
v2.3.0.1 (2016-01-14)
|
data/lib/parser/current.rb
CHANGED
@@ -64,7 +64,7 @@ module Parser
|
|
64
64
|
CurrentRuby = Ruby23
|
65
65
|
|
66
66
|
when /^2\.4\./
|
67
|
-
current_version = '
|
67
|
+
current_version = '2.4.0'
|
68
68
|
if RUBY_VERSION != current_version
|
69
69
|
warn_syntax_deviation 'parser/ruby24', current_version
|
70
70
|
end
|
@@ -74,8 +74,8 @@ module Parser
|
|
74
74
|
|
75
75
|
else # :nocov:
|
76
76
|
# Keep this in sync with released Ruby.
|
77
|
-
warn_syntax_deviation 'parser/
|
78
|
-
require 'parser/
|
79
|
-
CurrentRuby =
|
77
|
+
warn_syntax_deviation 'parser/ruby24', '2.4.x'
|
78
|
+
require 'parser/ruby24'
|
79
|
+
CurrentRuby = Ruby24
|
80
80
|
end
|
81
81
|
end
|
data/lib/parser/lexer.rl
CHANGED
data/lib/parser/rubymotion.y
CHANGED
@@ -16,7 +16,7 @@ token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS
|
|
16
16
|
tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG tREGEXP_OPT
|
17
17
|
tWORDS_BEG tQWORDS_BEG tSTRING_DBEG tSTRING_DVAR tSTRING_END
|
18
18
|
tSTRING tSYMBOL tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG
|
19
|
-
tCHARACTER
|
19
|
+
tCHARACTER tANDDOT
|
20
20
|
|
21
21
|
prechigh
|
22
22
|
right tBANG tTILDE tUPLUS
|
@@ -170,14 +170,14 @@ rule
|
|
170
170
|
val[0], val[1], val[2], val[3]),
|
171
171
|
val[4], val[5])
|
172
172
|
}
|
173
|
-
| primary_value
|
173
|
+
| primary_value call_op tIDENTIFIER tOP_ASGN command_call
|
174
174
|
{
|
175
175
|
result = @builder.op_assign(
|
176
176
|
@builder.call_method(
|
177
177
|
val[0], val[1], val[2]),
|
178
178
|
val[3], val[4])
|
179
179
|
}
|
180
|
-
| primary_value
|
180
|
+
| primary_value call_op tCONSTANT tOP_ASGN command_call
|
181
181
|
{
|
182
182
|
result = @builder.op_assign(
|
183
183
|
@builder.call_method(
|
@@ -251,7 +251,7 @@ rule
|
|
251
251
|
}
|
252
252
|
|
253
253
|
block_command: block_call
|
254
|
-
| block_call
|
254
|
+
| block_call call_op operation2 command_args
|
255
255
|
{
|
256
256
|
result = @builder.call_method(val[0], val[1], val[2],
|
257
257
|
*val[3])
|
@@ -287,12 +287,12 @@ rule
|
|
287
287
|
result = @builder.block(method_call,
|
288
288
|
begin_t, args, body, end_t)
|
289
289
|
}
|
290
|
-
| primary_value
|
290
|
+
| primary_value call_op operation2 command_args =tLOWEST
|
291
291
|
{
|
292
292
|
result = @builder.call_method(val[0], val[1], val[2],
|
293
293
|
*val[3])
|
294
294
|
}
|
295
|
-
| primary_value
|
295
|
+
| primary_value call_op operation2 command_args cmd_brace_block
|
296
296
|
{
|
297
297
|
method_call = @builder.call_method(val[0], val[1], val[2],
|
298
298
|
*val[3])
|
@@ -423,7 +423,7 @@ rule
|
|
423
423
|
{
|
424
424
|
result = @builder.index_asgn(val[0], val[1], val[2], val[3])
|
425
425
|
}
|
426
|
-
| primary_value
|
426
|
+
| primary_value call_op tIDENTIFIER
|
427
427
|
{
|
428
428
|
result = @builder.attr_asgn(val[0], val[1], val[2])
|
429
429
|
}
|
@@ -431,7 +431,7 @@ rule
|
|
431
431
|
{
|
432
432
|
result = @builder.attr_asgn(val[0], val[1], val[2])
|
433
433
|
}
|
434
|
-
| primary_value
|
434
|
+
| primary_value call_op tCONSTANT
|
435
435
|
{
|
436
436
|
result = @builder.attr_asgn(val[0], val[1], val[2])
|
437
437
|
}
|
@@ -458,7 +458,7 @@ rule
|
|
458
458
|
{
|
459
459
|
result = @builder.index_asgn(val[0], val[1], val[2], val[3])
|
460
460
|
}
|
461
|
-
| primary_value
|
461
|
+
| primary_value call_op tIDENTIFIER
|
462
462
|
{
|
463
463
|
result = @builder.attr_asgn(val[0], val[1], val[2])
|
464
464
|
}
|
@@ -466,7 +466,7 @@ rule
|
|
466
466
|
{
|
467
467
|
result = @builder.attr_asgn(val[0], val[1], val[2])
|
468
468
|
}
|
469
|
-
| primary_value
|
469
|
+
| primary_value call_op tCONSTANT
|
470
470
|
{
|
471
471
|
result = @builder.attr_asgn(val[0], val[1], val[2])
|
472
472
|
}
|
@@ -581,14 +581,14 @@ rule
|
|
581
581
|
val[0], val[1], val[2], val[3]),
|
582
582
|
val[4], val[5])
|
583
583
|
}
|
584
|
-
| primary_value
|
584
|
+
| primary_value call_op tIDENTIFIER tOP_ASGN arg
|
585
585
|
{
|
586
586
|
result = @builder.op_assign(
|
587
587
|
@builder.call_method(
|
588
588
|
val[0], val[1], val[2]),
|
589
589
|
val[3], val[4])
|
590
590
|
}
|
591
|
-
| primary_value
|
591
|
+
| primary_value call_op tCONSTANT tOP_ASGN arg
|
592
592
|
{
|
593
593
|
result = @builder.op_assign(
|
594
594
|
@builder.call_method(
|
@@ -1470,7 +1470,7 @@ rule
|
|
1470
1470
|
result = @builder.block(val[0],
|
1471
1471
|
begin_t, block_args, body, end_t)
|
1472
1472
|
}
|
1473
|
-
| block_call
|
1473
|
+
| block_call call_op operation2 opt_paren_args
|
1474
1474
|
{
|
1475
1475
|
lparen_t, args, rparen_t = val[3]
|
1476
1476
|
result = @builder.call_method(val[0], val[1], val[2],
|
@@ -1489,7 +1489,7 @@ rule
|
|
1489
1489
|
result = @builder.call_method(nil, nil, val[0],
|
1490
1490
|
lparen_t, args, rparen_t)
|
1491
1491
|
}
|
1492
|
-
| primary_value
|
1492
|
+
| primary_value call_op operation2 opt_paren_args
|
1493
1493
|
{
|
1494
1494
|
lparen_t, args, rparen_t = val[3]
|
1495
1495
|
result = @builder.call_method(val[0], val[1], val[2],
|
@@ -1505,7 +1505,7 @@ rule
|
|
1505
1505
|
{
|
1506
1506
|
result = @builder.call_method(val[0], val[1], val[2])
|
1507
1507
|
}
|
1508
|
-
| primary_value
|
1508
|
+
| primary_value call_op paren_args
|
1509
1509
|
{
|
1510
1510
|
lparen_t, args, rparen_t = val[2]
|
1511
1511
|
result = @builder.call_method(val[0], val[1], nil,
|
@@ -2104,7 +2104,15 @@ regexp_contents: # nothing
|
|
2104
2104
|
operation: tIDENTIFIER | tCONSTANT | tFID
|
2105
2105
|
operation2: tIDENTIFIER | tCONSTANT | tFID | op
|
2106
2106
|
operation3: tIDENTIFIER | tFID | op
|
2107
|
-
dot_or_colon:
|
2107
|
+
dot_or_colon: call_op | tCOLON2
|
2108
|
+
call_op: tDOT
|
2109
|
+
{
|
2110
|
+
result = [:dot, val[0][1]]
|
2111
|
+
}
|
2112
|
+
| tANDDOT
|
2113
|
+
{
|
2114
|
+
result = [:anddot, val[0][1]]
|
2115
|
+
}
|
2108
2116
|
opt_terms: | terms
|
2109
2117
|
opt_nl: | tNL
|
2110
2118
|
rparen: opt_nl tRPAREN
|
data/lib/parser/version.rb
CHANGED
data/test/test_lexer.rb
CHANGED
@@ -231,7 +231,13 @@ class TestLexer < Minitest::Test
|
|
231
231
|
assert_lex_fname "&", :tAMPER2, [0, 1]
|
232
232
|
end
|
233
233
|
|
234
|
-
def
|
234
|
+
def test_and_dot_arg
|
235
|
+
@lex.state = :expr_arg
|
236
|
+
|
237
|
+
assert_scanned "&.", :tANDDOT, "&.", [0, 2]
|
238
|
+
end
|
239
|
+
|
240
|
+
def test_and_dot_cmdarg
|
235
241
|
@lex.state = :expr_cmdarg
|
236
242
|
|
237
243
|
assert_scanned "&.", :tANDDOT, "&.", [0, 2]
|
data/test/test_parser.rb
CHANGED
@@ -3453,7 +3453,7 @@ class TestParser < Minitest::Test
|
|
3453
3453
|
s(:csend, s(:send, nil, :a), :b),
|
3454
3454
|
%q{a&.b},
|
3455
3455
|
%q{ ^^ dot},
|
3456
|
-
SINCE_2_3)
|
3456
|
+
SINCE_2_3 + %w{ios})
|
3457
3457
|
end
|
3458
3458
|
|
3459
3459
|
def test_send_attr_asgn_conditional
|
@@ -3461,7 +3461,7 @@ class TestParser < Minitest::Test
|
|
3461
3461
|
s(:csend, s(:send, nil, :a), :b=, s(:int, 1)),
|
3462
3462
|
%q{a&.b = 1},
|
3463
3463
|
%q{ ^^ dot},
|
3464
|
-
SINCE_2_3)
|
3464
|
+
SINCE_2_3 + %w{ios})
|
3465
3465
|
end
|
3466
3466
|
|
3467
3467
|
def test_send_block_conditional
|
@@ -3472,7 +3472,7 @@ class TestParser < Minitest::Test
|
|
3472
3472
|
s(:args), nil),
|
3473
3473
|
%q{foo&.bar {}},
|
3474
3474
|
%q{},
|
3475
|
-
SINCE_2_3)
|
3475
|
+
SINCE_2_3 + %w{ios})
|
3476
3476
|
end
|
3477
3477
|
|
3478
3478
|
def test_send_op_asgn_conditional
|
@@ -3480,7 +3480,7 @@ class TestParser < Minitest::Test
|
|
3480
3480
|
s(:and_asgn, s(:csend, s(:send, nil, :a), :b), s(:int, 1)),
|
3481
3481
|
%q{a&.b &&= 1},
|
3482
3482
|
%q{},
|
3483
|
-
SINCE_2_3)
|
3483
|
+
SINCE_2_3 + %w{ios})
|
3484
3484
|
end
|
3485
3485
|
|
3486
3486
|
def test_lvar_injecting_match
|
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.
|
4
|
+
version: 2.4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- whitequark
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ast
|
@@ -286,7 +286,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
286
286
|
version: '0'
|
287
287
|
requirements: []
|
288
288
|
rubyforge_project:
|
289
|
-
rubygems_version: 2.5.
|
289
|
+
rubygems_version: 2.5.2
|
290
290
|
signing_key:
|
291
291
|
specification_version: 4
|
292
292
|
summary: A Ruby parser written in pure Ruby.
|
@@ -315,4 +315,3 @@ test_files:
|
|
315
315
|
- test/test_source_rewriter.rb
|
316
316
|
- test/test_source_rewriter_action.rb
|
317
317
|
- test/test_static_environment.rb
|
318
|
-
has_rdoc: yard
|