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.
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: tEQL # TODO: self.in_argdef = false
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