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.
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