ruby_parser 3.20.0 → 3.20.1

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/ruby27_parser.y CHANGED
@@ -223,6 +223,7 @@ rule
223
223
  | lhs tEQL mrhs
224
224
  {
225
225
  lhs, _, rhs = val
226
+
226
227
  result = new_assign lhs, s(:svalue, rhs).line(rhs.line)
227
228
  }
228
229
  | mlhs tEQL mrhs_arg kRESCUE_MOD stmt
@@ -1043,8 +1044,10 @@ rule
1043
1044
 
1044
1045
  paren_args: tLPAREN2 opt_call_args rparen
1045
1046
  {
1046
- _, args, _ = val
1047
+ _, args, (_, line_max) = val
1048
+
1047
1049
  result = args
1050
+ result.line_max = line_max if args
1048
1051
  }
1049
1052
  | tLPAREN2 args tCOMMA args_forward rparen
1050
1053
  {
@@ -1267,12 +1270,14 @@ rule
1267
1270
  {
1268
1271
  result = wrap :colon3, val[1]
1269
1272
  }
1270
- | tLBRACK { result = lexer.lineno } aref_args tRBRACK
1273
+ | tLBRACK { result = lexer.lineno } aref_args rbracket
1271
1274
  {
1272
- _, line, args, _ = val
1275
+ _, line, args, (_, line_max) = val
1276
+
1273
1277
  result = args || s(:array)
1274
1278
  result.sexp_type = :array # aref_args is :args
1275
1279
  result.line line
1280
+ result.line_max = line_max
1276
1281
  }
1277
1282
  | tLBRACE
1278
1283
  {
@@ -1870,13 +1875,19 @@ opt_block_args_tail: tCOMMA block_args_tail
1870
1875
  {
1871
1876
  call, args = val
1872
1877
 
1873
- result = call.concat args.sexp_body if args
1878
+ result = call
1879
+
1880
+ if args then
1881
+ call.concat args.sexp_body
1882
+ result.line_max = args.line_max
1883
+ end
1874
1884
  }
1875
1885
  | primary_value call_op operation2 opt_paren_args
1876
1886
  {
1877
- recv, call_op, (op, _line), args = val
1887
+ recv, call_op, (op, op_line), args = val
1878
1888
 
1879
1889
  result = new_call recv, op.to_sym, args, call_op
1890
+ result.line_max = op_line unless args
1880
1891
  }
1881
1892
  | primary_value tCOLON2 operation2 paren_args
1882
1893
  {
@@ -2596,15 +2607,17 @@ opt_block_args_tail: tCOMMA block_args_tail
2596
2607
 
2597
2608
  words: tWORDS_BEG tSPACE tSTRING_END
2598
2609
  {
2599
- (_, line), _, _ = val
2610
+ (_, line), _, (_, line_max) = val
2600
2611
 
2601
2612
  result = s(:array).line line
2613
+ result.line_max = line_max
2602
2614
  }
2603
2615
  | tWORDS_BEG word_list tSTRING_END
2604
2616
  {
2605
- (_, line), list, _ = val
2617
+ (_, line), list, (_, line_max) = val
2606
2618
 
2607
2619
  result = list.line line
2620
+ result.line_max = line_max
2608
2621
  }
2609
2622
 
2610
2623
  word_list: none
@@ -2624,15 +2637,17 @@ opt_block_args_tail: tCOMMA block_args_tail
2624
2637
 
2625
2638
  symbols: tSYMBOLS_BEG tSPACE tSTRING_END
2626
2639
  {
2627
- (_, line), _, _ = val
2640
+ (_, line), _, (_, line_max) = val
2628
2641
 
2629
2642
  result = s(:array).line line
2643
+ result.line_max = line_max
2630
2644
  }
2631
2645
  | tSYMBOLS_BEG symbol_list tSTRING_END
2632
2646
  {
2633
- (_, line), list, _, = val
2634
- list.line line
2635
- result = list
2647
+ (_, line), list, (_, line_max), = val
2648
+
2649
+ result = list.line line
2650
+ result.line_max = line_max
2636
2651
  }
2637
2652
 
2638
2653
  symbol_list: none
@@ -2647,28 +2662,32 @@ opt_block_args_tail: tCOMMA block_args_tail
2647
2662
 
2648
2663
  qwords: tQWORDS_BEG tSPACE tSTRING_END
2649
2664
  {
2650
- (_, line), _, _ = val
2665
+ (_, line), _, (_, line_max) = val
2651
2666
 
2652
2667
  result = s(:array).line line
2668
+ result.line_max = line_max
2653
2669
  }
2654
2670
  | tQWORDS_BEG qword_list tSTRING_END
2655
2671
  {
2656
- (_, line), list, _ = val
2672
+ (_, line), list, (_, line_max) = val
2657
2673
 
2658
2674
  result = list.line line
2675
+ result.line_max = line_max
2659
2676
  }
2660
2677
 
2661
2678
  qsymbols: tQSYMBOLS_BEG tSPACE tSTRING_END
2662
2679
  {
2663
- (_, line), _, _ = val
2680
+ (_, line), _, (_, line_max) = val
2664
2681
 
2665
2682
  result = s(:array).line line
2683
+ result.line_max = line_max
2666
2684
  }
2667
2685
  | tQSYMBOLS_BEG qsym_list tSTRING_END
2668
2686
  {
2669
- (_, line), list, _ = val
2687
+ (_, line), list, (_, line_max) = val
2670
2688
 
2671
2689
  result = list.line line
2690
+ result.line_max = line_max
2672
2691
  }
2673
2692
 
2674
2693
  qword_list: none
@@ -3088,7 +3107,14 @@ keyword_variable: kNIL { result = s(:nil).line lexer.lineno }
3088
3107
  result = s(:args, list).line list.line
3089
3108
  end
3090
3109
 
3091
- result << (Sexp === item ? item : item.first)
3110
+ if Sexp === item then
3111
+ line_max = item.line_max
3112
+ else
3113
+ item, line_max = item
3114
+ end
3115
+
3116
+ result << item
3117
+ result.line_max = line_max
3092
3118
  }
3093
3119
 
3094
3120
  f_label: tLABEL
@@ -3310,7 +3336,15 @@ keyword_variable: kNIL { result = s(:nil).line lexer.lineno }
3310
3336
  opt_terms: | terms
3311
3337
  opt_nl: | tNL
3312
3338
  rparen: opt_nl tRPAREN
3339
+ {
3340
+ _, close = val
3341
+ result = [close, lexer.lineno]
3342
+ }
3313
3343
  rbracket: opt_nl tRBRACK
3344
+ {
3345
+ _, close = val
3346
+ result = [close, lexer.lineno]
3347
+ }
3314
3348
  rbrace: opt_nl tRCURLY
3315
3349
  trailer: | tNL | tCOMMA
3316
3350