prism 0.17.1 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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