ruby_parser 3.20.2 → 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 +12 -0
- data/lib/ruby30_parser.rb +27 -4
- data/lib/ruby30_parser.y +24 -2
- data/lib/ruby31_parser.rb +2777 -2669
- data/lib/ruby31_parser.y +25 -3
- data/lib/ruby32_parser.rb +2724 -2706
- data/lib/ruby32_parser.y +25 -3
- data/lib/ruby3_parser.yy +25 -3
- data/lib/ruby_lexer.rb +13 -7
- data/lib/ruby_parser_extras.rb +3 -2
- data/test/test_ruby_parser.rb +8 -0
- 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/ruby31_parser.y
CHANGED
@@ -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
|
{
|
@@ -1609,6 +1610,7 @@ rule
|
|
1609
1610
|
k_def: kDEF
|
1610
1611
|
{
|
1611
1612
|
self.comments.push self.lexer.comments
|
1613
|
+
self.in_argdef = true
|
1612
1614
|
}
|
1613
1615
|
k_do: kDO
|
1614
1616
|
k_do_block: kDO_BLOCK
|
@@ -1724,7 +1726,7 @@ rule
|
|
1724
1726
|
f_any_kwrest: f_kwrest
|
1725
1727
|
| f_no_kwarg
|
1726
1728
|
|
1727
|
-
f_eq:
|
1729
|
+
f_eq: { self.in_argdef = false } tEQL
|
1728
1730
|
|
1729
1731
|
block_args_tail: f_block_kwarg tCOMMA f_kwrest opt_f_block_arg
|
1730
1732
|
{
|
@@ -1828,6 +1830,7 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1828
1830
|
{
|
1829
1831
|
# TODO: current_arg = 0
|
1830
1832
|
result = args val
|
1833
|
+
self.in_argdef = false
|
1831
1834
|
}
|
1832
1835
|
| tOROP
|
1833
1836
|
{
|
@@ -1839,6 +1842,7 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1839
1842
|
{
|
1840
1843
|
# TODO: current_arg = 0
|
1841
1844
|
result = args val
|
1845
|
+
self.in_argdef = false
|
1842
1846
|
}
|
1843
1847
|
|
1844
1848
|
opt_bv_decl: opt_nl
|
@@ -1888,10 +1892,12 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1888
1892
|
|
1889
1893
|
f_larglist: tLPAREN2 f_args opt_bv_decl rparen
|
1890
1894
|
{
|
1895
|
+
self.in_argdef = false
|
1891
1896
|
result = args val
|
1892
1897
|
}
|
1893
1898
|
| f_args
|
1894
1899
|
{
|
1900
|
+
self.in_argdef = false
|
1895
1901
|
result = val[0]
|
1896
1902
|
result = 0 if result == s(:args)
|
1897
1903
|
}
|
@@ -3068,11 +3074,13 @@ keyword_variable: kNIL { (_, line), = val; result = s(:nil).line line }
|
|
3068
3074
|
f_opt_paren_args: f_paren_args
|
3069
3075
|
| none
|
3070
3076
|
{
|
3077
|
+
self.in_argdef = false
|
3071
3078
|
result = end_args val
|
3072
3079
|
}
|
3073
3080
|
|
3074
3081
|
f_paren_args: tLPAREN2 f_args rparen
|
3075
3082
|
{
|
3083
|
+
self.in_argdef = false
|
3076
3084
|
result = end_args val
|
3077
3085
|
}
|
3078
3086
|
|
@@ -3080,10 +3088,12 @@ f_opt_paren_args: f_paren_args
|
|
3080
3088
|
| {
|
3081
3089
|
result = self.in_kwarg
|
3082
3090
|
self.in_kwarg = true
|
3091
|
+
self.in_argdef = true
|
3083
3092
|
self.lexer.lex_state |= EXPR_LABEL
|
3084
3093
|
}
|
3085
3094
|
f_args term
|
3086
3095
|
{
|
3096
|
+
self.in_argdef = false
|
3087
3097
|
result = end_args val
|
3088
3098
|
}
|
3089
3099
|
|
@@ -3240,6 +3250,14 @@ f_opt_paren_args: f_paren_args
|
|
3240
3250
|
}
|
3241
3251
|
|
3242
3252
|
f_label: tLABEL
|
3253
|
+
{
|
3254
|
+
label, = val
|
3255
|
+
# arg_var(p, formal_argument(p, $1));
|
3256
|
+
# p->cur_arg = get_id($1);
|
3257
|
+
# p->max_numparam = ORDINAL_PARAM;
|
3258
|
+
self.in_argdef = false
|
3259
|
+
result = label
|
3260
|
+
}
|
3243
3261
|
|
3244
3262
|
f_kw: f_label arg_value
|
3245
3263
|
{
|
@@ -3248,6 +3266,7 @@ f_opt_paren_args: f_paren_args
|
|
3248
3266
|
|
3249
3267
|
identifier = label.to_sym
|
3250
3268
|
self.env[identifier] = :lvar
|
3269
|
+
self.in_argdef = true
|
3251
3270
|
|
3252
3271
|
kwarg = s(:kwarg, identifier, arg).line line
|
3253
3272
|
result = s(:array, kwarg).line line
|
@@ -3258,6 +3277,7 @@ f_opt_paren_args: f_paren_args
|
|
3258
3277
|
|
3259
3278
|
id = label.to_sym
|
3260
3279
|
self.env[id] = :lvar
|
3280
|
+
self.in_argdef = true
|
3261
3281
|
|
3262
3282
|
result = s(:array, s(:kwarg, id).line(line)).line line
|
3263
3283
|
}
|
@@ -3268,6 +3288,7 @@ f_opt_paren_args: f_paren_args
|
|
3268
3288
|
(label, line), expr = val
|
3269
3289
|
id = label.to_sym
|
3270
3290
|
self.env[id] = :lvar
|
3291
|
+
self.in_argdef = true
|
3271
3292
|
|
3272
3293
|
result = s(:array, s(:kwarg, id, expr).line(line)).line line
|
3273
3294
|
}
|
@@ -3277,6 +3298,7 @@ f_opt_paren_args: f_paren_args
|
|
3277
3298
|
(label, line), = val
|
3278
3299
|
id = label.to_sym
|
3279
3300
|
self.env[id] = :lvar
|
3301
|
+
self.in_argdef = true
|
3280
3302
|
|
3281
3303
|
result = s(:array, s(:kwarg, id).line(line)).line line
|
3282
3304
|
}
|
@@ -3324,10 +3346,10 @@ f_opt_paren_args: f_paren_args
|
|
3324
3346
|
arg_value
|
3325
3347
|
{
|
3326
3348
|
lhs, _, rhs = val
|
3349
|
+
self.in_argdef = true
|
3327
3350
|
result = self.assignable lhs, rhs
|
3328
3351
|
# TODO: detect duplicate names
|
3329
3352
|
# TODO? p->cur_arg = 0;
|
3330
|
-
# TODO? p->ctxt.in_argdef = 1;
|
3331
3353
|
}
|
3332
3354
|
|
3333
3355
|
f_block_opt: f_arg_asgn
|
@@ -3335,9 +3357,9 @@ f_opt_paren_args: f_paren_args
|
|
3335
3357
|
primary_value
|
3336
3358
|
{
|
3337
3359
|
lhs, _, rhs = val
|
3360
|
+
self.in_argdef = true
|
3338
3361
|
result = self.assignable lhs, rhs
|
3339
3362
|
# TODO? p->cur_arg = 0;
|
3340
|
-
# TODO? p->ctxt.in_argdef = 1;
|
3341
3363
|
}
|
3342
3364
|
|
3343
3365
|
f_block_optarg: f_block_opt
|