prism 0.17.1 → 0.19.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +60 -1
  3. data/Makefile +5 -5
  4. data/README.md +4 -3
  5. data/config.yml +214 -68
  6. data/docs/build_system.md +6 -6
  7. data/docs/building.md +10 -3
  8. data/docs/configuration.md +11 -9
  9. data/docs/encoding.md +92 -88
  10. data/docs/heredocs.md +1 -1
  11. data/docs/javascript.md +29 -1
  12. data/docs/local_variable_depth.md +229 -0
  13. data/docs/ruby_api.md +16 -0
  14. data/docs/serialization.md +18 -13
  15. data/ext/prism/api_node.c +411 -240
  16. data/ext/prism/extconf.rb +97 -127
  17. data/ext/prism/extension.c +97 -33
  18. data/ext/prism/extension.h +1 -1
  19. data/include/prism/ast.h +377 -159
  20. data/include/prism/defines.h +17 -0
  21. data/include/prism/diagnostic.h +38 -6
  22. data/include/prism/{enc/pm_encoding.h → encoding.h} +126 -64
  23. data/include/prism/options.h +2 -2
  24. data/include/prism/parser.h +62 -36
  25. data/include/prism/regexp.h +2 -2
  26. data/include/prism/util/pm_buffer.h +9 -1
  27. data/include/prism/util/pm_memchr.h +2 -2
  28. data/include/prism/util/pm_strpbrk.h +3 -3
  29. data/include/prism/version.h +3 -3
  30. data/include/prism.h +13 -15
  31. data/lib/prism/compiler.rb +15 -3
  32. data/lib/prism/debug.rb +13 -4
  33. data/lib/prism/desugar_compiler.rb +4 -3
  34. data/lib/prism/dispatcher.rb +70 -14
  35. data/lib/prism/dot_visitor.rb +4612 -0
  36. data/lib/prism/dsl.rb +77 -57
  37. data/lib/prism/ffi.rb +19 -6
  38. data/lib/prism/lex_compat.rb +19 -9
  39. data/lib/prism/mutation_compiler.rb +26 -6
  40. data/lib/prism/node.rb +1314 -522
  41. data/lib/prism/node_ext.rb +102 -19
  42. data/lib/prism/parse_result.rb +58 -27
  43. data/lib/prism/ripper_compat.rb +49 -34
  44. data/lib/prism/serialize.rb +251 -227
  45. data/lib/prism/visitor.rb +15 -3
  46. data/lib/prism.rb +21 -4
  47. data/prism.gemspec +7 -9
  48. data/rbi/prism.rbi +688 -284
  49. data/rbi/prism_static.rbi +3 -0
  50. data/sig/prism.rbs +426 -156
  51. data/sig/prism_static.rbs +1 -0
  52. data/src/diagnostic.c +280 -216
  53. data/src/encoding.c +5137 -0
  54. data/src/node.c +99 -21
  55. data/src/options.c +21 -2
  56. data/src/prettyprint.c +1743 -1241
  57. data/src/prism.c +1774 -831
  58. data/src/regexp.c +15 -15
  59. data/src/serialize.c +261 -164
  60. data/src/util/pm_buffer.c +10 -1
  61. data/src/util/pm_memchr.c +1 -1
  62. data/src/util/pm_strpbrk.c +4 -4
  63. metadata +8 -10
  64. data/src/enc/pm_big5.c +0 -53
  65. data/src/enc/pm_euc_jp.c +0 -59
  66. data/src/enc/pm_gbk.c +0 -62
  67. data/src/enc/pm_shift_jis.c +0 -57
  68. data/src/enc/pm_tables.c +0 -743
  69. data/src/enc/pm_unicode.c +0 -2369
  70. data/src/enc/pm_windows_31j.c +0 -57
@@ -27,11 +27,11 @@ module Prism
27
27
 
28
28
  # The minor version of prism that we are expecting to find in the serialized
29
29
  # strings.
30
- MINOR_VERSION = 17
30
+ MINOR_VERSION = 19
31
31
 
32
32
  # The patch version of prism that we are expecting to find in the serialized
33
33
  # strings.
34
- PATCH_VERSION = 1
34
+ PATCH_VERSION = 0
35
35
 
36
36
  # Deserialize the AST represented by the given string into a parse result.
37
37
  def self.load(input, serialized)
@@ -80,21 +80,18 @@ module Prism
80
80
  end
81
81
 
82
82
  def load_encoding
83
- Encoding.find(io.read(load_varint))
84
- end
85
-
86
- def load_force_encoding
87
- @encoding = load_encoding
83
+ @encoding = Encoding.find(io.read(load_varuint))
88
84
  @input = input.force_encoding(@encoding).freeze
85
+ @encoding
89
86
  end
90
87
 
91
88
  def load_start_line
92
- source.start_line = load_varint
89
+ source.start_line = load_varsint
93
90
  end
94
91
 
95
92
  def load_comments
96
- load_varint.times.map do
97
- case load_varint
93
+ load_varuint.times.map do
94
+ case load_varuint
98
95
  when 0 then InlineComment.new(load_location)
99
96
  when 1 then EmbDocComment.new(load_location)
100
97
  when 2 then DATAComment.new(load_location)
@@ -104,18 +101,19 @@ module Prism
104
101
 
105
102
  def load_metadata
106
103
  comments = load_comments
107
- magic_comments = load_varint.times.map { MagicComment.new(load_location, load_location) }
108
- errors = load_varint.times.map { ParseError.new(load_embedded_string, load_location) }
109
- warnings = load_varint.times.map { ParseWarning.new(load_embedded_string, load_location) }
110
- [comments, magic_comments, errors, warnings]
104
+ magic_comments = load_varuint.times.map { MagicComment.new(load_location, load_location) }
105
+ data_loc = load_optional_location
106
+ errors = load_varuint.times.map { ParseError.new(load_embedded_string, load_location) }
107
+ warnings = load_varuint.times.map { ParseWarning.new(load_embedded_string, load_location) }
108
+ [comments, magic_comments, data_loc, errors, warnings]
111
109
  end
112
110
 
113
111
  def load_tokens
114
112
  tokens = []
115
- while type = TOKEN_TYPES.fetch(load_varint)
116
- start = load_varint
117
- length = load_varint
118
- lex_state = load_varint
113
+ while type = TOKEN_TYPES.fetch(load_varuint)
114
+ start = load_varuint
115
+ length = load_varuint
116
+ lex_state = load_varuint
119
117
  location = Location.new(@source, start, length)
120
118
  tokens << [Prism::Token.new(type, location.slice, location), lex_state]
121
119
  end
@@ -127,39 +125,36 @@ module Prism
127
125
  tokens = load_tokens
128
126
  encoding = load_encoding
129
127
  load_start_line
130
- comments, magic_comments, errors, warnings = load_metadata
131
-
132
- if encoding != @encoding
133
- tokens.each { |token,| token.value.force_encoding(encoding) }
134
- end
128
+ comments, magic_comments, data_loc, errors, warnings = load_metadata
129
+ tokens.each { |token,| token.value.force_encoding(encoding) }
135
130
 
136
131
  raise "Expected to consume all bytes while deserializing" unless @io.eof?
137
- Prism::ParseResult.new(tokens, comments, magic_comments, errors, warnings, @source)
132
+ Prism::ParseResult.new(tokens, comments, magic_comments, data_loc, errors, warnings, @source)
138
133
  end
139
134
 
140
135
  def load_nodes
141
136
  load_header
142
- load_force_encoding
137
+ load_encoding
143
138
  load_start_line
144
139
 
145
- comments, magic_comments, errors, warnings = load_metadata
140
+ comments, magic_comments, data_loc, errors, warnings = load_metadata
146
141
 
147
142
  @constant_pool_offset = io.read(4).unpack1("L")
148
- @constant_pool = Array.new(load_varint, nil)
143
+ @constant_pool = Array.new(load_varuint, nil)
149
144
 
150
- [load_node, comments, magic_comments, errors, warnings]
145
+ [load_node, comments, magic_comments, data_loc, errors, warnings]
151
146
  end
152
147
 
153
148
  def load_result
154
- node, comments, magic_comments, errors, warnings = load_nodes
155
- Prism::ParseResult.new(node, comments, magic_comments, errors, warnings, @source)
149
+ node, comments, magic_comments, data_loc, errors, warnings = load_nodes
150
+ Prism::ParseResult.new(node, comments, magic_comments, data_loc, errors, warnings, @source)
156
151
  end
157
152
 
158
153
  private
159
154
 
160
155
  # variable-length integer using https://en.wikipedia.org/wiki/LEB128
161
156
  # This is also what protobuf uses: https://protobuf.dev/programming-guides/encoding/#varints
162
- def load_varint
157
+ def load_varuint
163
158
  n = io.getbyte
164
159
  if n < 128
165
160
  n
@@ -173,6 +168,11 @@ module Prism
173
168
  end
174
169
  end
175
170
 
171
+ def load_varsint
172
+ n = load_varuint
173
+ (n >> 1) ^ (-(n & 1))
174
+ end
175
+
176
176
  def load_serialized_length
177
177
  io.read(4).unpack1("L")
178
178
  end
@@ -185,14 +185,14 @@ module Prism
185
185
  end
186
186
 
187
187
  def load_embedded_string
188
- io.read(load_varint).force_encoding(encoding)
188
+ io.read(load_varuint).force_encoding(encoding)
189
189
  end
190
190
 
191
191
  def load_string
192
192
  type = io.getbyte
193
193
  case type
194
194
  when 1
195
- input.byteslice(load_varint, load_varint).force_encoding(encoding)
195
+ input.byteslice(load_varuint, load_varuint).force_encoding(encoding)
196
196
  when 2
197
197
  load_embedded_string
198
198
  else
@@ -201,7 +201,7 @@ module Prism
201
201
  end
202
202
 
203
203
  def load_location
204
- Location.new(source, load_varint, load_varint)
204
+ Location.new(source, load_varuint, load_varuint)
205
205
  end
206
206
 
207
207
  def load_optional_location
@@ -230,11 +230,11 @@ module Prism
230
230
  end
231
231
 
232
232
  def load_required_constant
233
- load_constant(load_varint - 1)
233
+ load_constant(load_varuint - 1)
234
234
  end
235
235
 
236
236
  def load_optional_constant
237
- index = load_varint
237
+ index = load_varuint
238
238
  load_constant(index - 1) if index != 0
239
239
  end
240
240
 
@@ -253,11 +253,11 @@ module Prism
253
253
  when 4 then
254
254
  AndNode.new(load_node, load_node, load_location, location)
255
255
  when 5 then
256
- ArgumentsNode.new(Array.new(load_varint) { load_node }, load_varint, location)
256
+ ArgumentsNode.new(load_varuint, Array.new(load_varuint) { load_node }, location)
257
257
  when 6 then
258
- ArrayNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
258
+ ArrayNode.new(load_varuint, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location, location)
259
259
  when 7 then
260
- ArrayPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
260
+ ArrayPatternNode.new(load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location, location)
261
261
  when 8 then
262
262
  AssocNode.new(load_node, load_optional_node, load_optional_location, location)
263
263
  when 9 then
@@ -271,267 +271,275 @@ module Prism
271
271
  when 13 then
272
272
  BlockLocalVariableNode.new(load_required_constant, location)
273
273
  when 14 then
274
- BlockNode.new(Array.new(load_varint) { load_required_constant }, load_optional_node, load_optional_node, load_location, load_location, location)
274
+ BlockNode.new(Array.new(load_varuint) { load_required_constant }, load_varuint, load_optional_node, load_optional_node, load_location, load_location, location)
275
275
  when 15 then
276
276
  BlockParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
277
277
  when 16 then
278
- BlockParametersNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
278
+ BlockParametersNode.new(load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location, location)
279
279
  when 17 then
280
280
  BreakNode.new(load_optional_node, load_location, location)
281
281
  when 18 then
282
- CallAndWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_varint, load_required_constant, load_required_constant, load_location, load_node, location)
282
+ CallAndWriteNode.new(load_varuint, load_optional_node, load_optional_location, load_optional_location, load_required_constant, load_required_constant, load_location, load_node, location)
283
283
  when 19 then
284
- CallNode.new(load_optional_node, load_optional_location, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, load_varint, load_required_constant, location)
284
+ CallNode.new(load_varuint, load_optional_node, load_optional_location, load_required_constant, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, location)
285
285
  when 20 then
286
- CallOperatorWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_varint, load_required_constant, load_required_constant, load_required_constant, load_location, load_node, location)
286
+ CallOperatorWriteNode.new(load_varuint, load_optional_node, load_optional_location, load_optional_location, load_required_constant, load_required_constant, load_required_constant, load_location, load_node, location)
287
287
  when 21 then
288
- CallOrWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_varint, load_required_constant, load_required_constant, load_location, load_node, location)
288
+ CallOrWriteNode.new(load_varuint, load_optional_node, load_optional_location, load_optional_location, load_required_constant, load_required_constant, load_location, load_node, location)
289
289
  when 22 then
290
- CapturePatternNode.new(load_node, load_node, load_location, location)
290
+ CallTargetNode.new(load_varuint, load_node, load_location, load_required_constant, load_location, location)
291
291
  when 23 then
292
- CaseNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_location, load_location, location)
292
+ CapturePatternNode.new(load_node, load_node, load_location, location)
293
293
  when 24 then
294
- ClassNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_location, load_required_constant, location)
294
+ CaseMatchNode.new(load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, load_location, load_location, location)
295
295
  when 25 then
296
- ClassVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
296
+ CaseNode.new(load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, load_location, load_location, location)
297
297
  when 26 then
298
- ClassVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
298
+ ClassNode.new(Array.new(load_varuint) { load_required_constant }, load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_location, load_required_constant, location)
299
299
  when 27 then
300
- ClassVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
300
+ ClassVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
301
301
  when 28 then
302
- ClassVariableReadNode.new(load_required_constant, location)
302
+ ClassVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
303
303
  when 29 then
304
- ClassVariableTargetNode.new(load_required_constant, location)
304
+ ClassVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
305
305
  when 30 then
306
- ClassVariableWriteNode.new(load_required_constant, load_location, load_node, load_optional_location, location)
306
+ ClassVariableReadNode.new(load_required_constant, location)
307
307
  when 31 then
308
- ConstantAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
308
+ ClassVariableTargetNode.new(load_required_constant, location)
309
309
  when 32 then
310
- ConstantOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
310
+ ClassVariableWriteNode.new(load_required_constant, load_location, load_node, load_optional_location, location)
311
311
  when 33 then
312
- ConstantOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
312
+ ConstantAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
313
313
  when 34 then
314
- ConstantPathAndWriteNode.new(load_node, load_location, load_node, location)
314
+ ConstantOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
315
315
  when 35 then
316
- ConstantPathNode.new(load_optional_node, load_node, load_location, location)
316
+ ConstantOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
317
317
  when 36 then
318
- ConstantPathOperatorWriteNode.new(load_node, load_location, load_node, load_required_constant, location)
318
+ ConstantPathAndWriteNode.new(load_node, load_location, load_node, location)
319
319
  when 37 then
320
- ConstantPathOrWriteNode.new(load_node, load_location, load_node, location)
320
+ ConstantPathNode.new(load_optional_node, load_node, load_location, location)
321
321
  when 38 then
322
- ConstantPathTargetNode.new(load_optional_node, load_node, load_location, location)
322
+ ConstantPathOperatorWriteNode.new(load_node, load_location, load_node, load_required_constant, location)
323
323
  when 39 then
324
- ConstantPathWriteNode.new(load_node, load_location, load_node, location)
324
+ ConstantPathOrWriteNode.new(load_node, load_location, load_node, location)
325
325
  when 40 then
326
- ConstantReadNode.new(load_required_constant, location)
326
+ ConstantPathTargetNode.new(load_optional_node, load_node, load_location, location)
327
327
  when 41 then
328
- ConstantTargetNode.new(load_required_constant, location)
328
+ ConstantPathWriteNode.new(load_node, load_location, load_node, location)
329
329
  when 42 then
330
- ConstantWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
330
+ ConstantReadNode.new(load_required_constant, location)
331
331
  when 43 then
332
- load_serialized_length
333
- DefNode.new(load_required_constant, load_location, load_optional_node, load_optional_node, load_optional_node, Array.new(load_varint) { load_required_constant }, load_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, location)
332
+ ConstantTargetNode.new(load_required_constant, location)
334
333
  when 44 then
335
- DefinedNode.new(load_optional_location, load_node, load_optional_location, load_location, location)
334
+ ConstantWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
336
335
  when 45 then
337
- ElseNode.new(load_location, load_optional_node, load_optional_location, location)
336
+ load_serialized_length
337
+ DefNode.new(load_required_constant, load_location, load_optional_node, load_optional_node, load_optional_node, Array.new(load_varuint) { load_required_constant }, load_varuint, load_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, location)
338
338
  when 46 then
339
- EmbeddedStatementsNode.new(load_location, load_optional_node, load_location, location)
339
+ DefinedNode.new(load_optional_location, load_node, load_optional_location, load_location, location)
340
340
  when 47 then
341
- EmbeddedVariableNode.new(load_location, load_node, location)
341
+ ElseNode.new(load_location, load_optional_node, load_optional_location, location)
342
342
  when 48 then
343
- EnsureNode.new(load_location, load_optional_node, load_location, location)
343
+ EmbeddedStatementsNode.new(load_location, load_optional_node, load_location, location)
344
344
  when 49 then
345
- FalseNode.new(location)
345
+ EmbeddedVariableNode.new(load_location, load_node, location)
346
346
  when 50 then
347
- FindPatternNode.new(load_optional_node, load_node, Array.new(load_varint) { load_node }, load_node, load_optional_location, load_optional_location, location)
347
+ EnsureNode.new(load_location, load_optional_node, load_location, location)
348
348
  when 51 then
349
- FlipFlopNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
349
+ FalseNode.new(location)
350
350
  when 52 then
351
- FloatNode.new(location)
351
+ FindPatternNode.new(load_optional_node, load_node, Array.new(load_varuint) { load_node }, load_node, load_optional_location, load_optional_location, location)
352
352
  when 53 then
353
- ForNode.new(load_node, load_node, load_optional_node, load_location, load_location, load_optional_location, load_location, location)
353
+ FlipFlopNode.new(load_varuint, load_optional_node, load_optional_node, load_location, location)
354
354
  when 54 then
355
- ForwardingArgumentsNode.new(location)
355
+ FloatNode.new(location)
356
356
  when 55 then
357
- ForwardingParameterNode.new(location)
357
+ ForNode.new(load_node, load_node, load_optional_node, load_location, load_location, load_optional_location, load_location, location)
358
358
  when 56 then
359
- ForwardingSuperNode.new(load_optional_node, location)
359
+ ForwardingArgumentsNode.new(location)
360
360
  when 57 then
361
- GlobalVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
361
+ ForwardingParameterNode.new(location)
362
362
  when 58 then
363
- GlobalVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
363
+ ForwardingSuperNode.new(load_optional_node, location)
364
364
  when 59 then
365
- GlobalVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
365
+ GlobalVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
366
366
  when 60 then
367
- GlobalVariableReadNode.new(load_required_constant, location)
367
+ GlobalVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
368
368
  when 61 then
369
- GlobalVariableTargetNode.new(load_required_constant, location)
369
+ GlobalVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
370
370
  when 62 then
371
- GlobalVariableWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
371
+ GlobalVariableReadNode.new(load_required_constant, location)
372
372
  when 63 then
373
- HashNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
373
+ GlobalVariableTargetNode.new(load_required_constant, location)
374
374
  when 64 then
375
- HashPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_optional_location, load_optional_location, location)
375
+ GlobalVariableWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
376
376
  when 65 then
377
- IfNode.new(load_optional_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
377
+ HashNode.new(load_location, Array.new(load_varuint) { load_node }, load_location, location)
378
378
  when 66 then
379
- ImaginaryNode.new(load_node, location)
379
+ HashPatternNode.new(load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, load_optional_location, load_optional_location, location)
380
380
  when 67 then
381
- ImplicitNode.new(load_node, location)
381
+ IfNode.new(load_optional_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_optional_location, location)
382
382
  when 68 then
383
- InNode.new(load_node, load_optional_node, load_location, load_optional_location, location)
383
+ ImaginaryNode.new(load_node, location)
384
384
  when 69 then
385
- IndexAndWriteNode.new(load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_varint, load_location, load_node, location)
385
+ ImplicitNode.new(load_node, location)
386
386
  when 70 then
387
- IndexOperatorWriteNode.new(load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_varint, load_required_constant, load_location, load_node, location)
387
+ ImplicitRestNode.new(location)
388
388
  when 71 then
389
- IndexOrWriteNode.new(load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_varint, load_location, load_node, location)
389
+ InNode.new(load_node, load_optional_node, load_location, load_optional_location, location)
390
390
  when 72 then
391
- InstanceVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
391
+ IndexAndWriteNode.new(load_varuint, load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_location, load_node, location)
392
392
  when 73 then
393
- InstanceVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
393
+ IndexOperatorWriteNode.new(load_varuint, load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_required_constant, load_location, load_node, location)
394
394
  when 74 then
395
- InstanceVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
395
+ IndexOrWriteNode.new(load_varuint, load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_location, load_node, location)
396
396
  when 75 then
397
- InstanceVariableReadNode.new(load_required_constant, location)
397
+ IndexTargetNode.new(load_varuint, load_node, load_location, load_optional_node, load_location, load_optional_node, location)
398
398
  when 76 then
399
- InstanceVariableTargetNode.new(load_required_constant, location)
399
+ InstanceVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
400
400
  when 77 then
401
- InstanceVariableWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
401
+ InstanceVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
402
402
  when 78 then
403
- IntegerNode.new(load_varint, location)
403
+ InstanceVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
404
404
  when 79 then
405
- InterpolatedMatchLastLineNode.new(load_location, Array.new(load_varint) { load_node }, load_location, load_varint, location)
405
+ InstanceVariableReadNode.new(load_required_constant, location)
406
406
  when 80 then
407
- InterpolatedRegularExpressionNode.new(load_location, Array.new(load_varint) { load_node }, load_location, load_varint, location)
407
+ InstanceVariableTargetNode.new(load_required_constant, location)
408
408
  when 81 then
409
- InterpolatedStringNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
409
+ InstanceVariableWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
410
410
  when 82 then
411
- InterpolatedSymbolNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
411
+ IntegerNode.new(load_varuint, location)
412
412
  when 83 then
413
- InterpolatedXStringNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
413
+ InterpolatedMatchLastLineNode.new(load_varuint, load_location, Array.new(load_varuint) { load_node }, load_location, location)
414
414
  when 84 then
415
- KeywordHashNode.new(Array.new(load_varint) { load_node }, location)
415
+ InterpolatedRegularExpressionNode.new(load_varuint, load_location, Array.new(load_varuint) { load_node }, load_location, location)
416
416
  when 85 then
417
- KeywordRestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
417
+ InterpolatedStringNode.new(load_optional_location, Array.new(load_varuint) { load_node }, load_optional_location, location)
418
418
  when 86 then
419
- LambdaNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_location, load_location, load_optional_node, load_optional_node, location)
419
+ InterpolatedSymbolNode.new(load_optional_location, Array.new(load_varuint) { load_node }, load_optional_location, location)
420
420
  when 87 then
421
- LocalVariableAndWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varint, location)
421
+ InterpolatedXStringNode.new(load_location, Array.new(load_varuint) { load_node }, load_location, location)
422
422
  when 88 then
423
- LocalVariableOperatorWriteNode.new(load_location, load_location, load_node, load_required_constant, load_required_constant, load_varint, location)
423
+ KeywordHashNode.new(load_varuint, Array.new(load_varuint) { load_node }, location)
424
424
  when 89 then
425
- LocalVariableOrWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varint, location)
425
+ KeywordRestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
426
426
  when 90 then
427
- LocalVariableReadNode.new(load_required_constant, load_varint, location)
427
+ LambdaNode.new(Array.new(load_varuint) { load_required_constant }, load_varuint, load_location, load_location, load_location, load_optional_node, load_optional_node, location)
428
428
  when 91 then
429
- LocalVariableTargetNode.new(load_required_constant, load_varint, location)
429
+ LocalVariableAndWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varuint, location)
430
430
  when 92 then
431
- LocalVariableWriteNode.new(load_required_constant, load_varint, load_location, load_node, load_location, location)
431
+ LocalVariableOperatorWriteNode.new(load_location, load_location, load_node, load_required_constant, load_required_constant, load_varuint, location)
432
432
  when 93 then
433
- MatchLastLineNode.new(load_location, load_location, load_location, load_string, load_varint, location)
433
+ LocalVariableOrWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varuint, location)
434
434
  when 94 then
435
- MatchPredicateNode.new(load_node, load_node, load_location, location)
435
+ LocalVariableReadNode.new(load_required_constant, load_varuint, location)
436
436
  when 95 then
437
- MatchRequiredNode.new(load_node, load_node, load_location, location)
437
+ LocalVariableTargetNode.new(load_required_constant, load_varuint, location)
438
438
  when 96 then
439
- MatchWriteNode.new(load_node, Array.new(load_varint) { load_required_constant }, location)
439
+ LocalVariableWriteNode.new(load_required_constant, load_varuint, load_location, load_node, load_location, location)
440
440
  when 97 then
441
- MissingNode.new(location)
441
+ MatchLastLineNode.new(load_varuint, load_location, load_location, load_location, load_string, location)
442
442
  when 98 then
443
- ModuleNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_node, load_optional_node, load_location, load_required_constant, location)
443
+ MatchPredicateNode.new(load_node, load_node, load_location, location)
444
444
  when 99 then
445
- MultiTargetNode.new(Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
445
+ MatchRequiredNode.new(load_node, load_node, load_location, location)
446
446
  when 100 then
447
- MultiWriteNode.new(Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, load_location, load_node, location)
447
+ MatchWriteNode.new(load_node, Array.new(load_varuint) { load_node }, location)
448
448
  when 101 then
449
- NextNode.new(load_optional_node, load_location, location)
449
+ MissingNode.new(location)
450
450
  when 102 then
451
- NilNode.new(location)
451
+ ModuleNode.new(Array.new(load_varuint) { load_required_constant }, load_location, load_node, load_optional_node, load_location, load_required_constant, location)
452
452
  when 103 then
453
- NoKeywordsParameterNode.new(load_location, load_location, location)
453
+ MultiTargetNode.new(Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location, location)
454
454
  when 104 then
455
- NumberedReferenceReadNode.new(load_varint, location)
455
+ MultiWriteNode.new(Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location, load_location, load_node, location)
456
456
  when 105 then
457
- OptionalKeywordParameterNode.new(load_required_constant, load_location, load_node, location)
457
+ NextNode.new(load_optional_node, load_location, location)
458
458
  when 106 then
459
- OptionalParameterNode.new(load_required_constant, load_location, load_location, load_node, location)
459
+ NilNode.new(location)
460
460
  when 107 then
461
- OrNode.new(load_node, load_node, load_location, location)
461
+ NoKeywordsParameterNode.new(load_location, load_location, location)
462
462
  when 108 then
463
- ParametersNode.new(Array.new(load_varint) { load_node }, Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, Array.new(load_varint) { load_node }, load_optional_node, load_optional_node, location)
463
+ NumberedParametersNode.new(io.getbyte, location)
464
464
  when 109 then
465
- ParenthesesNode.new(load_optional_node, load_location, load_location, location)
465
+ NumberedReferenceReadNode.new(load_varuint, location)
466
466
  when 110 then
467
- PinnedExpressionNode.new(load_node, load_location, load_location, load_location, location)
467
+ OptionalKeywordParameterNode.new(load_required_constant, load_location, load_node, location)
468
468
  when 111 then
469
- PinnedVariableNode.new(load_node, load_location, location)
469
+ OptionalParameterNode.new(load_required_constant, load_location, load_location, load_node, location)
470
470
  when 112 then
471
- PostExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
471
+ OrNode.new(load_node, load_node, load_location, location)
472
472
  when 113 then
473
- PreExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
473
+ ParametersNode.new(Array.new(load_varuint) { load_node }, Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, Array.new(load_varuint) { load_node }, load_optional_node, load_optional_node, location)
474
474
  when 114 then
475
- ProgramNode.new(Array.new(load_varint) { load_required_constant }, load_node, location)
475
+ ParenthesesNode.new(load_optional_node, load_location, load_location, location)
476
476
  when 115 then
477
- RangeNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
477
+ PinnedExpressionNode.new(load_node, load_location, load_location, load_location, location)
478
478
  when 116 then
479
- RationalNode.new(load_node, location)
479
+ PinnedVariableNode.new(load_node, load_location, location)
480
480
  when 117 then
481
- RedoNode.new(location)
481
+ PostExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
482
482
  when 118 then
483
- RegularExpressionNode.new(load_location, load_location, load_location, load_string, load_varint, location)
483
+ PreExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
484
484
  when 119 then
485
- RequiredKeywordParameterNode.new(load_required_constant, load_location, location)
485
+ ProgramNode.new(Array.new(load_varuint) { load_required_constant }, load_node, location)
486
486
  when 120 then
487
- RequiredParameterNode.new(load_required_constant, location)
487
+ RangeNode.new(load_varuint, load_optional_node, load_optional_node, load_location, location)
488
488
  when 121 then
489
- RescueModifierNode.new(load_node, load_location, load_node, location)
489
+ RationalNode.new(load_node, location)
490
490
  when 122 then
491
- RescueNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_location, load_optional_node, load_optional_node, load_optional_node, location)
491
+ RedoNode.new(location)
492
492
  when 123 then
493
- RestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
493
+ RegularExpressionNode.new(load_varuint, load_location, load_location, load_location, load_string, location)
494
494
  when 124 then
495
- RetryNode.new(location)
495
+ RequiredKeywordParameterNode.new(load_required_constant, load_location, location)
496
496
  when 125 then
497
- ReturnNode.new(load_location, load_optional_node, location)
497
+ RequiredParameterNode.new(load_required_constant, location)
498
498
  when 126 then
499
- SelfNode.new(location)
499
+ RescueModifierNode.new(load_node, load_location, load_node, location)
500
500
  when 127 then
501
- SingletonClassNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_location, load_node, load_optional_node, load_location, location)
501
+ RescueNode.new(load_location, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_node, load_optional_node, load_optional_node, location)
502
502
  when 128 then
503
- SourceEncodingNode.new(location)
503
+ RestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
504
504
  when 129 then
505
- SourceFileNode.new(load_string, location)
505
+ RetryNode.new(location)
506
506
  when 130 then
507
- SourceLineNode.new(location)
507
+ ReturnNode.new(load_location, load_optional_node, location)
508
508
  when 131 then
509
- SplatNode.new(load_location, load_optional_node, location)
509
+ SelfNode.new(location)
510
510
  when 132 then
511
- StatementsNode.new(Array.new(load_varint) { load_node }, location)
511
+ SingletonClassNode.new(Array.new(load_varuint) { load_required_constant }, load_location, load_location, load_node, load_optional_node, load_location, location)
512
512
  when 133 then
513
- StringConcatNode.new(load_node, load_node, location)
513
+ SourceEncodingNode.new(location)
514
514
  when 134 then
515
- StringNode.new(load_varint, load_optional_location, load_location, load_optional_location, load_string, location)
515
+ SourceFileNode.new(load_string, location)
516
516
  when 135 then
517
- SuperNode.new(load_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, location)
517
+ SourceLineNode.new(location)
518
518
  when 136 then
519
- SymbolNode.new(load_optional_location, load_optional_location, load_optional_location, load_string, location)
519
+ SplatNode.new(load_location, load_optional_node, location)
520
520
  when 137 then
521
- TrueNode.new(location)
521
+ StatementsNode.new(Array.new(load_varuint) { load_node }, location)
522
522
  when 138 then
523
- UndefNode.new(Array.new(load_varint) { load_node }, load_location, location)
523
+ StringNode.new(load_varuint, load_optional_location, load_location, load_optional_location, load_string, location)
524
524
  when 139 then
525
- UnlessNode.new(load_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
525
+ SuperNode.new(load_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, location)
526
526
  when 140 then
527
- UntilNode.new(load_location, load_optional_location, load_node, load_optional_node, load_varint, location)
527
+ SymbolNode.new(load_varuint, load_optional_location, load_optional_location, load_optional_location, load_string, location)
528
528
  when 141 then
529
- WhenNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_node, location)
529
+ TrueNode.new(location)
530
530
  when 142 then
531
- WhileNode.new(load_location, load_optional_location, load_node, load_optional_node, load_varint, location)
531
+ UndefNode.new(Array.new(load_varuint) { load_node }, load_location, location)
532
532
  when 143 then
533
- XStringNode.new(load_location, load_location, load_location, load_string, location)
533
+ UnlessNode.new(load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_optional_location, location)
534
534
  when 144 then
535
+ UntilNode.new(load_varuint, load_location, load_optional_location, load_node, load_optional_node, location)
536
+ when 145 then
537
+ WhenNode.new(load_location, Array.new(load_varuint) { load_node }, load_optional_node, location)
538
+ when 146 then
539
+ WhileNode.new(load_varuint, load_location, load_optional_location, load_node, load_optional_node, location)
540
+ when 147 then
541
+ XStringNode.new(load_varuint, load_location, load_location, load_location, load_string, location)
542
+ when 148 then
535
543
  YieldNode.new(load_location, load_optional_location, load_optional_node, load_optional_location, location)
536
544
  end
537
545
  end
@@ -562,15 +570,15 @@ module Prism
562
570
  },
563
571
  -> {
564
572
  location = load_location
565
- ArgumentsNode.new(Array.new(load_varint) { load_node }, load_varint, location)
573
+ ArgumentsNode.new(load_varuint, Array.new(load_varuint) { load_node }, location)
566
574
  },
567
575
  -> {
568
576
  location = load_location
569
- ArrayNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
577
+ ArrayNode.new(load_varuint, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location, location)
570
578
  },
571
579
  -> {
572
580
  location = load_location
573
- ArrayPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
581
+ ArrayPatternNode.new(load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location, location)
574
582
  },
575
583
  -> {
576
584
  location = load_location
@@ -598,7 +606,7 @@ module Prism
598
606
  },
599
607
  -> {
600
608
  location = load_location
601
- BlockNode.new(Array.new(load_varint) { load_required_constant }, load_optional_node, load_optional_node, load_location, load_location, location)
609
+ BlockNode.new(Array.new(load_varuint) { load_required_constant }, load_varuint, load_optional_node, load_optional_node, load_location, load_location, location)
602
610
  },
603
611
  -> {
604
612
  location = load_location
@@ -606,7 +614,7 @@ module Prism
606
614
  },
607
615
  -> {
608
616
  location = load_location
609
- BlockParametersNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
617
+ BlockParametersNode.new(load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location, location)
610
618
  },
611
619
  -> {
612
620
  location = load_location
@@ -614,19 +622,23 @@ module Prism
614
622
  },
615
623
  -> {
616
624
  location = load_location
617
- CallAndWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_varint, load_required_constant, load_required_constant, load_location, load_node, location)
625
+ CallAndWriteNode.new(load_varuint, load_optional_node, load_optional_location, load_optional_location, load_required_constant, load_required_constant, load_location, load_node, location)
618
626
  },
619
627
  -> {
620
628
  location = load_location
621
- CallNode.new(load_optional_node, load_optional_location, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, load_varint, load_required_constant, location)
629
+ CallNode.new(load_varuint, load_optional_node, load_optional_location, load_required_constant, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, location)
622
630
  },
623
631
  -> {
624
632
  location = load_location
625
- CallOperatorWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_varint, load_required_constant, load_required_constant, load_required_constant, load_location, load_node, location)
633
+ CallOperatorWriteNode.new(load_varuint, load_optional_node, load_optional_location, load_optional_location, load_required_constant, load_required_constant, load_required_constant, load_location, load_node, location)
626
634
  },
627
635
  -> {
628
636
  location = load_location
629
- CallOrWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_varint, load_required_constant, load_required_constant, load_location, load_node, location)
637
+ CallOrWriteNode.new(load_varuint, load_optional_node, load_optional_location, load_optional_location, load_required_constant, load_required_constant, load_location, load_node, location)
638
+ },
639
+ -> {
640
+ location = load_location
641
+ CallTargetNode.new(load_varuint, load_node, load_location, load_required_constant, load_location, location)
630
642
  },
631
643
  -> {
632
644
  location = load_location
@@ -634,11 +646,15 @@ module Prism
634
646
  },
635
647
  -> {
636
648
  location = load_location
637
- CaseNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_location, load_location, location)
649
+ CaseMatchNode.new(load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, load_location, load_location, location)
638
650
  },
639
651
  -> {
640
652
  location = load_location
641
- ClassNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_location, load_required_constant, location)
653
+ CaseNode.new(load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, load_location, load_location, location)
654
+ },
655
+ -> {
656
+ location = load_location
657
+ ClassNode.new(Array.new(load_varuint) { load_required_constant }, load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_location, load_required_constant, location)
642
658
  },
643
659
  -> {
644
660
  location = load_location
@@ -715,7 +731,7 @@ module Prism
715
731
  -> {
716
732
  location = load_location
717
733
  load_serialized_length
718
- DefNode.new(load_required_constant, load_location, load_optional_node, load_optional_node, load_optional_node, Array.new(load_varint) { load_required_constant }, load_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, location)
734
+ DefNode.new(load_required_constant, load_location, load_optional_node, load_optional_node, load_optional_node, Array.new(load_varuint) { load_required_constant }, load_varuint, load_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, location)
719
735
  },
720
736
  -> {
721
737
  location = load_location
@@ -743,11 +759,11 @@ module Prism
743
759
  },
744
760
  -> {
745
761
  location = load_location
746
- FindPatternNode.new(load_optional_node, load_node, Array.new(load_varint) { load_node }, load_node, load_optional_location, load_optional_location, location)
762
+ FindPatternNode.new(load_optional_node, load_node, Array.new(load_varuint) { load_node }, load_node, load_optional_location, load_optional_location, location)
747
763
  },
748
764
  -> {
749
765
  location = load_location
750
- FlipFlopNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
766
+ FlipFlopNode.new(load_varuint, load_optional_node, load_optional_node, load_location, location)
751
767
  },
752
768
  -> {
753
769
  location = load_location
@@ -795,15 +811,15 @@ module Prism
795
811
  },
796
812
  -> {
797
813
  location = load_location
798
- HashNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
814
+ HashNode.new(load_location, Array.new(load_varuint) { load_node }, load_location, location)
799
815
  },
800
816
  -> {
801
817
  location = load_location
802
- HashPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_optional_location, load_optional_location, location)
818
+ HashPatternNode.new(load_optional_node, Array.new(load_varuint) { load_node }, load_optional_node, load_optional_location, load_optional_location, location)
803
819
  },
804
820
  -> {
805
821
  location = load_location
806
- IfNode.new(load_optional_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
822
+ IfNode.new(load_optional_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_optional_location, location)
807
823
  },
808
824
  -> {
809
825
  location = load_location
@@ -813,21 +829,29 @@ module Prism
813
829
  location = load_location
814
830
  ImplicitNode.new(load_node, location)
815
831
  },
832
+ -> {
833
+ location = load_location
834
+ ImplicitRestNode.new(location)
835
+ },
816
836
  -> {
817
837
  location = load_location
818
838
  InNode.new(load_node, load_optional_node, load_location, load_optional_location, location)
819
839
  },
820
840
  -> {
821
841
  location = load_location
822
- IndexAndWriteNode.new(load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_varint, load_location, load_node, location)
842
+ IndexAndWriteNode.new(load_varuint, load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_location, load_node, location)
843
+ },
844
+ -> {
845
+ location = load_location
846
+ IndexOperatorWriteNode.new(load_varuint, load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_required_constant, load_location, load_node, location)
823
847
  },
824
848
  -> {
825
849
  location = load_location
826
- IndexOperatorWriteNode.new(load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_varint, load_required_constant, load_location, load_node, location)
850
+ IndexOrWriteNode.new(load_varuint, load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_location, load_node, location)
827
851
  },
828
852
  -> {
829
853
  location = load_location
830
- IndexOrWriteNode.new(load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_varint, load_location, load_node, location)
854
+ IndexTargetNode.new(load_varuint, load_node, load_location, load_optional_node, load_location, load_optional_node, location)
831
855
  },
832
856
  -> {
833
857
  location = load_location
@@ -855,31 +879,31 @@ module Prism
855
879
  },
856
880
  -> {
857
881
  location = load_location
858
- IntegerNode.new(load_varint, location)
882
+ IntegerNode.new(load_varuint, location)
859
883
  },
860
884
  -> {
861
885
  location = load_location
862
- InterpolatedMatchLastLineNode.new(load_location, Array.new(load_varint) { load_node }, load_location, load_varint, location)
886
+ InterpolatedMatchLastLineNode.new(load_varuint, load_location, Array.new(load_varuint) { load_node }, load_location, location)
863
887
  },
864
888
  -> {
865
889
  location = load_location
866
- InterpolatedRegularExpressionNode.new(load_location, Array.new(load_varint) { load_node }, load_location, load_varint, location)
890
+ InterpolatedRegularExpressionNode.new(load_varuint, load_location, Array.new(load_varuint) { load_node }, load_location, location)
867
891
  },
868
892
  -> {
869
893
  location = load_location
870
- InterpolatedStringNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
894
+ InterpolatedStringNode.new(load_optional_location, Array.new(load_varuint) { load_node }, load_optional_location, location)
871
895
  },
872
896
  -> {
873
897
  location = load_location
874
- InterpolatedSymbolNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
898
+ InterpolatedSymbolNode.new(load_optional_location, Array.new(load_varuint) { load_node }, load_optional_location, location)
875
899
  },
876
900
  -> {
877
901
  location = load_location
878
- InterpolatedXStringNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
902
+ InterpolatedXStringNode.new(load_location, Array.new(load_varuint) { load_node }, load_location, location)
879
903
  },
880
904
  -> {
881
905
  location = load_location
882
- KeywordHashNode.new(Array.new(load_varint) { load_node }, location)
906
+ KeywordHashNode.new(load_varuint, Array.new(load_varuint) { load_node }, location)
883
907
  },
884
908
  -> {
885
909
  location = load_location
@@ -887,35 +911,35 @@ module Prism
887
911
  },
888
912
  -> {
889
913
  location = load_location
890
- LambdaNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_location, load_location, load_optional_node, load_optional_node, location)
914
+ LambdaNode.new(Array.new(load_varuint) { load_required_constant }, load_varuint, load_location, load_location, load_location, load_optional_node, load_optional_node, location)
891
915
  },
892
916
  -> {
893
917
  location = load_location
894
- LocalVariableAndWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varint, location)
918
+ LocalVariableAndWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varuint, location)
895
919
  },
896
920
  -> {
897
921
  location = load_location
898
- LocalVariableOperatorWriteNode.new(load_location, load_location, load_node, load_required_constant, load_required_constant, load_varint, location)
922
+ LocalVariableOperatorWriteNode.new(load_location, load_location, load_node, load_required_constant, load_required_constant, load_varuint, location)
899
923
  },
900
924
  -> {
901
925
  location = load_location
902
- LocalVariableOrWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varint, location)
926
+ LocalVariableOrWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varuint, location)
903
927
  },
904
928
  -> {
905
929
  location = load_location
906
- LocalVariableReadNode.new(load_required_constant, load_varint, location)
930
+ LocalVariableReadNode.new(load_required_constant, load_varuint, location)
907
931
  },
908
932
  -> {
909
933
  location = load_location
910
- LocalVariableTargetNode.new(load_required_constant, load_varint, location)
934
+ LocalVariableTargetNode.new(load_required_constant, load_varuint, location)
911
935
  },
912
936
  -> {
913
937
  location = load_location
914
- LocalVariableWriteNode.new(load_required_constant, load_varint, load_location, load_node, load_location, location)
938
+ LocalVariableWriteNode.new(load_required_constant, load_varuint, load_location, load_node, load_location, location)
915
939
  },
916
940
  -> {
917
941
  location = load_location
918
- MatchLastLineNode.new(load_location, load_location, load_location, load_string, load_varint, location)
942
+ MatchLastLineNode.new(load_varuint, load_location, load_location, load_location, load_string, location)
919
943
  },
920
944
  -> {
921
945
  location = load_location
@@ -927,7 +951,7 @@ module Prism
927
951
  },
928
952
  -> {
929
953
  location = load_location
930
- MatchWriteNode.new(load_node, Array.new(load_varint) { load_required_constant }, location)
954
+ MatchWriteNode.new(load_node, Array.new(load_varuint) { load_node }, location)
931
955
  },
932
956
  -> {
933
957
  location = load_location
@@ -935,15 +959,15 @@ module Prism
935
959
  },
936
960
  -> {
937
961
  location = load_location
938
- ModuleNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_node, load_optional_node, load_location, load_required_constant, location)
962
+ ModuleNode.new(Array.new(load_varuint) { load_required_constant }, load_location, load_node, load_optional_node, load_location, load_required_constant, location)
939
963
  },
940
964
  -> {
941
965
  location = load_location
942
- MultiTargetNode.new(Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
966
+ MultiTargetNode.new(Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location, location)
943
967
  },
944
968
  -> {
945
969
  location = load_location
946
- MultiWriteNode.new(Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, load_location, load_node, location)
970
+ MultiWriteNode.new(Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location, load_location, load_node, location)
947
971
  },
948
972
  -> {
949
973
  location = load_location
@@ -959,7 +983,11 @@ module Prism
959
983
  },
960
984
  -> {
961
985
  location = load_location
962
- NumberedReferenceReadNode.new(load_varint, location)
986
+ NumberedParametersNode.new(io.getbyte, location)
987
+ },
988
+ -> {
989
+ location = load_location
990
+ NumberedReferenceReadNode.new(load_varuint, location)
963
991
  },
964
992
  -> {
965
993
  location = load_location
@@ -975,7 +1003,7 @@ module Prism
975
1003
  },
976
1004
  -> {
977
1005
  location = load_location
978
- ParametersNode.new(Array.new(load_varint) { load_node }, Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, Array.new(load_varint) { load_node }, load_optional_node, load_optional_node, location)
1006
+ ParametersNode.new(Array.new(load_varuint) { load_node }, Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, Array.new(load_varuint) { load_node }, load_optional_node, load_optional_node, location)
979
1007
  },
980
1008
  -> {
981
1009
  location = load_location
@@ -999,11 +1027,11 @@ module Prism
999
1027
  },
1000
1028
  -> {
1001
1029
  location = load_location
1002
- ProgramNode.new(Array.new(load_varint) { load_required_constant }, load_node, location)
1030
+ ProgramNode.new(Array.new(load_varuint) { load_required_constant }, load_node, location)
1003
1031
  },
1004
1032
  -> {
1005
1033
  location = load_location
1006
- RangeNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
1034
+ RangeNode.new(load_varuint, load_optional_node, load_optional_node, load_location, location)
1007
1035
  },
1008
1036
  -> {
1009
1037
  location = load_location
@@ -1015,7 +1043,7 @@ module Prism
1015
1043
  },
1016
1044
  -> {
1017
1045
  location = load_location
1018
- RegularExpressionNode.new(load_location, load_location, load_location, load_string, load_varint, location)
1046
+ RegularExpressionNode.new(load_varuint, load_location, load_location, load_location, load_string, location)
1019
1047
  },
1020
1048
  -> {
1021
1049
  location = load_location
@@ -1031,7 +1059,7 @@ module Prism
1031
1059
  },
1032
1060
  -> {
1033
1061
  location = load_location
1034
- RescueNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_location, load_optional_node, load_optional_node, load_optional_node, location)
1062
+ RescueNode.new(load_location, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_node, load_optional_node, load_optional_node, location)
1035
1063
  },
1036
1064
  -> {
1037
1065
  location = load_location
@@ -1051,7 +1079,7 @@ module Prism
1051
1079
  },
1052
1080
  -> {
1053
1081
  location = load_location
1054
- SingletonClassNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_location, load_node, load_optional_node, load_location, location)
1082
+ SingletonClassNode.new(Array.new(load_varuint) { load_required_constant }, load_location, load_location, load_node, load_optional_node, load_location, location)
1055
1083
  },
1056
1084
  -> {
1057
1085
  location = load_location
@@ -1071,15 +1099,11 @@ module Prism
1071
1099
  },
1072
1100
  -> {
1073
1101
  location = load_location
1074
- StatementsNode.new(Array.new(load_varint) { load_node }, location)
1075
- },
1076
- -> {
1077
- location = load_location
1078
- StringConcatNode.new(load_node, load_node, location)
1102
+ StatementsNode.new(Array.new(load_varuint) { load_node }, location)
1079
1103
  },
1080
1104
  -> {
1081
1105
  location = load_location
1082
- StringNode.new(load_varint, load_optional_location, load_location, load_optional_location, load_string, location)
1106
+ StringNode.new(load_varuint, load_optional_location, load_location, load_optional_location, load_string, location)
1083
1107
  },
1084
1108
  -> {
1085
1109
  location = load_location
@@ -1087,7 +1111,7 @@ module Prism
1087
1111
  },
1088
1112
  -> {
1089
1113
  location = load_location
1090
- SymbolNode.new(load_optional_location, load_optional_location, load_optional_location, load_string, location)
1114
+ SymbolNode.new(load_varuint, load_optional_location, load_optional_location, load_optional_location, load_string, location)
1091
1115
  },
1092
1116
  -> {
1093
1117
  location = load_location
@@ -1095,27 +1119,27 @@ module Prism
1095
1119
  },
1096
1120
  -> {
1097
1121
  location = load_location
1098
- UndefNode.new(Array.new(load_varint) { load_node }, load_location, location)
1122
+ UndefNode.new(Array.new(load_varuint) { load_node }, load_location, location)
1099
1123
  },
1100
1124
  -> {
1101
1125
  location = load_location
1102
- UnlessNode.new(load_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
1126
+ UnlessNode.new(load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_optional_location, location)
1103
1127
  },
1104
1128
  -> {
1105
1129
  location = load_location
1106
- UntilNode.new(load_location, load_optional_location, load_node, load_optional_node, load_varint, location)
1130
+ UntilNode.new(load_varuint, load_location, load_optional_location, load_node, load_optional_node, location)
1107
1131
  },
1108
1132
  -> {
1109
1133
  location = load_location
1110
- WhenNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_node, location)
1134
+ WhenNode.new(load_location, Array.new(load_varuint) { load_node }, load_optional_node, location)
1111
1135
  },
1112
1136
  -> {
1113
1137
  location = load_location
1114
- WhileNode.new(load_location, load_optional_location, load_node, load_optional_node, load_varint, location)
1138
+ WhileNode.new(load_varuint, load_location, load_optional_location, load_node, load_optional_node, location)
1115
1139
  },
1116
1140
  -> {
1117
1141
  location = load_location
1118
- XStringNode.new(load_location, load_location, load_location, load_string, location)
1142
+ XStringNode.new(load_varuint, load_location, load_location, load_location, load_string, location)
1119
1143
  },
1120
1144
  -> {
1121
1145
  location = load_location