ruby_parser 3.20.2 → 3.20.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|