ruby_parser 3.20.0 → 3.20.1
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 +6 -0
- data/lib/ruby20_parser.rb +170 -134
- data/lib/ruby20_parser.y +50 -16
- data/lib/ruby21_parser.rb +110 -74
- data/lib/ruby21_parser.y +50 -16
- data/lib/ruby22_parser.rb +238 -202
- data/lib/ruby22_parser.y +50 -16
- data/lib/ruby23_parser.rb +383 -347
- data/lib/ruby23_parser.y +50 -16
- data/lib/ruby24_parser.rb +96 -60
- data/lib/ruby24_parser.y +50 -16
- data/lib/ruby25_parser.rb +92 -56
- data/lib/ruby25_parser.y +50 -16
- data/lib/ruby26_parser.rb +92 -56
- data/lib/ruby26_parser.y +50 -16
- data/lib/ruby27_parser.rb +574 -538
- data/lib/ruby27_parser.y +50 -16
- data/lib/ruby30_parser.rb +357 -331
- data/lib/ruby30_parser.y +42 -16
- data/lib/ruby31_parser.rb +174 -148
- data/lib/ruby31_parser.y +42 -16
- data/lib/ruby32_parser.rb +174 -148
- data/lib/ruby32_parser.y +42 -16
- data/lib/ruby3_parser.yy +42 -16
- data/lib/ruby_parser.yy +50 -16
- data/lib/ruby_parser_extras.rb +19 -13
- data/test/test_ruby_parser.rb +156 -6
- data.tar.gz.sig +0 -0
- metadata +3 -3
- metadata.gz.sig +0 -0
data/lib/ruby32_parser.y
CHANGED
@@ -221,6 +221,7 @@ rule
|
|
221
221
|
| lhs tEQL mrhs
|
222
222
|
{
|
223
223
|
lhs, _, rhs = val
|
224
|
+
|
224
225
|
result = new_assign lhs, s(:svalue, rhs).line(rhs.line)
|
225
226
|
}
|
226
227
|
| mlhs tEQL mrhs_arg kRESCUE_MOD stmt
|
@@ -1130,8 +1131,10 @@ rule
|
|
1130
1131
|
|
1131
1132
|
paren_args: tLPAREN2 opt_call_args rparen
|
1132
1133
|
{
|
1133
|
-
_, args, _ = val
|
1134
|
+
_, args, (_, line_max) = val
|
1135
|
+
|
1134
1136
|
result = args
|
1137
|
+
result.line_max = line_max if args
|
1135
1138
|
}
|
1136
1139
|
| tLPAREN2 args tCOMMA args_forward rparen
|
1137
1140
|
{
|
@@ -1359,12 +1362,14 @@ rule
|
|
1359
1362
|
{
|
1360
1363
|
result = wrap :colon3, val[1]
|
1361
1364
|
}
|
1362
|
-
| tLBRACK { result = lexer.lineno } aref_args
|
1365
|
+
| tLBRACK { result = lexer.lineno } aref_args rbracket
|
1363
1366
|
{
|
1364
|
-
_, line, args, _ = val
|
1367
|
+
_, line, args, (_, line_max) = val
|
1368
|
+
|
1365
1369
|
result = args || s(:array)
|
1366
1370
|
result.sexp_type = :array # aref_args is :args
|
1367
1371
|
result.line line
|
1372
|
+
result.line_max = line_max
|
1368
1373
|
}
|
1369
1374
|
| tLBRACE
|
1370
1375
|
{
|
@@ -1953,13 +1958,19 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1953
1958
|
{
|
1954
1959
|
call, args = val
|
1955
1960
|
|
1956
|
-
result = call
|
1961
|
+
result = call
|
1962
|
+
|
1963
|
+
if args then
|
1964
|
+
call.concat args.sexp_body
|
1965
|
+
result.line_max = args.line_max
|
1966
|
+
end
|
1957
1967
|
}
|
1958
1968
|
| primary_value call_op operation2 opt_paren_args
|
1959
1969
|
{
|
1960
|
-
recv, call_op, (op,
|
1970
|
+
recv, call_op, (op, op_line), args = val
|
1961
1971
|
|
1962
1972
|
result = new_call recv, op.to_sym, args, call_op
|
1973
|
+
result.line_max = op_line unless args
|
1963
1974
|
}
|
1964
1975
|
| primary_value tCOLON2 operation2 paren_args
|
1965
1976
|
{
|
@@ -2716,15 +2727,17 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2716
2727
|
|
2717
2728
|
words: tWORDS_BEG tSPACE tSTRING_END
|
2718
2729
|
{
|
2719
|
-
(_, line), _, _ = val
|
2730
|
+
(_, line), _, (_, line_max) = val
|
2720
2731
|
|
2721
2732
|
result = s(:array).line line
|
2733
|
+
result.line_max = line_max
|
2722
2734
|
}
|
2723
2735
|
| tWORDS_BEG word_list tSTRING_END
|
2724
2736
|
{
|
2725
|
-
(_, line), list, _ = val
|
2737
|
+
(_, line), list, (_, line_max) = val
|
2726
2738
|
|
2727
2739
|
result = list.line line
|
2740
|
+
result.line_max = line_max
|
2728
2741
|
}
|
2729
2742
|
|
2730
2743
|
word_list: none
|
@@ -2744,15 +2757,17 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2744
2757
|
|
2745
2758
|
symbols: tSYMBOLS_BEG tSPACE tSTRING_END
|
2746
2759
|
{
|
2747
|
-
(_, line), _, _ = val
|
2760
|
+
(_, line), _, (_, line_max) = val
|
2748
2761
|
|
2749
2762
|
result = s(:array).line line
|
2763
|
+
result.line_max = line_max
|
2750
2764
|
}
|
2751
2765
|
| tSYMBOLS_BEG symbol_list tSTRING_END
|
2752
2766
|
{
|
2753
|
-
(_, line), list, _, = val
|
2754
|
-
|
2755
|
-
result = list
|
2767
|
+
(_, line), list, (_, line_max), = val
|
2768
|
+
|
2769
|
+
result = list.line line
|
2770
|
+
result.line_max = line_max
|
2756
2771
|
}
|
2757
2772
|
|
2758
2773
|
symbol_list: none
|
@@ -2767,28 +2782,32 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2767
2782
|
|
2768
2783
|
qwords: tQWORDS_BEG tSPACE tSTRING_END
|
2769
2784
|
{
|
2770
|
-
(_, line), _, _ = val
|
2785
|
+
(_, line), _, (_, line_max) = val
|
2771
2786
|
|
2772
2787
|
result = s(:array).line line
|
2788
|
+
result.line_max = line_max
|
2773
2789
|
}
|
2774
2790
|
| tQWORDS_BEG qword_list tSTRING_END
|
2775
2791
|
{
|
2776
|
-
(_, line), list, _ = val
|
2792
|
+
(_, line), list, (_, line_max) = val
|
2777
2793
|
|
2778
2794
|
result = list.line line
|
2795
|
+
result.line_max = line_max
|
2779
2796
|
}
|
2780
2797
|
|
2781
2798
|
qsymbols: tQSYMBOLS_BEG tSPACE tSTRING_END
|
2782
2799
|
{
|
2783
|
-
(_, line), _, _ = val
|
2800
|
+
(_, line), _, (_, line_max) = val
|
2784
2801
|
|
2785
2802
|
result = s(:array).line line
|
2803
|
+
result.line_max = line_max
|
2786
2804
|
}
|
2787
2805
|
| tQSYMBOLS_BEG qsym_list tSTRING_END
|
2788
2806
|
{
|
2789
|
-
(_, line), list, _ = val
|
2807
|
+
(_, line), list, (_, line_max) = val
|
2790
2808
|
|
2791
2809
|
result = list.line line
|
2810
|
+
result.line_max = line_max
|
2792
2811
|
}
|
2793
2812
|
|
2794
2813
|
qword_list: none
|
@@ -3210,7 +3229,14 @@ f_opt_paren_args: f_paren_args
|
|
3210
3229
|
result = s(:args, list).line list.line
|
3211
3230
|
end
|
3212
3231
|
|
3213
|
-
|
3232
|
+
if Sexp === item then
|
3233
|
+
line_max = item.line_max
|
3234
|
+
else
|
3235
|
+
item, line_max = item
|
3236
|
+
end
|
3237
|
+
|
3238
|
+
result << item
|
3239
|
+
result.line_max = line_max
|
3214
3240
|
}
|
3215
3241
|
|
3216
3242
|
f_label: tLABEL
|
data/lib/ruby3_parser.yy
CHANGED
@@ -229,6 +229,7 @@ rule
|
|
229
229
|
| lhs tEQL mrhs
|
230
230
|
{
|
231
231
|
lhs, _, rhs = val
|
232
|
+
|
232
233
|
result = new_assign lhs, s(:svalue, rhs).line(rhs.line)
|
233
234
|
}
|
234
235
|
| mlhs tEQL mrhs_arg kRESCUE_MOD stmt
|
@@ -1148,8 +1149,10 @@ rule
|
|
1148
1149
|
|
1149
1150
|
paren_args: tLPAREN2 opt_call_args rparen
|
1150
1151
|
{
|
1151
|
-
_, args, _ = val
|
1152
|
+
_, args, (_, line_max) = val
|
1153
|
+
|
1152
1154
|
result = args
|
1155
|
+
result.line_max = line_max if args
|
1153
1156
|
}
|
1154
1157
|
| tLPAREN2 args tCOMMA args_forward rparen
|
1155
1158
|
{
|
@@ -1379,12 +1382,14 @@ rule
|
|
1379
1382
|
{
|
1380
1383
|
result = wrap :colon3, val[1]
|
1381
1384
|
}
|
1382
|
-
| tLBRACK { result = lexer.lineno } aref_args
|
1385
|
+
| tLBRACK { result = lexer.lineno } aref_args rbracket
|
1383
1386
|
{
|
1384
|
-
_, line, args, _ = val
|
1387
|
+
_, line, args, (_, line_max) = val
|
1388
|
+
|
1385
1389
|
result = args || s(:array)
|
1386
1390
|
result.sexp_type = :array # aref_args is :args
|
1387
1391
|
result.line line
|
1392
|
+
result.line_max = line_max
|
1388
1393
|
}
|
1389
1394
|
| tLBRACE
|
1390
1395
|
{
|
@@ -1975,13 +1980,19 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1975
1980
|
{
|
1976
1981
|
call, args = val
|
1977
1982
|
|
1978
|
-
result = call
|
1983
|
+
result = call
|
1984
|
+
|
1985
|
+
if args then
|
1986
|
+
call.concat args.sexp_body
|
1987
|
+
result.line_max = args.line_max
|
1988
|
+
end
|
1979
1989
|
}
|
1980
1990
|
| primary_value call_op operation2 opt_paren_args
|
1981
1991
|
{
|
1982
|
-
recv, call_op, (op,
|
1992
|
+
recv, call_op, (op, op_line), args = val
|
1983
1993
|
|
1984
1994
|
result = new_call recv, op.to_sym, args, call_op
|
1995
|
+
result.line_max = op_line unless args
|
1985
1996
|
}
|
1986
1997
|
| primary_value tCOLON2 operation2 paren_args
|
1987
1998
|
{
|
@@ -2751,15 +2762,17 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2751
2762
|
|
2752
2763
|
words: tWORDS_BEG tSPACE tSTRING_END
|
2753
2764
|
{
|
2754
|
-
(_, line), _, _ = val
|
2765
|
+
(_, line), _, (_, line_max) = val
|
2755
2766
|
|
2756
2767
|
result = s(:array).line line
|
2768
|
+
result.line_max = line_max
|
2757
2769
|
}
|
2758
2770
|
| tWORDS_BEG word_list tSTRING_END
|
2759
2771
|
{
|
2760
|
-
(_, line), list, _ = val
|
2772
|
+
(_, line), list, (_, line_max) = val
|
2761
2773
|
|
2762
2774
|
result = list.line line
|
2775
|
+
result.line_max = line_max
|
2763
2776
|
}
|
2764
2777
|
|
2765
2778
|
word_list: none
|
@@ -2779,15 +2792,17 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2779
2792
|
|
2780
2793
|
symbols: tSYMBOLS_BEG tSPACE tSTRING_END
|
2781
2794
|
{
|
2782
|
-
(_, line), _, _ = val
|
2795
|
+
(_, line), _, (_, line_max) = val
|
2783
2796
|
|
2784
2797
|
result = s(:array).line line
|
2798
|
+
result.line_max = line_max
|
2785
2799
|
}
|
2786
2800
|
| tSYMBOLS_BEG symbol_list tSTRING_END
|
2787
2801
|
{
|
2788
|
-
(_, line), list, _, = val
|
2789
|
-
|
2790
|
-
result = list
|
2802
|
+
(_, line), list, (_, line_max), = val
|
2803
|
+
|
2804
|
+
result = list.line line
|
2805
|
+
result.line_max = line_max
|
2791
2806
|
}
|
2792
2807
|
|
2793
2808
|
symbol_list: none
|
@@ -2802,28 +2817,32 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2802
2817
|
|
2803
2818
|
qwords: tQWORDS_BEG tSPACE tSTRING_END
|
2804
2819
|
{
|
2805
|
-
(_, line), _, _ = val
|
2820
|
+
(_, line), _, (_, line_max) = val
|
2806
2821
|
|
2807
2822
|
result = s(:array).line line
|
2823
|
+
result.line_max = line_max
|
2808
2824
|
}
|
2809
2825
|
| tQWORDS_BEG qword_list tSTRING_END
|
2810
2826
|
{
|
2811
|
-
(_, line), list, _ = val
|
2827
|
+
(_, line), list, (_, line_max) = val
|
2812
2828
|
|
2813
2829
|
result = list.line line
|
2830
|
+
result.line_max = line_max
|
2814
2831
|
}
|
2815
2832
|
|
2816
2833
|
qsymbols: tQSYMBOLS_BEG tSPACE tSTRING_END
|
2817
2834
|
{
|
2818
|
-
(_, line), _, _ = val
|
2835
|
+
(_, line), _, (_, line_max) = val
|
2819
2836
|
|
2820
2837
|
result = s(:array).line line
|
2838
|
+
result.line_max = line_max
|
2821
2839
|
}
|
2822
2840
|
| tQSYMBOLS_BEG qsym_list tSTRING_END
|
2823
2841
|
{
|
2824
|
-
(_, line), list, _ = val
|
2842
|
+
(_, line), list, (_, line_max) = val
|
2825
2843
|
|
2826
2844
|
result = list.line line
|
2845
|
+
result.line_max = line_max
|
2827
2846
|
}
|
2828
2847
|
|
2829
2848
|
qword_list: none
|
@@ -3259,7 +3278,14 @@ f_opt_paren_args: f_paren_args
|
|
3259
3278
|
result = s(:args, list).line list.line
|
3260
3279
|
end
|
3261
3280
|
|
3262
|
-
|
3281
|
+
if Sexp === item then
|
3282
|
+
line_max = item.line_max
|
3283
|
+
else
|
3284
|
+
item, line_max = item
|
3285
|
+
end
|
3286
|
+
|
3287
|
+
result << item
|
3288
|
+
result.line_max = line_max
|
3263
3289
|
}
|
3264
3290
|
|
3265
3291
|
f_label: tLABEL
|
data/lib/ruby_parser.yy
CHANGED
@@ -253,6 +253,7 @@ rule
|
|
253
253
|
| lhs tEQL mrhs
|
254
254
|
{
|
255
255
|
lhs, _, rhs = val
|
256
|
+
|
256
257
|
result = new_assign lhs, s(:svalue, rhs).line(rhs.line)
|
257
258
|
}
|
258
259
|
#if V == 20
|
@@ -1107,8 +1108,10 @@ rule
|
|
1107
1108
|
|
1108
1109
|
paren_args: tLPAREN2 opt_call_args rparen
|
1109
1110
|
{
|
1110
|
-
_, args, _ = val
|
1111
|
+
_, args, (_, line_max) = val
|
1112
|
+
|
1111
1113
|
result = args
|
1114
|
+
result.line_max = line_max if args
|
1112
1115
|
}
|
1113
1116
|
#if V >= 27
|
1114
1117
|
| tLPAREN2 args tCOMMA args_forward rparen
|
@@ -1335,12 +1338,14 @@ rule
|
|
1335
1338
|
{
|
1336
1339
|
result = wrap :colon3, val[1]
|
1337
1340
|
}
|
1338
|
-
| tLBRACK { result = lexer.lineno } aref_args
|
1341
|
+
| tLBRACK { result = lexer.lineno } aref_args rbracket
|
1339
1342
|
{
|
1340
|
-
_, line, args, _ = val
|
1343
|
+
_, line, args, (_, line_max) = val
|
1344
|
+
|
1341
1345
|
result = args || s(:array)
|
1342
1346
|
result.sexp_type = :array # aref_args is :args
|
1343
1347
|
result.line line
|
1348
|
+
result.line_max = line_max
|
1344
1349
|
}
|
1345
1350
|
| tLBRACE
|
1346
1351
|
{
|
@@ -1942,13 +1947,19 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1942
1947
|
{
|
1943
1948
|
call, args = val
|
1944
1949
|
|
1945
|
-
result = call
|
1950
|
+
result = call
|
1951
|
+
|
1952
|
+
if args then
|
1953
|
+
call.concat args.sexp_body
|
1954
|
+
result.line_max = args.line_max
|
1955
|
+
end
|
1946
1956
|
}
|
1947
1957
|
| primary_value call_op operation2 opt_paren_args
|
1948
1958
|
{
|
1949
|
-
recv, call_op, (op,
|
1959
|
+
recv, call_op, (op, op_line), args = val
|
1950
1960
|
|
1951
1961
|
result = new_call recv, op.to_sym, args, call_op
|
1962
|
+
result.line_max = op_line unless args
|
1952
1963
|
}
|
1953
1964
|
| primary_value tCOLON2 operation2 paren_args
|
1954
1965
|
{
|
@@ -2674,15 +2685,17 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2674
2685
|
|
2675
2686
|
words: tWORDS_BEG tSPACE tSTRING_END
|
2676
2687
|
{
|
2677
|
-
(_, line), _, _ = val
|
2688
|
+
(_, line), _, (_, line_max) = val
|
2678
2689
|
|
2679
2690
|
result = s(:array).line line
|
2691
|
+
result.line_max = line_max
|
2680
2692
|
}
|
2681
2693
|
| tWORDS_BEG word_list tSTRING_END
|
2682
2694
|
{
|
2683
|
-
(_, line), list, _ = val
|
2695
|
+
(_, line), list, (_, line_max) = val
|
2684
2696
|
|
2685
2697
|
result = list.line line
|
2698
|
+
result.line_max = line_max
|
2686
2699
|
}
|
2687
2700
|
|
2688
2701
|
word_list: none
|
@@ -2702,15 +2715,17 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2702
2715
|
|
2703
2716
|
symbols: tSYMBOLS_BEG tSPACE tSTRING_END
|
2704
2717
|
{
|
2705
|
-
(_, line), _, _ = val
|
2718
|
+
(_, line), _, (_, line_max) = val
|
2706
2719
|
|
2707
2720
|
result = s(:array).line line
|
2721
|
+
result.line_max = line_max
|
2708
2722
|
}
|
2709
2723
|
| tSYMBOLS_BEG symbol_list tSTRING_END
|
2710
2724
|
{
|
2711
|
-
(_, line), list, _, = val
|
2712
|
-
|
2713
|
-
result = list
|
2725
|
+
(_, line), list, (_, line_max), = val
|
2726
|
+
|
2727
|
+
result = list.line line
|
2728
|
+
result.line_max = line_max
|
2714
2729
|
}
|
2715
2730
|
|
2716
2731
|
symbol_list: none
|
@@ -2725,28 +2740,32 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
2725
2740
|
|
2726
2741
|
qwords: tQWORDS_BEG tSPACE tSTRING_END
|
2727
2742
|
{
|
2728
|
-
(_, line), _, _ = val
|
2743
|
+
(_, line), _, (_, line_max) = val
|
2729
2744
|
|
2730
2745
|
result = s(:array).line line
|
2746
|
+
result.line_max = line_max
|
2731
2747
|
}
|
2732
2748
|
| tQWORDS_BEG qword_list tSTRING_END
|
2733
2749
|
{
|
2734
|
-
(_, line), list, _ = val
|
2750
|
+
(_, line), list, (_, line_max) = val
|
2735
2751
|
|
2736
2752
|
result = list.line line
|
2753
|
+
result.line_max = line_max
|
2737
2754
|
}
|
2738
2755
|
|
2739
2756
|
qsymbols: tQSYMBOLS_BEG tSPACE tSTRING_END
|
2740
2757
|
{
|
2741
|
-
(_, line), _, _ = val
|
2758
|
+
(_, line), _, (_, line_max) = val
|
2742
2759
|
|
2743
2760
|
result = s(:array).line line
|
2761
|
+
result.line_max = line_max
|
2744
2762
|
}
|
2745
2763
|
| tQSYMBOLS_BEG qsym_list tSTRING_END
|
2746
2764
|
{
|
2747
|
-
(_, line), list, _ = val
|
2765
|
+
(_, line), list, (_, line_max) = val
|
2748
2766
|
|
2749
2767
|
result = list.line line
|
2768
|
+
result.line_max = line_max
|
2750
2769
|
}
|
2751
2770
|
|
2752
2771
|
qword_list: none
|
@@ -3197,7 +3216,14 @@ keyword_variable: kNIL { result = s(:nil).line lexer.lineno }
|
|
3197
3216
|
result = s(:args, list).line list.line
|
3198
3217
|
end
|
3199
3218
|
|
3200
|
-
|
3219
|
+
if Sexp === item then
|
3220
|
+
line_max = item.line_max
|
3221
|
+
else
|
3222
|
+
item, line_max = item
|
3223
|
+
end
|
3224
|
+
|
3225
|
+
result << item
|
3226
|
+
result.line_max = line_max
|
3201
3227
|
}
|
3202
3228
|
|
3203
3229
|
#if V == 20
|
@@ -3449,7 +3475,15 @@ keyword_variable: kNIL { result = s(:nil).line lexer.lineno }
|
|
3449
3475
|
opt_terms: | terms
|
3450
3476
|
opt_nl: | tNL
|
3451
3477
|
rparen: opt_nl tRPAREN
|
3478
|
+
{
|
3479
|
+
_, close = val
|
3480
|
+
result = [close, lexer.lineno]
|
3481
|
+
}
|
3452
3482
|
rbracket: opt_nl tRBRACK
|
3483
|
+
{
|
3484
|
+
_, close = val
|
3485
|
+
result = [close, lexer.lineno]
|
3486
|
+
}
|
3453
3487
|
#if V >= 27
|
3454
3488
|
rbrace: opt_nl tRCURLY
|
3455
3489
|
#endif
|
data/lib/ruby_parser_extras.rb
CHANGED
@@ -18,7 +18,7 @@ class Sexp
|
|
18
18
|
end
|
19
19
|
|
20
20
|
##
|
21
|
-
# Returns the
|
21
|
+
# Returns the minimum line number of the children of self.
|
22
22
|
|
23
23
|
def line_min
|
24
24
|
@line_min ||= [self.deep_each.map(&:line).min, self.line].compact.min
|
@@ -30,7 +30,7 @@ class Sexp
|
|
30
30
|
end
|
31
31
|
|
32
32
|
module RubyParserStuff
|
33
|
-
VERSION = "3.20.
|
33
|
+
VERSION = "3.20.1"
|
34
34
|
|
35
35
|
attr_accessor :lexer, :in_def, :in_single, :file
|
36
36
|
attr_accessor :in_kwarg
|
@@ -153,6 +153,7 @@ module RubyParserStuff
|
|
153
153
|
result.line lexer.lineno
|
154
154
|
else
|
155
155
|
result.line ss.first.line
|
156
|
+
result.line_max = ss.first.line_max
|
156
157
|
end
|
157
158
|
|
158
159
|
args.each do |arg|
|
@@ -330,9 +331,8 @@ module RubyParserStuff
|
|
330
331
|
end
|
331
332
|
|
332
333
|
args.each do |arg|
|
333
|
-
|
334
|
-
|
335
|
-
end
|
334
|
+
# ruby 3.0+ TODO: next if arg in [String, Integer] # eg ["(", 1]
|
335
|
+
next if arg.class == Array && arg.map(&:class) == [String, Integer]
|
336
336
|
|
337
337
|
case arg
|
338
338
|
when Sexp then
|
@@ -794,6 +794,7 @@ module RubyParserStuff
|
|
794
794
|
case lhs.sexp_type
|
795
795
|
when :lasgn, :iasgn, :cdecl, :cvdecl, :gasgn, :cvasgn, :attrasgn, :safe_attrasgn then
|
796
796
|
lhs << rhs
|
797
|
+
lhs.line_max = rhs.line_max
|
797
798
|
when :const then
|
798
799
|
lhs.sexp_type = :cdecl
|
799
800
|
lhs << rhs
|
@@ -885,12 +886,13 @@ module RubyParserStuff
|
|
885
886
|
# TODO: need a test with f(&b) to produce block_pass
|
886
887
|
# TODO: need a test with f(&b) { } to produce warning
|
887
888
|
|
888
|
-
if args
|
889
|
+
if args then
|
889
890
|
if ARG_TYPES[args.sexp_type] then
|
890
891
|
result.concat args.sexp_body
|
891
892
|
else
|
892
893
|
result << args
|
893
894
|
end
|
895
|
+
result.line_max = args.line_max
|
894
896
|
end
|
895
897
|
|
896
898
|
# line = result.grep(Sexp).map(&:line).compact.min
|
@@ -927,7 +929,7 @@ module RubyParserStuff
|
|
927
929
|
|
928
930
|
def new_class val
|
929
931
|
# TODO: get line from class keyword
|
930
|
-
line, path, superclass,
|
932
|
+
_, line, path, superclass, _, body, (_, line_max) = val
|
931
933
|
|
932
934
|
path = path.first if path.instance_of? Array
|
933
935
|
|
@@ -942,6 +944,7 @@ module RubyParserStuff
|
|
942
944
|
end
|
943
945
|
|
944
946
|
result.line = line
|
947
|
+
result.line_max = line_max
|
945
948
|
result.comments = self.comments.pop
|
946
949
|
result
|
947
950
|
end
|
@@ -970,13 +973,14 @@ module RubyParserStuff
|
|
970
973
|
end
|
971
974
|
|
972
975
|
def new_defn val
|
973
|
-
_, (name, line), in_def, args, body, _ = val
|
976
|
+
_, (name, line), in_def, args, body, (_, line_max) = val
|
974
977
|
|
975
978
|
body ||= s(:nil).line line
|
976
979
|
|
977
980
|
args.line line
|
978
981
|
|
979
982
|
result = s(:defn, name.to_sym, args).line line
|
983
|
+
result.line_max = line_max
|
980
984
|
|
981
985
|
if body.sexp_type == :block then
|
982
986
|
result.push(*body.sexp_body)
|
@@ -1033,13 +1037,14 @@ module RubyParserStuff
|
|
1033
1037
|
end
|
1034
1038
|
|
1035
1039
|
def new_defs val
|
1036
|
-
_, recv, (name, line), in_def, args, body, _ = val
|
1040
|
+
_, recv, (name, line), in_def, args, body, (_, line_max) = val
|
1037
1041
|
|
1038
1042
|
body ||= s(:nil).line line
|
1039
1043
|
|
1040
1044
|
args.line line
|
1041
1045
|
|
1042
1046
|
result = s(:defs, recv, name.to_sym, args).line line
|
1047
|
+
result.line_max = line_max
|
1043
1048
|
|
1044
1049
|
# TODO: remove_begin
|
1045
1050
|
# TODO: reduce_nodes
|
@@ -1204,12 +1209,12 @@ module RubyParserStuff
|
|
1204
1209
|
end
|
1205
1210
|
|
1206
1211
|
def new_module val
|
1207
|
-
|
1208
|
-
line, path, body = val[1], val[2], val[4]
|
1212
|
+
(_, line_min), _, path, _, body, (_, line_max) = val
|
1209
1213
|
|
1210
1214
|
path = path.first if path.instance_of? Array
|
1211
1215
|
|
1212
|
-
result = s(:module, path).line
|
1216
|
+
result = s(:module, path).line line_min
|
1217
|
+
result.line_max = line_max
|
1213
1218
|
|
1214
1219
|
if body then # REFACTOR?
|
1215
1220
|
if body.sexp_type == :block then
|
@@ -1291,9 +1296,10 @@ module RubyParserStuff
|
|
1291
1296
|
end
|
1292
1297
|
|
1293
1298
|
def new_regexp val
|
1294
|
-
(_, line), node, (options,
|
1299
|
+
(_, line), node, (options, line_max) = val
|
1295
1300
|
|
1296
1301
|
node ||= s(:str, "").line line
|
1302
|
+
node.line_max = line_max
|
1297
1303
|
|
1298
1304
|
o, k = 0, nil
|
1299
1305
|
options.split(//).uniq.each do |c| # FIX: this has a better home
|