ruby_parser 3.20.0 → 3.20.2

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1290,7 +1293,6 @@ rule
1290
1293
  | k_begin
1291
1294
  {
1292
1295
  lexer.cmdarg.push false
1293
- result = self.lexer.lineno
1294
1296
  }
1295
1297
  bodystmt k_end
1296
1298
  {
@@ -1335,12 +1337,14 @@ rule
1335
1337
  {
1336
1338
  result = wrap :colon3, val[1]
1337
1339
  }
1338
- | tLBRACK { result = lexer.lineno } aref_args tRBRACK
1340
+ | tLBRACK { result = lexer.lineno } aref_args rbracket
1339
1341
  {
1340
- _, line, args, _ = val
1342
+ _, line, args, (_, line_max) = val
1343
+
1341
1344
  result = args || s(:array)
1342
1345
  result.sexp_type = :array # aref_args is :args
1343
1346
  result.line line
1347
+ result.line_max = line_max
1344
1348
  }
1345
1349
  | tLBRACE
1346
1350
  {
@@ -1453,9 +1457,6 @@ rule
1453
1457
  result = new_for iter, var, body
1454
1458
  }
1455
1459
  | k_class
1456
- {
1457
- result = self.lexer.lineno
1458
- }
1459
1460
  cpath superclass
1460
1461
  {
1461
1462
  if (self.in_def || self.in_single > 0) then
@@ -1470,9 +1471,6 @@ rule
1470
1471
  self.lexer.ignore_body_comments
1471
1472
  }
1472
1473
  | k_class tLSHFT
1473
- {
1474
- result = self.lexer.lineno
1475
- }
1476
1474
  expr
1477
1475
  {
1478
1476
  result = self.in_def
@@ -1491,9 +1489,6 @@ rule
1491
1489
  self.lexer.ignore_body_comments
1492
1490
  }
1493
1491
  | k_module
1494
- {
1495
- result = self.lexer.lineno
1496
- }
1497
1492
  cpath
1498
1493
  {
1499
1494
  yyerror "module definition in method body" if
@@ -1942,13 +1937,19 @@ opt_block_args_tail: tCOMMA block_args_tail
1942
1937
  {
1943
1938
  call, args = val
1944
1939
 
1945
- result = call.concat args.sexp_body if args
1940
+ result = call
1941
+
1942
+ if args then
1943
+ call.concat args.sexp_body
1944
+ result.line_max = args.line_max
1945
+ end
1946
1946
  }
1947
1947
  | primary_value call_op operation2 opt_paren_args
1948
1948
  {
1949
- recv, call_op, (op, _line), args = val
1949
+ recv, call_op, (op, op_line), args = val
1950
1950
 
1951
1951
  result = new_call recv, op.to_sym, args, call_op
1952
+ result.line_max = op_line unless args
1952
1953
  }
1953
1954
  | primary_value tCOLON2 operation2 paren_args
1954
1955
  {
@@ -2674,15 +2675,17 @@ opt_block_args_tail: tCOMMA block_args_tail
2674
2675
 
2675
2676
  words: tWORDS_BEG tSPACE tSTRING_END
2676
2677
  {
2677
- (_, line), _, _ = val
2678
+ (_, line), _, (_, line_max) = val
2678
2679
 
2679
2680
  result = s(:array).line line
2681
+ result.line_max = line_max
2680
2682
  }
2681
2683
  | tWORDS_BEG word_list tSTRING_END
2682
2684
  {
2683
- (_, line), list, _ = val
2685
+ (_, line), list, (_, line_max) = val
2684
2686
 
2685
2687
  result = list.line line
2688
+ result.line_max = line_max
2686
2689
  }
2687
2690
 
2688
2691
  word_list: none
@@ -2702,15 +2705,17 @@ opt_block_args_tail: tCOMMA block_args_tail
2702
2705
 
2703
2706
  symbols: tSYMBOLS_BEG tSPACE tSTRING_END
2704
2707
  {
2705
- (_, line), _, _ = val
2708
+ (_, line), _, (_, line_max) = val
2706
2709
 
2707
2710
  result = s(:array).line line
2711
+ result.line_max = line_max
2708
2712
  }
2709
2713
  | tSYMBOLS_BEG symbol_list tSTRING_END
2710
2714
  {
2711
- (_, line), list, _, = val
2712
- list.line line
2713
- result = list
2715
+ (_, line), list, (_, line_max), = val
2716
+
2717
+ result = list.line line
2718
+ result.line_max = line_max
2714
2719
  }
2715
2720
 
2716
2721
  symbol_list: none
@@ -2725,28 +2730,32 @@ opt_block_args_tail: tCOMMA block_args_tail
2725
2730
 
2726
2731
  qwords: tQWORDS_BEG tSPACE tSTRING_END
2727
2732
  {
2728
- (_, line), _, _ = val
2733
+ (_, line), _, (_, line_max) = val
2729
2734
 
2730
2735
  result = s(:array).line line
2736
+ result.line_max = line_max
2731
2737
  }
2732
2738
  | tQWORDS_BEG qword_list tSTRING_END
2733
2739
  {
2734
- (_, line), list, _ = val
2740
+ (_, line), list, (_, line_max) = val
2735
2741
 
2736
2742
  result = list.line line
2743
+ result.line_max = line_max
2737
2744
  }
2738
2745
 
2739
2746
  qsymbols: tQSYMBOLS_BEG tSPACE tSTRING_END
2740
2747
  {
2741
- (_, line), _, _ = val
2748
+ (_, line), _, (_, line_max) = val
2742
2749
 
2743
2750
  result = s(:array).line line
2751
+ result.line_max = line_max
2744
2752
  }
2745
2753
  | tQSYMBOLS_BEG qsym_list tSTRING_END
2746
2754
  {
2747
- (_, line), list, _ = val
2755
+ (_, line), list, (_, line_max) = val
2748
2756
 
2749
2757
  result = list.line line
2758
+ result.line_max = line_max
2750
2759
  }
2751
2760
 
2752
2761
  qword_list: none
@@ -3197,7 +3206,14 @@ keyword_variable: kNIL { result = s(:nil).line lexer.lineno }
3197
3206
  result = s(:args, list).line list.line
3198
3207
  end
3199
3208
 
3200
- result << (Sexp === item ? item : item.first)
3209
+ if Sexp === item then
3210
+ line_max = item.line_max
3211
+ else
3212
+ item, line_max = item
3213
+ end
3214
+
3215
+ result << item
3216
+ result.line_max = line_max
3201
3217
  }
3202
3218
 
3203
3219
  #if V == 20
@@ -3449,7 +3465,15 @@ keyword_variable: kNIL { result = s(:nil).line lexer.lineno }
3449
3465
  opt_terms: | terms
3450
3466
  opt_nl: | tNL
3451
3467
  rparen: opt_nl tRPAREN
3468
+ {
3469
+ _, close = val
3470
+ result = [close, lexer.lineno]
3471
+ }
3452
3472
  rbracket: opt_nl tRBRACK
3473
+ {
3474
+ _, close = val
3475
+ result = [close, lexer.lineno]
3476
+ }
3453
3477
  #if V >= 27
3454
3478
  rbrace: opt_nl tRCURLY
3455
3479
  #endif
@@ -18,7 +18,7 @@ class Sexp
18
18
  end
19
19
 
20
20
  ##
21
- # Returns the maximum line number of the children of self.
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.0"
33
+ VERSION = "3.20.2"
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
- if arg.instance_of? Array and arg.size == 2 and arg.last.is_a? Numeric then
334
- arg = arg.first
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
@@ -823,10 +824,10 @@ module RubyParserStuff
823
824
  end
824
825
 
825
826
  def new_begin val
826
- _, lineno, body, _ = val
827
+ (_, line), _, body, _ = val
827
828
 
828
829
  result = body ? s(:begin, body) : s(:nil)
829
- result.line lineno
830
+ result.line line
830
831
 
831
832
  result
832
833
  end
@@ -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
@@ -926,8 +928,7 @@ module RubyParserStuff
926
928
  end
927
929
 
928
930
  def new_class val
929
- # TODO: get line from class keyword
930
- line, path, superclass, body = val[1], val[2], val[3], val[5]
931
+ (_, line), path, superclass, _, body, (_, line_max) = val
931
932
 
932
933
  path = path.first if path.instance_of? Array
933
934
 
@@ -942,6 +943,7 @@ module RubyParserStuff
942
943
  end
943
944
 
944
945
  result.line = line
946
+ result.line_max = line_max
945
947
  result.comments = self.comments.pop
946
948
  result
947
949
  end
@@ -970,13 +972,14 @@ module RubyParserStuff
970
972
  end
971
973
 
972
974
  def new_defn val
973
- _, (name, line), in_def, args, body, _ = val
975
+ _, (name, line), in_def, args, body, (_, line_max) = val
974
976
 
975
977
  body ||= s(:nil).line line
976
978
 
977
979
  args.line line
978
980
 
979
981
  result = s(:defn, name.to_sym, args).line line
982
+ result.line_max = line_max
980
983
 
981
984
  if body.sexp_type == :block then
982
985
  result.push(*body.sexp_body)
@@ -1033,13 +1036,14 @@ module RubyParserStuff
1033
1036
  end
1034
1037
 
1035
1038
  def new_defs val
1036
- _, recv, (name, line), in_def, args, body, _ = val
1039
+ _, recv, (name, line), in_def, args, body, (_, line_max) = val
1037
1040
 
1038
1041
  body ||= s(:nil).line line
1039
1042
 
1040
1043
  args.line line
1041
1044
 
1042
1045
  result = s(:defs, recv, name.to_sym, args).line line
1046
+ result.line_max = line_max
1043
1047
 
1044
1048
  # TODO: remove_begin
1045
1049
  # TODO: reduce_nodes
@@ -1204,12 +1208,12 @@ module RubyParserStuff
1204
1208
  end
1205
1209
 
1206
1210
  def new_module val
1207
- # TODO: get line from module keyword
1208
- line, path, body = val[1], val[2], val[4]
1211
+ (_, line_min), path, _, body, (_, line_max) = val
1209
1212
 
1210
1213
  path = path.first if path.instance_of? Array
1211
1214
 
1212
- result = s(:module, path).line line
1215
+ result = s(:module, path).line line_min
1216
+ result.line_max = line_max
1213
1217
 
1214
1218
  if body then # REFACTOR?
1215
1219
  if body.sexp_type == :block then
@@ -1291,9 +1295,10 @@ module RubyParserStuff
1291
1295
  end
1292
1296
 
1293
1297
  def new_regexp val
1294
- (_, line), node, (options, _) = val
1298
+ (_, line), node, (options, line_max) = val
1295
1299
 
1296
1300
  node ||= s(:str, "").line line
1301
+ node.line_max = line_max
1297
1302
 
1298
1303
  o, k = 0, nil
1299
1304
  options.split(//).uniq.each do |c| # FIX: this has a better home
@@ -1361,7 +1366,7 @@ module RubyParserStuff
1361
1366
  end
1362
1367
 
1363
1368
  def new_sclass val
1364
- recv, in_def, in_single, body = val[3], val[4], val[6], val[7]
1369
+ (_, line), _, recv, in_def, _, in_single, body, _ = val
1365
1370
 
1366
1371
  result = s(:sclass, recv)
1367
1372
 
@@ -1373,7 +1378,7 @@ module RubyParserStuff
1373
1378
  end
1374
1379
  end
1375
1380
 
1376
- result.line = val[2]
1381
+ result.line = line
1377
1382
  self.in_def = in_def
1378
1383
  self.in_single = in_single
1379
1384
  result
@@ -15,11 +15,26 @@ class Sexp
15
15
  def == other # :nodoc:
16
16
  if other.class == self.class then
17
17
  super and
18
- (line.nil? or other.line.nil? or line == other.line)
18
+ (line.nil? or other.line.nil? or line == other.line) and
19
+ (!defined?(@line_max) or @line_max.nil? or line_max == other.line_max)
20
+ # (line_max.nil? or other.line_max.nil? or line_max == other.line_max)
19
21
  else
20
22
  false
21
23
  end
22
24
  end
25
+
26
+ # convenience function just for testing
27
+ alias dead line_max
28
+ def line_max n = UNASSIGNED
29
+ if n != UNASSIGNED then
30
+ raise ArgumentError, "setting %p.line_max %p" % [self, n] unless Integer === n
31
+ @line_max = n
32
+ self
33
+ else
34
+ # raise "Accessing before @line_max defined" unless defined?(@line_max)
35
+ @line_max ||= self.deep_each.map(&:line).compact.max
36
+ end
37
+ end
23
38
  end
24
39
 
25
40
  module TestRubyParserShared
@@ -117,11 +132,13 @@ module TestRubyParserShared
117
132
  # for the array. Luckily, the arary elements all seemt to get the correct
118
133
  # line number.
119
134
  rb = "[\n'a',\n'b']\n1"
135
+
120
136
  pt = s(:block,
121
137
  s(:array,
122
138
  s(:str, "a").line(2),
123
- s(:str, "b").line(3)),
139
+ s(:str, "b").line(3)).line(1),
124
140
  s(:lit, 1).line(4)).line 1
141
+
125
142
  assert_parse rb, pt
126
143
  end
127
144
 
@@ -965,7 +982,12 @@ module TestRubyParserShared
965
982
  end
966
983
 
967
984
  def test_heredoc_with_extra_carriage_horrible_mix?
968
- rb = "<<'eot'\r\nbody\r\neot\n"
985
+ rb = <<~RUBY
986
+ <<'eot'\r
987
+ body\r
988
+ eot
989
+ RUBY
990
+
969
991
  pt = s(:str, "body\r\n")
970
992
 
971
993
  assert_parse rb, pt
@@ -1051,9 +1073,9 @@ module TestRubyParserShared
1051
1073
  end
1052
1074
 
1053
1075
  def test_i_fucking_hate_line_numbers2
1054
- rb = <<-EOM.gsub(/^ {6}/, "")
1076
+ rb = <<~EOM
1055
1077
  if true then
1056
- p('a')
1078
+ p("a")
1057
1079
  b = 1
1058
1080
  p b
1059
1081
  c =1
@@ -1074,6 +1096,138 @@ module TestRubyParserShared
1074
1096
  assert_parse rb, pt
1075
1097
  end
1076
1098
 
1099
+ line_max_array = s(:array,
1100
+ s(:lit, :line2).line(2),
1101
+ s(:lit, :line3).line(3)).line(1).line_max(4)
1102
+ line_max_array_empty = s(:array).line(1).line_max(4)
1103
+ [
1104
+ [:plain_array,
1105
+ "[\n:line2,\n:line3\n]",
1106
+ line_max_array,
1107
+ ],
1108
+ [:pct_i,
1109
+ "%i[\nline2\nline3\n]",
1110
+ line_max_array,
1111
+ ],
1112
+ [:pct_i_empty,
1113
+ "%i[\n\n\n]",
1114
+ line_max_array_empty,
1115
+ ],
1116
+ [:pct_I,
1117
+ "%I[\nline2\nline3\n]",
1118
+ line_max_array,
1119
+ ],
1120
+ [:pct_I_empty,
1121
+ "%I[\n\n\n]",
1122
+ line_max_array_empty,
1123
+ ],
1124
+ [:call_parens,
1125
+ "x(\n:line2,\n:line3\n)",
1126
+ s(:call, nil, :x, *line_max_array.sexp_body).line(1).line_max(4),
1127
+ ],
1128
+ [:pct_w,
1129
+ "%w[\nline2\nline3\n]",
1130
+ s(:array,
1131
+ s(:str, "line2").line(2),
1132
+ s(:str, "line3").line(3)).line(1).line_max(4),
1133
+ ],
1134
+ [:pct_w_empty,
1135
+ "%w[\n\n\n]",
1136
+ line_max_array_empty,
1137
+ ],
1138
+ [:pct_W,
1139
+ "%W[\nline2\nline3\n]",
1140
+ s(:array,
1141
+ s(:str, "line2").line(2),
1142
+ s(:str, "line3").line(3)).line(1).line_max(4),
1143
+ ],
1144
+ [:pct_W_empty,
1145
+ "%W[\n\n\n]",
1146
+ line_max_array_empty,
1147
+ ],
1148
+ [:regexp,
1149
+ "%r[\n\n\n]", # double-quotes to have the \n counted as lines on input
1150
+ s(:lit, %r[#{"\n\n\n"}]).line(1).line_max(4),
1151
+ ],
1152
+ [:module,
1153
+ <<~"RUBY",
1154
+ module X # line 1
1155
+ module Y # line 2
1156
+ Z = 42 # line 3
1157
+ end # line 4
1158
+ end # line 5
1159
+ RUBY
1160
+ s(:module, :X,
1161
+ s(:module, :Y,
1162
+ s(:cdecl, :Z, s(:lit, 42).line(3)).line(3).line_max(3)
1163
+ ).line(2).line_max(4)
1164
+ ).line(1).line_max(5)],
1165
+ [:class,
1166
+ <<~"RUBY",
1167
+ class X # line 1
1168
+ class Y # line 2
1169
+ Z = 42 # line 3
1170
+ end # line 4
1171
+ end # line 5
1172
+ RUBY
1173
+ s(:class, :X, nil,
1174
+ s(:class, :Y, nil,
1175
+ s(:cdecl, :Z, s(:lit, 42).line(3)).line(3).line_max(3)
1176
+ ).line(2).line_max(4)
1177
+ ).line(1).line_max(5)],
1178
+ [:cdecl,
1179
+ <<~"RUBY",
1180
+ module X
1181
+ X = [
1182
+ :line3,
1183
+ :line4,
1184
+ ]
1185
+ end
1186
+ RUBY
1187
+ s(:module, :X,
1188
+ s(:cdecl, :X,
1189
+ s(:array,
1190
+ s(:lit, :line3).line(3),
1191
+ s(:lit, :line4).line(4)).line(2).line_max(5),
1192
+ ).line(2).line_max(5),
1193
+ ).line(1).line_max(6)
1194
+ ],
1195
+ [:defn,
1196
+ <<~"RUBY",
1197
+ class X # line 1
1198
+ def y(a, # line 2
1199
+ b) # line 3
1200
+ a + b # line 4
1201
+ end # line 5
1202
+ end # line 6
1203
+ RUBY
1204
+ s(:class, :X, nil,
1205
+ s(:defn, :y, s(:args, :a, :b).line(2).line_max(3),
1206
+ s(:call, s(:lvar, :a).line(4), :+, s(:lvar, :b).line(4)).line(4)
1207
+ ).line(2).line_max(5),
1208
+ ).line(1).line_max(6),
1209
+ ],
1210
+ [:defs,
1211
+ <<~"RUBY",
1212
+ class X # line 1
1213
+ def self.y(a, # line 2
1214
+ b) # line 3
1215
+ a + b # line 4
1216
+ end # line 5
1217
+ end # line 6
1218
+ RUBY
1219
+ s(:class, :X, nil,
1220
+ s(:defs, s(:self).line(2), :y, s(:args, :a, :b).line(2).line_max(3),
1221
+ s(:call, s(:lvar, :a).line(4), :+, s(:lvar, :b).line(4)).line(4)
1222
+ ).line(2).line_max(5),
1223
+ ).line(1).line_max(6),
1224
+ ],
1225
+ ].each do |(name, rb, pt)|
1226
+ define_method "test_line_numbers__max_line__#{name}" do
1227
+ assert_parse rb, pt
1228
+ end
1229
+ end
1230
+
1077
1231
  def test_if_elsif
1078
1232
  rb = "if 1; elsif 2; end"
1079
1233
  pt = s(:if, s(:lit, 1), nil, s(:if, s(:lit, 2), nil, nil))
@@ -5480,6 +5634,34 @@ end
5480
5634
 
5481
5635
  module TestRubyParserShared32Plus
5482
5636
  include TestRubyParserShared31Plus
5637
+
5638
+ def test_args_star__anon_solo
5639
+ rb = "f(*)"
5640
+ pt = s(:call, nil, :f, s(:splat))
5641
+
5642
+ assert_parse rb, pt
5643
+ end
5644
+
5645
+ def test_args_star__anon_trailing
5646
+ rb = "f(x, *)"
5647
+ pt = s(:call, nil, :f, s(:call, nil, :x), s(:splat))
5648
+
5649
+ assert_parse rb, pt
5650
+ end
5651
+
5652
+ def test_args_dstar__anon_solo
5653
+ rb = "f(**)"
5654
+ pt = s(:call, nil, :f, s(:hash, s(:kwsplat))) # TODO double check this
5655
+
5656
+ assert_parse rb, pt
5657
+ end
5658
+
5659
+ def test_args_dstar__anon_trailing
5660
+ rb = "f(x, **)"
5661
+ pt = s(:call, nil, :f, s(:call, nil, :x), s(:hash, s(:kwsplat))) # TODO double check this
5662
+
5663
+ assert_parse rb, pt
5664
+ end
5483
5665
  end
5484
5666
 
5485
5667
  class Minitest::Test
@@ -5782,8 +5964,6 @@ class TestRubyParserV26 < RubyParserTestCase
5782
5964
  end
5783
5965
 
5784
5966
  class TestRubyParserV27 < RubyParserTestCase
5785
- make_my_diffs_pretty!
5786
-
5787
5967
  include TestRubyParserShared27Plus
5788
5968
 
5789
5969
  def setup
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.20.0
4
+ version: 3.20.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -29,7 +29,7 @@ cert_chain:
29
29
  ROfWo9Uyp8ba/j9eVG14KkYRaLydAY1MNQk2yd3R5CGfeOpD1kttxjoypoUJ2dOG
30
30
  nsNBRuQJ1UfiCG97a6DNm+Fr
31
31
  -----END CERTIFICATE-----
32
- date: 2023-03-04 00:00:00.000000000 Z
32
+ date: 2023-06-06 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: sexp_processor
@@ -245,7 +245,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
245
245
  - !ruby/object:Gem::Version
246
246
  version: '0'
247
247
  requirements: []
248
- rubygems_version: 3.4.6
248
+ rubygems_version: 3.4.10
249
249
  signing_key:
250
250
  specification_version: 4
251
251
  summary: ruby_parser (RP) is a ruby parser written in pure ruby (utilizing racc--which
metadata.gz.sig CHANGED
Binary file