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/ruby30_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
|
|
@@ -392,6 +392,7 @@ rule
|
|
392
392
|
defs_head: k_def singleton dot_or_colon
|
393
393
|
{
|
394
394
|
lexer.lex_state = EXPR_FNAME
|
395
|
+
self.in_argdef = true
|
395
396
|
}
|
396
397
|
def_name
|
397
398
|
{
|
@@ -605,7 +606,7 @@ rule
|
|
605
606
|
}
|
606
607
|
| tSTAR
|
607
608
|
{
|
608
|
-
l =
|
609
|
+
(_, l), = val
|
609
610
|
result = s(:masgn, s(:array, s(:splat).line(l)).line(l)).line l
|
610
611
|
}
|
611
612
|
| tSTAR tCOMMA mlhs_post
|
@@ -1230,7 +1231,7 @@ rule
|
|
1230
1231
|
args: arg_value
|
1231
1232
|
{
|
1232
1233
|
arg, = val
|
1233
|
-
lineno = arg.line
|
1234
|
+
lineno = arg.line
|
1234
1235
|
|
1235
1236
|
result = s(:array, arg).line lineno
|
1236
1237
|
}
|
@@ -1246,9 +1247,7 @@ rule
|
|
1246
1247
|
}
|
1247
1248
|
| args tCOMMA tSTAR arg_value
|
1248
1249
|
{
|
1249
|
-
|
1250
|
-
args, _, _, id = val
|
1251
|
-
line = lexer.lineno
|
1250
|
+
args, _, (_, line), id = val
|
1252
1251
|
result = self.list_append args, s(:splat, id).line(line)
|
1253
1252
|
}
|
1254
1253
|
|
@@ -1267,7 +1266,6 @@ rule
|
|
1267
1266
|
}
|
1268
1267
|
| args tCOMMA tSTAR arg_value
|
1269
1268
|
{
|
1270
|
-
# TODO: make all tXXXX terminals include lexer.lineno
|
1271
1269
|
arg, _, _, splat = val
|
1272
1270
|
result = self.arg_concat arg, splat
|
1273
1271
|
}
|
@@ -1296,7 +1294,6 @@ rule
|
|
1296
1294
|
| k_begin
|
1297
1295
|
{
|
1298
1296
|
lexer.cmdarg.push false
|
1299
|
-
result = self.lexer.lineno
|
1300
1297
|
}
|
1301
1298
|
bodystmt k_end
|
1302
1299
|
{
|
@@ -1306,11 +1303,10 @@ rule
|
|
1306
1303
|
| tLPAREN_ARG
|
1307
1304
|
{
|
1308
1305
|
lexer.lex_state = EXPR_ENDARG
|
1309
|
-
result = lexer.lineno
|
1310
1306
|
}
|
1311
1307
|
rparen
|
1312
1308
|
{
|
1313
|
-
_, line, _ = val
|
1309
|
+
(_, line), _, _ = val
|
1314
1310
|
result = s(:begin).line line
|
1315
1311
|
}
|
1316
1312
|
| tLPAREN_ARG
|
@@ -1326,9 +1322,8 @@ rule
|
|
1326
1322
|
}
|
1327
1323
|
| tLPAREN compstmt tRPAREN
|
1328
1324
|
{
|
1329
|
-
_, stmt, _ = val
|
1330
|
-
result = stmt
|
1331
|
-
result ||= s(:nil).line lexer.lineno
|
1325
|
+
(_, line), stmt, _ = val
|
1326
|
+
result = stmt || s(:nil).line(line)
|
1332
1327
|
result.paren = true
|
1333
1328
|
}
|
1334
1329
|
| primary_value tCOLON2 tCONSTANT
|
@@ -1341,9 +1336,9 @@ rule
|
|
1341
1336
|
{
|
1342
1337
|
result = wrap :colon3, val[1]
|
1343
1338
|
}
|
1344
|
-
| tLBRACK
|
1339
|
+
| tLBRACK aref_args rbracket
|
1345
1340
|
{
|
1346
|
-
_, line, args, (_, line_max) = val
|
1341
|
+
(_, line), args, (_, line_max) = val
|
1347
1342
|
|
1348
1343
|
result = args || s(:array)
|
1349
1344
|
result.sexp_type = :array # aref_args is :args
|
@@ -1459,9 +1454,6 @@ rule
|
|
1459
1454
|
result = new_for iter, var, body
|
1460
1455
|
}
|
1461
1456
|
| k_class
|
1462
|
-
{
|
1463
|
-
result = self.lexer.lineno
|
1464
|
-
}
|
1465
1457
|
cpath superclass
|
1466
1458
|
{
|
1467
1459
|
if (self.in_def || self.in_single > 0) then
|
@@ -1476,9 +1468,6 @@ rule
|
|
1476
1468
|
self.lexer.ignore_body_comments
|
1477
1469
|
}
|
1478
1470
|
| k_class tLSHFT
|
1479
|
-
{
|
1480
|
-
result = self.lexer.lineno
|
1481
|
-
}
|
1482
1471
|
expr
|
1483
1472
|
{
|
1484
1473
|
result = self.in_def
|
@@ -1490,16 +1479,14 @@ rule
|
|
1490
1479
|
self.in_single = 0
|
1491
1480
|
self.env.extend
|
1492
1481
|
}
|
1493
|
-
bodystmt
|
1482
|
+
bodystmt
|
1483
|
+
k_end
|
1494
1484
|
{
|
1495
1485
|
result = new_sclass val
|
1496
1486
|
self.env.unextend
|
1497
1487
|
self.lexer.ignore_body_comments
|
1498
1488
|
}
|
1499
1489
|
| k_module
|
1500
|
-
{
|
1501
|
-
result = self.lexer.lineno
|
1502
|
-
}
|
1503
1490
|
cpath
|
1504
1491
|
{
|
1505
1492
|
yyerror "module definition in method body" if
|
@@ -1602,6 +1589,7 @@ rule
|
|
1602
1589
|
k_def: kDEF
|
1603
1590
|
{
|
1604
1591
|
self.comments.push self.lexer.comments
|
1592
|
+
self.in_argdef = true
|
1605
1593
|
}
|
1606
1594
|
k_do: kDO
|
1607
1595
|
k_do_block: kDO_BLOCK
|
@@ -1641,20 +1629,33 @@ rule
|
|
1641
1629
|
}
|
1642
1630
|
|
1643
1631
|
f_marg: f_norm_arg
|
1632
|
+
{
|
1633
|
+
(sym, line), = val
|
1634
|
+
|
1635
|
+
result = s(:dummy, sym).line line
|
1636
|
+
}
|
1644
1637
|
| tLPAREN f_margs rparen
|
1645
1638
|
{
|
1646
|
-
|
1639
|
+
_, args, _ = val
|
1640
|
+
result = args
|
1647
1641
|
}
|
1648
1642
|
|
1649
1643
|
f_marg_list: f_marg
|
1650
1644
|
{
|
1651
|
-
|
1645
|
+
arg, = val
|
1646
|
+
line = arg.line
|
1647
|
+
|
1648
|
+
arg = arg.last if arg.sexp_type == :dummy
|
1652
1649
|
|
1653
|
-
result = s(:array,
|
1650
|
+
result = s(:array, arg).line line
|
1654
1651
|
}
|
1655
1652
|
| f_marg_list tCOMMA f_marg
|
1656
1653
|
{
|
1657
|
-
|
1654
|
+
args, _, arg = val
|
1655
|
+
|
1656
|
+
arg = arg.last if arg.sexp_type == :dummy
|
1657
|
+
|
1658
|
+
result = list_append args, arg
|
1658
1659
|
}
|
1659
1660
|
|
1660
1661
|
f_margs: f_marg_list
|
@@ -1697,8 +1698,8 @@ rule
|
|
1697
1698
|
}
|
1698
1699
|
| tSTAR
|
1699
1700
|
{
|
1700
|
-
|
1701
|
-
result.line
|
1701
|
+
(_, line), = val
|
1702
|
+
result = args([:*]).line line
|
1702
1703
|
}
|
1703
1704
|
|
1704
1705
|
f_any_kwrest: f_kwrest
|
@@ -1807,15 +1808,19 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1807
1808
|
{
|
1808
1809
|
# TODO: current_arg = 0
|
1809
1810
|
result = args val
|
1811
|
+
self.in_argdef = false
|
1810
1812
|
}
|
1811
1813
|
| tOROP
|
1812
1814
|
{
|
1813
|
-
|
1815
|
+
(_, line), = val
|
1816
|
+
|
1817
|
+
result = s(:args).line line
|
1814
1818
|
}
|
1815
1819
|
| tPIPE block_param opt_bv_decl tPIPE
|
1816
1820
|
{
|
1817
1821
|
# TODO: current_arg = 0
|
1818
1822
|
result = args val
|
1823
|
+
self.in_argdef = false
|
1819
1824
|
}
|
1820
1825
|
|
1821
1826
|
opt_bv_decl: opt_nl
|
@@ -1842,7 +1847,7 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1842
1847
|
lambda: tLAMBDA
|
1843
1848
|
{
|
1844
1849
|
self.env.extend :dynamic
|
1845
|
-
result =
|
1850
|
+
result = lexer.lpar_beg
|
1846
1851
|
lexer.paren_nest += 1
|
1847
1852
|
lexer.lpar_beg = lexer.paren_nest
|
1848
1853
|
}
|
@@ -1852,7 +1857,7 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1852
1857
|
}
|
1853
1858
|
lambda_body
|
1854
1859
|
{
|
1855
|
-
_,
|
1860
|
+
(_, line), lpar, args, _cmdarg, body = val
|
1856
1861
|
lexer.lpar_beg = lpar
|
1857
1862
|
|
1858
1863
|
lexer.cmdarg.pop
|
@@ -1865,10 +1870,12 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1865
1870
|
|
1866
1871
|
f_larglist: tLPAREN2 f_args opt_bv_decl rparen
|
1867
1872
|
{
|
1873
|
+
self.in_argdef = false
|
1868
1874
|
result = args val
|
1869
1875
|
}
|
1870
1876
|
| f_args
|
1871
1877
|
{
|
1878
|
+
self.in_argdef = false
|
1872
1879
|
result = val[0]
|
1873
1880
|
result = 0 if result == s(:args)
|
1874
1881
|
}
|
@@ -1976,7 +1983,8 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1976
1983
|
}
|
1977
1984
|
| kSUPER
|
1978
1985
|
{
|
1979
|
-
|
1986
|
+
(_, line), = val
|
1987
|
+
result = s(:zsuper).line line
|
1980
1988
|
}
|
1981
1989
|
| primary_value tLBRACK2 opt_call_args rbracket
|
1982
1990
|
{
|
@@ -1986,11 +1994,11 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1986
1994
|
brace_block: tLCURLY
|
1987
1995
|
{
|
1988
1996
|
self.env.extend :dynamic
|
1989
|
-
result = self.lexer.lineno
|
1990
1997
|
}
|
1991
|
-
brace_body
|
1998
|
+
brace_body
|
1999
|
+
tRCURLY
|
1992
2000
|
{
|
1993
|
-
_, line, body, _ = val
|
2001
|
+
(_, line), _, body, _ = val
|
1994
2002
|
|
1995
2003
|
result = body
|
1996
2004
|
result.line line
|
@@ -2000,11 +2008,11 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2000
2008
|
| k_do
|
2001
2009
|
{
|
2002
2010
|
self.env.extend :dynamic
|
2003
|
-
result = self.lexer.lineno
|
2004
2011
|
}
|
2005
|
-
do_body
|
2012
|
+
do_body
|
2013
|
+
kEND
|
2006
2014
|
{
|
2007
|
-
_, line, body, _ = val
|
2015
|
+
(_, line), _, body, _ = val
|
2008
2016
|
|
2009
2017
|
result = body
|
2010
2018
|
result.line line
|
@@ -2062,14 +2070,13 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2062
2070
|
}
|
2063
2071
|
|
2064
2072
|
case_body: k_when
|
2065
|
-
{
|
2066
|
-
result = self.lexer.lineno
|
2067
|
-
}
|
2068
2073
|
case_args then compstmt cases
|
2069
2074
|
{
|
2070
|
-
|
2071
|
-
|
2072
|
-
result
|
2075
|
+
(_, line), case_args, _then, body, cases = val
|
2076
|
+
|
2077
|
+
result = new_when case_args, body
|
2078
|
+
result.line line
|
2079
|
+
result << cases if cases
|
2073
2080
|
}
|
2074
2081
|
|
2075
2082
|
cases: opt_else | case_body
|
@@ -2844,7 +2851,6 @@ regexp_contents: none
|
|
2844
2851
|
lexer.brace_nest,
|
2845
2852
|
lexer.string_nest, # TODO: remove
|
2846
2853
|
lexer.lex_state,
|
2847
|
-
lexer.lineno,
|
2848
2854
|
]
|
2849
2855
|
|
2850
2856
|
lexer.cmdarg.push false
|
@@ -2859,9 +2865,9 @@ regexp_contents: none
|
|
2859
2865
|
compstmt
|
2860
2866
|
tSTRING_DEND
|
2861
2867
|
{
|
2862
|
-
_, memo, stmt, _ = val
|
2868
|
+
(_, line), memo, stmt, _ = val
|
2863
2869
|
|
2864
|
-
lex_strterm, brace_nest, string_nest, oldlex_state
|
2870
|
+
lex_strterm, brace_nest, string_nest, oldlex_state = memo
|
2865
2871
|
# TODO: heredoc_indent
|
2866
2872
|
|
2867
2873
|
lexer.lex_strterm = lex_strterm
|
@@ -2921,11 +2927,11 @@ regexp_contents: none
|
|
2921
2927
|
|
2922
2928
|
dsym: tSYMBEG string_contents tSTRING_END
|
2923
2929
|
{
|
2924
|
-
_, result, _ = val
|
2930
|
+
(_, line), result, _ = val
|
2925
2931
|
|
2926
2932
|
lexer.lex_state = EXPR_END
|
2927
2933
|
|
2928
|
-
result ||= s(:str, "").line
|
2934
|
+
result ||= s(:str, "").line line
|
2929
2935
|
|
2930
2936
|
case result.sexp_type
|
2931
2937
|
when :dstr then
|
@@ -2958,15 +2964,15 @@ regexp_contents: none
|
|
2958
2964
|
| tCONSTANT
|
2959
2965
|
| tCVAR
|
2960
2966
|
|
2961
|
-
keyword_variable: kNIL { result = s(:nil).line
|
2962
|
-
| kSELF { result = s(:self).line
|
2963
|
-
| kTRUE { result = s(:true).line
|
2964
|
-
| kFALSE { result = s(:false).line
|
2965
|
-
| k__FILE__ { result = s(:str, self.file).line
|
2966
|
-
| k__LINE__ { result = s(:lit,
|
2967
|
+
keyword_variable: kNIL { (_, line), = val; result = s(:nil).line line }
|
2968
|
+
| kSELF { (_, line), = val; result = s(:self).line line }
|
2969
|
+
| kTRUE { (_, line), = val; result = s(:true).line line }
|
2970
|
+
| kFALSE { (_, line), = val; result = s(:false).line line }
|
2971
|
+
| k__FILE__ { (_, line), = val; result = s(:str, self.file).line line }
|
2972
|
+
| k__LINE__ { (_, line), = val; result = s(:lit, line).line line }
|
2967
2973
|
| k__ENCODING__
|
2968
2974
|
{
|
2969
|
-
l =
|
2975
|
+
(_, l), = val
|
2970
2976
|
result =
|
2971
2977
|
if defined? Encoding then
|
2972
2978
|
s(:colon2, s(:const, :Encoding).line(l), :UTF_8).line l
|
@@ -3027,11 +3033,13 @@ keyword_variable: kNIL { result = s(:nil).line lexer.lineno }
|
|
3027
3033
|
f_opt_paren_args: f_paren_args
|
3028
3034
|
| none
|
3029
3035
|
{
|
3036
|
+
self.in_argdef = false
|
3030
3037
|
result = end_args val
|
3031
3038
|
}
|
3032
3039
|
|
3033
3040
|
f_paren_args: tLPAREN2 f_args rparen
|
3034
3041
|
{
|
3042
|
+
self.in_argdef = false
|
3035
3043
|
result = end_args val
|
3036
3044
|
}
|
3037
3045
|
| tLPAREN2 f_arg tCOMMA args_forward rparen
|
@@ -3047,10 +3055,12 @@ f_opt_paren_args: f_paren_args
|
|
3047
3055
|
| {
|
3048
3056
|
result = self.in_kwarg
|
3049
3057
|
self.in_kwarg = true
|
3058
|
+
self.in_argdef = true
|
3050
3059
|
self.lexer.lex_state |= EXPR_LABEL
|
3051
3060
|
}
|
3052
3061
|
f_args term
|
3053
3062
|
{
|
3063
|
+
self.in_argdef = false
|
3054
3064
|
result = end_args val
|
3055
3065
|
}
|
3056
3066
|
|
@@ -3136,12 +3146,12 @@ f_opt_paren_args: f_paren_args
|
|
3136
3146
|
|
|
3137
3147
|
{
|
3138
3148
|
result = args val
|
3139
|
-
# result.line lexer.lineno
|
3140
3149
|
}
|
3141
3150
|
|
3142
3151
|
args_forward: tBDOT3
|
3143
3152
|
{
|
3144
|
-
|
3153
|
+
(_, line), = val
|
3154
|
+
result = s(:forward_args).line line
|
3145
3155
|
}
|
3146
3156
|
|
3147
3157
|
f_bad_arg: tCONSTANT
|
@@ -3206,6 +3216,14 @@ f_opt_paren_args: f_paren_args
|
|
3206
3216
|
}
|
3207
3217
|
|
3208
3218
|
f_label: tLABEL
|
3219
|
+
{
|
3220
|
+
label, = val
|
3221
|
+
# arg_var(p, formal_argument(p, $1));
|
3222
|
+
# p->cur_arg = get_id($1);
|
3223
|
+
# p->max_numparam = ORDINAL_PARAM;
|
3224
|
+
self.in_argdef = false
|
3225
|
+
result = label
|
3226
|
+
}
|
3209
3227
|
|
3210
3228
|
f_kw: f_label arg_value
|
3211
3229
|
{
|
@@ -3214,6 +3232,7 @@ f_opt_paren_args: f_paren_args
|
|
3214
3232
|
|
3215
3233
|
identifier = label.to_sym
|
3216
3234
|
self.env[identifier] = :lvar
|
3235
|
+
self.in_argdef = true
|
3217
3236
|
|
3218
3237
|
kwarg = s(:kwarg, identifier, arg).line line
|
3219
3238
|
result = s(:array, kwarg).line line
|
@@ -3224,6 +3243,7 @@ f_opt_paren_args: f_paren_args
|
|
3224
3243
|
|
3225
3244
|
id = label.to_sym
|
3226
3245
|
self.env[id] = :lvar
|
3246
|
+
self.in_argdef = true
|
3227
3247
|
|
3228
3248
|
result = s(:array, s(:kwarg, id).line(line)).line line
|
3229
3249
|
}
|
@@ -3234,6 +3254,7 @@ f_opt_paren_args: f_paren_args
|
|
3234
3254
|
(label, line), expr = val
|
3235
3255
|
id = label.to_sym
|
3236
3256
|
self.env[id] = :lvar
|
3257
|
+
self.in_argdef = true
|
3237
3258
|
|
3238
3259
|
result = s(:array, s(:kwarg, id, expr).line(line)).line line
|
3239
3260
|
}
|
@@ -3243,6 +3264,7 @@ f_opt_paren_args: f_paren_args
|
|
3243
3264
|
(label, line), = val
|
3244
3265
|
id = label.to_sym
|
3245
3266
|
self.env[id] = :lvar
|
3267
|
+
self.in_argdef = true
|
3246
3268
|
|
3247
3269
|
result = s(:array, s(:kwarg, id).line(line)).line line
|
3248
3270
|
}
|
@@ -3279,9 +3301,10 @@ f_opt_paren_args: f_paren_args
|
|
3279
3301
|
}
|
3280
3302
|
| kwrest_mark
|
3281
3303
|
{
|
3304
|
+
(_, line), = val
|
3282
3305
|
id = :"**"
|
3283
|
-
self.env[id] = :lvar
|
3284
|
-
result = [id,
|
3306
|
+
self.env[id] = :lvar
|
3307
|
+
result = [id, line]
|
3285
3308
|
}
|
3286
3309
|
|
3287
3310
|
f_opt: f_arg_asgn
|
@@ -3289,10 +3312,10 @@ f_opt_paren_args: f_paren_args
|
|
3289
3312
|
arg_value
|
3290
3313
|
{
|
3291
3314
|
lhs, _, rhs = val
|
3315
|
+
self.in_argdef = true
|
3292
3316
|
result = self.assignable lhs, rhs
|
3293
3317
|
# TODO: detect duplicate names
|
3294
3318
|
# TODO? p->cur_arg = 0;
|
3295
|
-
# TODO? p->ctxt.in_argdef = 1;
|
3296
3319
|
}
|
3297
3320
|
|
3298
3321
|
f_block_opt: f_arg_asgn
|
@@ -3300,9 +3323,9 @@ f_opt_paren_args: f_paren_args
|
|
3300
3323
|
primary_value
|
3301
3324
|
{
|
3302
3325
|
lhs, _, rhs = val
|
3326
|
+
self.in_argdef = true
|
3303
3327
|
result = self.assignable lhs, rhs
|
3304
3328
|
# TODO? p->cur_arg = 0;
|
3305
|
-
# TODO? p->ctxt.in_argdef = 1;
|
3306
3329
|
}
|
3307
3330
|
|
3308
3331
|
f_block_optarg: f_block_opt
|
@@ -3339,9 +3362,10 @@ f_opt_paren_args: f_paren_args
|
|
3339
3362
|
}
|
3340
3363
|
| restarg_mark
|
3341
3364
|
{
|
3365
|
+
(_, line), = val
|
3342
3366
|
name = :"*"
|
3343
3367
|
self.env[name] = :lvar
|
3344
|
-
result = [name,
|
3368
|
+
result = [name, line]
|
3345
3369
|
}
|
3346
3370
|
|
3347
3371
|
blkarg_mark: tAMPER2 | tAMPER
|
@@ -3446,11 +3470,10 @@ f_opt_paren_args: f_paren_args
|
|
3446
3470
|
opt_terms: | terms
|
3447
3471
|
opt_nl: | tNL
|
3448
3472
|
rparen: opt_nl tRPAREN
|
3449
|
-
|
3450
|
-
|
3451
|
-
|
3452
|
-
|
3453
|
-
# }
|
3473
|
+
{
|
3474
|
+
_, close = val # TODO: include lineno in close?
|
3475
|
+
result = [close, lexer.lineno]
|
3476
|
+
}
|
3454
3477
|
rbracket: opt_nl tRBRACK
|
3455
3478
|
{
|
3456
3479
|
_, close = val
|