ruby_parser 3.20.1 → 3.20.3
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
- checksums.yaml.gz.sig +0 -0
- data/History.rdoc +18 -0
- data/compare/normalize.rb +1 -0
- data/lib/ruby20_parser.rb +4220 -4273
- data/lib/ruby20_parser.y +0 -10
- data/lib/ruby21_parser.rb +4203 -4238
- data/lib/ruby21_parser.y +0 -10
- data/lib/ruby22_parser.rb +4239 -4276
- data/lib/ruby22_parser.y +0 -10
- data/lib/ruby23_parser.rb +4235 -4240
- data/lib/ruby23_parser.y +0 -10
- data/lib/ruby24_parser.rb +4229 -4284
- data/lib/ruby24_parser.y +0 -10
- data/lib/ruby25_parser.rb +4220 -4275
- data/lib/ruby25_parser.y +0 -10
- data/lib/ruby26_parser.rb +4221 -4276
- data/lib/ruby26_parser.y +0 -10
- data/lib/ruby27_parser.rb +4138 -4207
- data/lib/ruby27_parser.y +0 -10
- data/lib/ruby30_parser.rb +5989 -5957
- data/lib/ruby30_parser.y +95 -72
- data/lib/ruby31_parser.rb +6157 -6172
- data/lib/ruby31_parser.y +96 -73
- data/lib/ruby32_parser.rb +6251 -6314
- data/lib/ruby32_parser.y +117 -93
- data/lib/ruby3_parser.yy +132 -73
- data/lib/ruby_lexer.rb +15 -7
- data/lib/ruby_lexer.rex.rb +1 -1
- data/lib/ruby_lexer_strings.rb +2 -2
- data/lib/ruby_parser.yy +0 -10
- data/lib/ruby_parser_extras.rb +9 -9
- data/test/test_ruby_parser.rb +39 -1
- data/tools/munge.rb +8 -2
- data/tools/ripper.rb +14 -12
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
data/lib/ruby32_parser.y
CHANGED
@@ -96,9 +96,9 @@ rule
|
|
96
96
|
result = iter
|
97
97
|
}
|
98
98
|
|
99
|
-
begin_block: tLCURLY
|
99
|
+
begin_block: tLCURLY top_compstmt tRCURLY
|
100
100
|
{
|
101
|
-
_, line, stmt, _ = val
|
101
|
+
(_, line), stmt, _ = val
|
102
102
|
result = new_iter s(:preexe).line(line), 0, stmt
|
103
103
|
}
|
104
104
|
|
@@ -408,6 +408,7 @@ rule
|
|
408
408
|
defs_head: k_def singleton dot_or_colon
|
409
409
|
{
|
410
410
|
lexer.lex_state = EXPR_FNAME
|
411
|
+
self.in_argdef = true
|
411
412
|
}
|
412
413
|
def_name
|
413
414
|
{
|
@@ -621,7 +622,7 @@ rule
|
|
621
622
|
}
|
622
623
|
| tSTAR
|
623
624
|
{
|
624
|
-
l =
|
625
|
+
(_, l), = val
|
625
626
|
result = s(:masgn, s(:array, s(:splat).line(l)).line(l)).line l
|
626
627
|
}
|
627
628
|
| tSTAR tCOMMA mlhs_post
|
@@ -1251,7 +1252,7 @@ rule
|
|
1251
1252
|
args: arg_value
|
1252
1253
|
{
|
1253
1254
|
arg, = val
|
1254
|
-
lineno = arg.line
|
1255
|
+
lineno = arg.line
|
1255
1256
|
|
1256
1257
|
result = s(:array, arg).line lineno
|
1257
1258
|
}
|
@@ -1260,6 +1261,11 @@ rule
|
|
1260
1261
|
_, arg = val
|
1261
1262
|
result = s(:array, s(:splat, arg).line(arg.line)).line arg.line
|
1262
1263
|
}
|
1264
|
+
| tSTAR
|
1265
|
+
{
|
1266
|
+
(_, line), = val
|
1267
|
+
result = s(:array, s(:splat).line(line)).line line
|
1268
|
+
}
|
1263
1269
|
| args tCOMMA arg_value
|
1264
1270
|
{
|
1265
1271
|
args, _, id = val
|
@@ -1267,11 +1273,14 @@ rule
|
|
1267
1273
|
}
|
1268
1274
|
| args tCOMMA tSTAR arg_value
|
1269
1275
|
{
|
1270
|
-
|
1271
|
-
args, _, _, id = val
|
1272
|
-
line = lexer.lineno
|
1276
|
+
args, _, (_, line), id = val
|
1273
1277
|
result = self.list_append args, s(:splat, id).line(line)
|
1274
1278
|
}
|
1279
|
+
| args tCOMMA tSTAR
|
1280
|
+
{
|
1281
|
+
args, _, (_, line) = val
|
1282
|
+
result = self.list_append args, s(:splat).line(line)
|
1283
|
+
}
|
1275
1284
|
|
1276
1285
|
mrhs_arg: mrhs
|
1277
1286
|
{
|
@@ -1288,7 +1297,6 @@ rule
|
|
1288
1297
|
}
|
1289
1298
|
| args tCOMMA tSTAR arg_value
|
1290
1299
|
{
|
1291
|
-
# TODO: make all tXXXX terminals include lexer.lineno
|
1292
1300
|
arg, _, _, splat = val
|
1293
1301
|
result = self.arg_concat arg, splat
|
1294
1302
|
}
|
@@ -1317,7 +1325,6 @@ rule
|
|
1317
1325
|
| k_begin
|
1318
1326
|
{
|
1319
1327
|
lexer.cmdarg.push false
|
1320
|
-
result = self.lexer.lineno
|
1321
1328
|
}
|
1322
1329
|
bodystmt k_end
|
1323
1330
|
{
|
@@ -1327,11 +1334,10 @@ rule
|
|
1327
1334
|
| tLPAREN_ARG
|
1328
1335
|
{
|
1329
1336
|
lexer.lex_state = EXPR_ENDARG
|
1330
|
-
result = lexer.lineno
|
1331
1337
|
}
|
1332
1338
|
rparen
|
1333
1339
|
{
|
1334
|
-
_, line, _ = val
|
1340
|
+
(_, line), _, _ = val
|
1335
1341
|
result = s(:begin).line line
|
1336
1342
|
}
|
1337
1343
|
| tLPAREN_ARG
|
@@ -1347,9 +1353,8 @@ rule
|
|
1347
1353
|
}
|
1348
1354
|
| tLPAREN compstmt tRPAREN
|
1349
1355
|
{
|
1350
|
-
_, stmt, _ = val
|
1351
|
-
result = stmt
|
1352
|
-
result ||= s(:nil).line lexer.lineno
|
1356
|
+
(_, line), stmt, _ = val
|
1357
|
+
result = stmt || s(:nil).line(line)
|
1353
1358
|
result.paren = true
|
1354
1359
|
}
|
1355
1360
|
| primary_value tCOLON2 tCONSTANT
|
@@ -1362,9 +1367,9 @@ rule
|
|
1362
1367
|
{
|
1363
1368
|
result = wrap :colon3, val[1]
|
1364
1369
|
}
|
1365
|
-
| tLBRACK
|
1370
|
+
| tLBRACK aref_args rbracket
|
1366
1371
|
{
|
1367
|
-
_, line, args, (_, line_max) = val
|
1372
|
+
(_, line), args, (_, line_max) = val
|
1368
1373
|
|
1369
1374
|
result = args || s(:array)
|
1370
1375
|
result.sexp_type = :array # aref_args is :args
|
@@ -1480,9 +1485,6 @@ rule
|
|
1480
1485
|
result = new_for iter, var, body
|
1481
1486
|
}
|
1482
1487
|
| k_class
|
1483
|
-
{
|
1484
|
-
result = self.lexer.lineno
|
1485
|
-
}
|
1486
1488
|
cpath superclass
|
1487
1489
|
{
|
1488
1490
|
if (self.in_def || self.in_single > 0) then
|
@@ -1497,9 +1499,6 @@ rule
|
|
1497
1499
|
self.lexer.ignore_body_comments
|
1498
1500
|
}
|
1499
1501
|
| k_class tLSHFT
|
1500
|
-
{
|
1501
|
-
result = self.lexer.lineno
|
1502
|
-
}
|
1503
1502
|
expr
|
1504
1503
|
{
|
1505
1504
|
result = self.in_def
|
@@ -1511,16 +1510,14 @@ rule
|
|
1511
1510
|
self.in_single = 0
|
1512
1511
|
self.env.extend
|
1513
1512
|
}
|
1514
|
-
bodystmt
|
1513
|
+
bodystmt
|
1514
|
+
k_end
|
1515
1515
|
{
|
1516
1516
|
result = new_sclass val
|
1517
1517
|
self.env.unextend
|
1518
1518
|
self.lexer.ignore_body_comments
|
1519
1519
|
}
|
1520
1520
|
| k_module
|
1521
|
-
{
|
1522
|
-
result = self.lexer.lineno
|
1523
|
-
}
|
1524
1521
|
cpath
|
1525
1522
|
{
|
1526
1523
|
yyerror "module definition in method body" if
|
@@ -1623,6 +1620,7 @@ rule
|
|
1623
1620
|
k_def: kDEF
|
1624
1621
|
{
|
1625
1622
|
self.comments.push self.lexer.comments
|
1623
|
+
self.in_argdef = true
|
1626
1624
|
}
|
1627
1625
|
k_do: kDO
|
1628
1626
|
k_do_block: kDO_BLOCK
|
@@ -1662,20 +1660,33 @@ rule
|
|
1662
1660
|
}
|
1663
1661
|
|
1664
1662
|
f_marg: f_norm_arg
|
1663
|
+
{
|
1664
|
+
(sym, line), = val
|
1665
|
+
|
1666
|
+
result = s(:dummy, sym).line line
|
1667
|
+
}
|
1665
1668
|
| tLPAREN f_margs rparen
|
1666
1669
|
{
|
1667
|
-
|
1670
|
+
_, args, _ = val
|
1671
|
+
result = args
|
1668
1672
|
}
|
1669
1673
|
|
1670
1674
|
f_marg_list: f_marg
|
1671
1675
|
{
|
1672
|
-
|
1676
|
+
arg, = val
|
1677
|
+
line = arg.line
|
1678
|
+
|
1679
|
+
arg = arg.last if arg.sexp_type == :dummy
|
1673
1680
|
|
1674
|
-
result = s(:array,
|
1681
|
+
result = s(:array, arg).line line
|
1675
1682
|
}
|
1676
1683
|
| f_marg_list tCOMMA f_marg
|
1677
1684
|
{
|
1678
|
-
|
1685
|
+
args, _, arg = val
|
1686
|
+
|
1687
|
+
arg = arg.last if arg.sexp_type == :dummy
|
1688
|
+
|
1689
|
+
result = list_append args, arg
|
1679
1690
|
}
|
1680
1691
|
|
1681
1692
|
f_margs: f_marg_list
|
@@ -1718,14 +1729,14 @@ rule
|
|
1718
1729
|
}
|
1719
1730
|
| tSTAR
|
1720
1731
|
{
|
1721
|
-
|
1722
|
-
result.line
|
1732
|
+
(_, line), = val
|
1733
|
+
result = args([:*]).line line
|
1723
1734
|
}
|
1724
1735
|
|
1725
1736
|
f_any_kwrest: f_kwrest
|
1726
1737
|
| f_no_kwarg
|
1727
1738
|
|
1728
|
-
f_eq:
|
1739
|
+
f_eq: { self.in_argdef = false } tEQL
|
1729
1740
|
|
1730
1741
|
block_args_tail: f_block_kwarg tCOMMA f_kwrest opt_f_block_arg
|
1731
1742
|
{
|
@@ -1829,15 +1840,19 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1829
1840
|
{
|
1830
1841
|
# TODO: current_arg = 0
|
1831
1842
|
result = args val
|
1843
|
+
self.in_argdef = false
|
1832
1844
|
}
|
1833
1845
|
| tOROP
|
1834
1846
|
{
|
1835
|
-
|
1847
|
+
(_, line), = val
|
1848
|
+
|
1849
|
+
result = s(:args).line line
|
1836
1850
|
}
|
1837
1851
|
| tPIPE block_param opt_bv_decl tPIPE
|
1838
1852
|
{
|
1839
1853
|
# TODO: current_arg = 0
|
1840
1854
|
result = args val
|
1855
|
+
self.in_argdef = false
|
1841
1856
|
}
|
1842
1857
|
|
1843
1858
|
opt_bv_decl: opt_nl
|
@@ -1864,7 +1879,7 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1864
1879
|
lambda: tLAMBDA
|
1865
1880
|
{
|
1866
1881
|
self.env.extend :dynamic
|
1867
|
-
result =
|
1882
|
+
result = lexer.lpar_beg
|
1868
1883
|
lexer.paren_nest += 1
|
1869
1884
|
lexer.lpar_beg = lexer.paren_nest
|
1870
1885
|
}
|
@@ -1874,7 +1889,7 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1874
1889
|
}
|
1875
1890
|
lambda_body
|
1876
1891
|
{
|
1877
|
-
_,
|
1892
|
+
(_, line), lpar, args, _cmdarg, body = val
|
1878
1893
|
lexer.lpar_beg = lpar
|
1879
1894
|
|
1880
1895
|
lexer.cmdarg.pop
|
@@ -1887,10 +1902,12 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1887
1902
|
|
1888
1903
|
f_larglist: tLPAREN2 f_args opt_bv_decl rparen
|
1889
1904
|
{
|
1905
|
+
self.in_argdef = false
|
1890
1906
|
result = args val
|
1891
1907
|
}
|
1892
1908
|
| f_args
|
1893
1909
|
{
|
1910
|
+
self.in_argdef = false
|
1894
1911
|
result = val[0]
|
1895
1912
|
result = 0 if result == s(:args)
|
1896
1913
|
}
|
@@ -1998,7 +2015,8 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1998
2015
|
}
|
1999
2016
|
| kSUPER
|
2000
2017
|
{
|
2001
|
-
|
2018
|
+
(_, line), = val
|
2019
|
+
result = s(:zsuper).line line
|
2002
2020
|
}
|
2003
2021
|
| primary_value tLBRACK2 opt_call_args rbracket
|
2004
2022
|
{
|
@@ -2008,11 +2026,11 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2008
2026
|
brace_block: tLCURLY
|
2009
2027
|
{
|
2010
2028
|
self.env.extend :dynamic
|
2011
|
-
result = self.lexer.lineno
|
2012
2029
|
}
|
2013
|
-
brace_body
|
2030
|
+
brace_body
|
2031
|
+
tRCURLY
|
2014
2032
|
{
|
2015
|
-
_, line, body, _ = val
|
2033
|
+
(_, line), _, body, _ = val
|
2016
2034
|
|
2017
2035
|
result = body
|
2018
2036
|
result.line line
|
@@ -2022,11 +2040,11 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2022
2040
|
| k_do
|
2023
2041
|
{
|
2024
2042
|
self.env.extend :dynamic
|
2025
|
-
result = self.lexer.lineno
|
2026
2043
|
}
|
2027
|
-
do_body
|
2044
|
+
do_body
|
2045
|
+
kEND
|
2028
2046
|
{
|
2029
|
-
_, line, body, _ = val
|
2047
|
+
(_, line), _, body, _ = val
|
2030
2048
|
|
2031
2049
|
result = body
|
2032
2050
|
result.line line
|
@@ -2084,14 +2102,13 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2084
2102
|
}
|
2085
2103
|
|
2086
2104
|
case_body: k_when
|
2087
|
-
{
|
2088
|
-
result = self.lexer.lineno
|
2089
|
-
}
|
2090
2105
|
case_args then compstmt cases
|
2091
2106
|
{
|
2092
|
-
|
2093
|
-
|
2094
|
-
result
|
2107
|
+
(_, line), case_args, _then, body, cases = val
|
2108
|
+
|
2109
|
+
result = new_when case_args, body
|
2110
|
+
result.line line
|
2111
|
+
result << cases if cases
|
2095
2112
|
}
|
2096
2113
|
|
2097
2114
|
cases: opt_else | case_body
|
@@ -2328,31 +2345,17 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2328
2345
|
result = new_array_pattern_tail both, nil, nil, nil
|
2329
2346
|
result.line head.line
|
2330
2347
|
}
|
2331
|
-
| p_args_head
|
2348
|
+
| p_args_head p_rest
|
2332
2349
|
{
|
2333
|
-
head,
|
2350
|
+
head, (rest, _) = val
|
2334
2351
|
|
2335
|
-
result = new_array_pattern_tail
|
2336
|
-
result.line head.line
|
2352
|
+
result = new_array_pattern_tail(head, true, rest, nil).line head.line
|
2337
2353
|
}
|
2338
|
-
| p_args_head
|
2354
|
+
| p_args_head p_rest tCOMMA p_args_post
|
2339
2355
|
{
|
2340
|
-
head,
|
2341
|
-
|
2342
|
-
result = new_array_pattern_tail head, true, id.to_sym, post
|
2343
|
-
result.line head.line
|
2344
|
-
}
|
2345
|
-
| p_args_head tSTAR
|
2346
|
-
{
|
2347
|
-
expr, _ = val
|
2356
|
+
head, (rest, _), _, post = val
|
2348
2357
|
|
2349
|
-
result = new_array_pattern_tail(
|
2350
|
-
}
|
2351
|
-
| p_args_head tSTAR tCOMMA p_args_post
|
2352
|
-
{
|
2353
|
-
head, _, _, post = val
|
2354
|
-
|
2355
|
-
result = new_array_pattern_tail(head, true, nil, post).line head.line
|
2358
|
+
result = new_array_pattern_tail(head, true, rest, post).line head.line
|
2356
2359
|
}
|
2357
2360
|
| p_args_tail
|
2358
2361
|
|
@@ -2882,7 +2885,6 @@ regexp_contents: none
|
|
2882
2885
|
lexer.brace_nest,
|
2883
2886
|
lexer.string_nest, # TODO: remove
|
2884
2887
|
lexer.lex_state,
|
2885
|
-
lexer.lineno,
|
2886
2888
|
]
|
2887
2889
|
|
2888
2890
|
lexer.cmdarg.push false
|
@@ -2897,9 +2899,9 @@ regexp_contents: none
|
|
2897
2899
|
compstmt
|
2898
2900
|
tSTRING_DEND
|
2899
2901
|
{
|
2900
|
-
_, memo, stmt, _ = val
|
2902
|
+
(_, line), memo, stmt, _ = val
|
2901
2903
|
|
2902
|
-
lex_strterm, brace_nest, string_nest, oldlex_state
|
2904
|
+
lex_strterm, brace_nest, string_nest, oldlex_state = memo
|
2903
2905
|
# TODO: heredoc_indent
|
2904
2906
|
|
2905
2907
|
lexer.lex_strterm = lex_strterm
|
@@ -2959,11 +2961,11 @@ regexp_contents: none
|
|
2959
2961
|
|
2960
2962
|
dsym: tSYMBEG string_contents tSTRING_END
|
2961
2963
|
{
|
2962
|
-
_, result, _ = val
|
2964
|
+
(_, line), result, _ = val
|
2963
2965
|
|
2964
2966
|
lexer.lex_state = EXPR_END
|
2965
2967
|
|
2966
|
-
result ||= s(:str, "").line
|
2968
|
+
result ||= s(:str, "").line line
|
2967
2969
|
|
2968
2970
|
case result.sexp_type
|
2969
2971
|
when :dstr then
|
@@ -2999,15 +3001,15 @@ regexp_contents: none
|
|
2999
3001
|
| tCONSTANT
|
3000
3002
|
| tCVAR
|
3001
3003
|
|
3002
|
-
keyword_variable: kNIL { result = s(:nil).line
|
3003
|
-
| kSELF { result = s(:self).line
|
3004
|
-
| kTRUE { result = s(:true).line
|
3005
|
-
| kFALSE { result = s(:false).line
|
3006
|
-
| k__FILE__ { result = s(:str, self.file).line
|
3007
|
-
| k__LINE__ { result = s(:lit,
|
3004
|
+
keyword_variable: kNIL { (_, line), = val; result = s(:nil).line line }
|
3005
|
+
| kSELF { (_, line), = val; result = s(:self).line line }
|
3006
|
+
| kTRUE { (_, line), = val; result = s(:true).line line }
|
3007
|
+
| kFALSE { (_, line), = val; result = s(:false).line line }
|
3008
|
+
| k__FILE__ { (_, line), = val; result = s(:str, self.file).line line }
|
3009
|
+
| k__LINE__ { (_, line), = val; result = s(:lit, line).line line }
|
3008
3010
|
| k__ENCODING__
|
3009
3011
|
{
|
3010
|
-
l =
|
3012
|
+
(_, l), = val
|
3011
3013
|
result =
|
3012
3014
|
if defined? Encoding then
|
3013
3015
|
s(:colon2, s(:const, :Encoding).line(l), :UTF_8).line l
|
@@ -3068,11 +3070,13 @@ keyword_variable: kNIL { result = s(:nil).line lexer.lineno }
|
|
3068
3070
|
f_opt_paren_args: f_paren_args
|
3069
3071
|
| none
|
3070
3072
|
{
|
3073
|
+
self.in_argdef = false
|
3071
3074
|
result = end_args val
|
3072
3075
|
}
|
3073
3076
|
|
3074
3077
|
f_paren_args: tLPAREN2 f_args rparen
|
3075
3078
|
{
|
3079
|
+
self.in_argdef = false
|
3076
3080
|
result = end_args val
|
3077
3081
|
}
|
3078
3082
|
|
@@ -3080,10 +3084,12 @@ f_opt_paren_args: f_paren_args
|
|
3080
3084
|
| {
|
3081
3085
|
result = self.in_kwarg
|
3082
3086
|
self.in_kwarg = true
|
3087
|
+
self.in_argdef = true
|
3083
3088
|
self.lexer.lex_state |= EXPR_LABEL
|
3084
3089
|
}
|
3085
3090
|
f_args term
|
3086
3091
|
{
|
3092
|
+
self.in_argdef = false
|
3087
3093
|
result = end_args val
|
3088
3094
|
}
|
3089
3095
|
|
@@ -3170,12 +3176,12 @@ f_opt_paren_args: f_paren_args
|
|
3170
3176
|
|
|
3171
3177
|
{
|
3172
3178
|
result = args val
|
3173
|
-
# result.line lexer.lineno
|
3174
3179
|
}
|
3175
3180
|
|
3176
3181
|
args_forward: tBDOT3
|
3177
3182
|
{
|
3178
|
-
|
3183
|
+
(_, line), = val
|
3184
|
+
result = s(:forward_args).line line
|
3179
3185
|
}
|
3180
3186
|
|
3181
3187
|
f_bad_arg: tCONSTANT
|
@@ -3240,6 +3246,14 @@ f_opt_paren_args: f_paren_args
|
|
3240
3246
|
}
|
3241
3247
|
|
3242
3248
|
f_label: tLABEL
|
3249
|
+
{
|
3250
|
+
label, = val
|
3251
|
+
# arg_var(p, formal_argument(p, $1));
|
3252
|
+
# p->cur_arg = get_id($1);
|
3253
|
+
# p->max_numparam = ORDINAL_PARAM;
|
3254
|
+
self.in_argdef = false
|
3255
|
+
result = label
|
3256
|
+
}
|
3243
3257
|
|
3244
3258
|
f_kw: f_label arg_value
|
3245
3259
|
{
|
@@ -3248,6 +3262,7 @@ f_opt_paren_args: f_paren_args
|
|
3248
3262
|
|
3249
3263
|
identifier = label.to_sym
|
3250
3264
|
self.env[identifier] = :lvar
|
3265
|
+
self.in_argdef = true
|
3251
3266
|
|
3252
3267
|
kwarg = s(:kwarg, identifier, arg).line line
|
3253
3268
|
result = s(:array, kwarg).line line
|
@@ -3258,6 +3273,7 @@ f_opt_paren_args: f_paren_args
|
|
3258
3273
|
|
3259
3274
|
id = label.to_sym
|
3260
3275
|
self.env[id] = :lvar
|
3276
|
+
self.in_argdef = true
|
3261
3277
|
|
3262
3278
|
result = s(:array, s(:kwarg, id).line(line)).line line
|
3263
3279
|
}
|
@@ -3268,6 +3284,7 @@ f_opt_paren_args: f_paren_args
|
|
3268
3284
|
(label, line), expr = val
|
3269
3285
|
id = label.to_sym
|
3270
3286
|
self.env[id] = :lvar
|
3287
|
+
self.in_argdef = true
|
3271
3288
|
|
3272
3289
|
result = s(:array, s(:kwarg, id, expr).line(line)).line line
|
3273
3290
|
}
|
@@ -3277,6 +3294,7 @@ f_opt_paren_args: f_paren_args
|
|
3277
3294
|
(label, line), = val
|
3278
3295
|
id = label.to_sym
|
3279
3296
|
self.env[id] = :lvar
|
3297
|
+
self.in_argdef = true
|
3280
3298
|
|
3281
3299
|
result = s(:array, s(:kwarg, id).line(line)).line line
|
3282
3300
|
}
|
@@ -3313,9 +3331,10 @@ f_opt_paren_args: f_paren_args
|
|
3313
3331
|
}
|
3314
3332
|
| kwrest_mark
|
3315
3333
|
{
|
3334
|
+
(_, line), = val
|
3316
3335
|
id = :"**"
|
3317
|
-
self.env[id] = :lvar
|
3318
|
-
result = [id,
|
3336
|
+
self.env[id] = :lvar
|
3337
|
+
result = [id, line]
|
3319
3338
|
}
|
3320
3339
|
|
3321
3340
|
f_opt: f_arg_asgn
|
@@ -3323,10 +3342,10 @@ f_opt_paren_args: f_paren_args
|
|
3323
3342
|
arg_value
|
3324
3343
|
{
|
3325
3344
|
lhs, _, rhs = val
|
3345
|
+
self.in_argdef = true
|
3326
3346
|
result = self.assignable lhs, rhs
|
3327
3347
|
# TODO: detect duplicate names
|
3328
3348
|
# TODO? p->cur_arg = 0;
|
3329
|
-
# TODO? p->ctxt.in_argdef = 1;
|
3330
3349
|
}
|
3331
3350
|
|
3332
3351
|
f_block_opt: f_arg_asgn
|
@@ -3334,9 +3353,9 @@ f_opt_paren_args: f_paren_args
|
|
3334
3353
|
primary_value
|
3335
3354
|
{
|
3336
3355
|
lhs, _, rhs = val
|
3356
|
+
self.in_argdef = true
|
3337
3357
|
result = self.assignable lhs, rhs
|
3338
3358
|
# TODO? p->cur_arg = 0;
|
3339
|
-
# TODO? p->ctxt.in_argdef = 1;
|
3340
3359
|
}
|
3341
3360
|
|
3342
3361
|
f_block_optarg: f_block_opt
|
@@ -3373,9 +3392,10 @@ f_opt_paren_args: f_paren_args
|
|
3373
3392
|
}
|
3374
3393
|
| restarg_mark
|
3375
3394
|
{
|
3395
|
+
(_, line), = val
|
3376
3396
|
name = :"*"
|
3377
3397
|
self.env[name] = :lvar
|
3378
|
-
result = [name,
|
3398
|
+
result = [name, line]
|
3379
3399
|
}
|
3380
3400
|
|
3381
3401
|
blkarg_mark: tAMPER2 | tAMPER
|
@@ -3466,6 +3486,11 @@ f_opt_paren_args: f_paren_args
|
|
3466
3486
|
line = arg.line
|
3467
3487
|
result = s(:array, s(:kwsplat, arg).line(line)).line line
|
3468
3488
|
}
|
3489
|
+
| tDSTAR
|
3490
|
+
{
|
3491
|
+
(_, line), = val
|
3492
|
+
result = s(:array, s(:kwsplat).line(line)).line line
|
3493
|
+
}
|
3469
3494
|
|
3470
3495
|
operation: tIDENTIFIER | tCONSTANT | tFID
|
3471
3496
|
operation2: tIDENTIFIER | tCONSTANT | tFID | op
|
@@ -3480,11 +3505,10 @@ f_opt_paren_args: f_paren_args
|
|
3480
3505
|
opt_terms: | terms
|
3481
3506
|
opt_nl: | tNL
|
3482
3507
|
rparen: opt_nl tRPAREN
|
3483
|
-
|
3484
|
-
|
3485
|
-
|
3486
|
-
|
3487
|
-
# }
|
3508
|
+
{
|
3509
|
+
_, close = val # TODO: include lineno in close?
|
3510
|
+
result = [close, lexer.lineno]
|
3511
|
+
}
|
3488
3512
|
rbracket: opt_nl tRBRACK
|
3489
3513
|
{
|
3490
3514
|
_, close = val
|