ed-precompiled_prism 1.5.2-x86_64-linux

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 (160) hide show
  1. checksums.yaml +7 -0
  2. data/BSDmakefile +58 -0
  3. data/CHANGELOG.md +723 -0
  4. data/CODE_OF_CONDUCT.md +76 -0
  5. data/CONTRIBUTING.md +58 -0
  6. data/LICENSE.md +7 -0
  7. data/Makefile +110 -0
  8. data/README.md +143 -0
  9. data/config.yml +4714 -0
  10. data/docs/build_system.md +119 -0
  11. data/docs/configuration.md +68 -0
  12. data/docs/cruby_compilation.md +27 -0
  13. data/docs/design.md +53 -0
  14. data/docs/encoding.md +121 -0
  15. data/docs/fuzzing.md +88 -0
  16. data/docs/heredocs.md +36 -0
  17. data/docs/javascript.md +118 -0
  18. data/docs/local_variable_depth.md +229 -0
  19. data/docs/mapping.md +117 -0
  20. data/docs/parser_translation.md +24 -0
  21. data/docs/parsing_rules.md +22 -0
  22. data/docs/releasing.md +98 -0
  23. data/docs/relocation.md +34 -0
  24. data/docs/ripper_translation.md +72 -0
  25. data/docs/ruby_api.md +44 -0
  26. data/docs/ruby_parser_translation.md +19 -0
  27. data/docs/serialization.md +233 -0
  28. data/docs/testing.md +55 -0
  29. data/ext/prism/api_node.c +6941 -0
  30. data/ext/prism/api_pack.c +276 -0
  31. data/ext/prism/extconf.rb +127 -0
  32. data/ext/prism/extension.c +1419 -0
  33. data/ext/prism/extension.h +19 -0
  34. data/include/prism/ast.h +8220 -0
  35. data/include/prism/defines.h +260 -0
  36. data/include/prism/diagnostic.h +456 -0
  37. data/include/prism/encoding.h +283 -0
  38. data/include/prism/node.h +129 -0
  39. data/include/prism/options.h +482 -0
  40. data/include/prism/pack.h +163 -0
  41. data/include/prism/parser.h +933 -0
  42. data/include/prism/prettyprint.h +34 -0
  43. data/include/prism/regexp.h +43 -0
  44. data/include/prism/static_literals.h +121 -0
  45. data/include/prism/util/pm_buffer.h +236 -0
  46. data/include/prism/util/pm_char.h +204 -0
  47. data/include/prism/util/pm_constant_pool.h +218 -0
  48. data/include/prism/util/pm_integer.h +130 -0
  49. data/include/prism/util/pm_list.h +103 -0
  50. data/include/prism/util/pm_memchr.h +29 -0
  51. data/include/prism/util/pm_newline_list.h +113 -0
  52. data/include/prism/util/pm_string.h +200 -0
  53. data/include/prism/util/pm_strncasecmp.h +32 -0
  54. data/include/prism/util/pm_strpbrk.h +46 -0
  55. data/include/prism/version.h +29 -0
  56. data/include/prism.h +408 -0
  57. data/lib/prism/3.0/prism.so +0 -0
  58. data/lib/prism/3.1/prism.so +0 -0
  59. data/lib/prism/3.2/prism.so +0 -0
  60. data/lib/prism/3.3/prism.so +0 -0
  61. data/lib/prism/3.4/prism.so +0 -0
  62. data/lib/prism/compiler.rb +801 -0
  63. data/lib/prism/desugar_compiler.rb +392 -0
  64. data/lib/prism/dispatcher.rb +2210 -0
  65. data/lib/prism/dot_visitor.rb +4762 -0
  66. data/lib/prism/dsl.rb +1003 -0
  67. data/lib/prism/ffi.rb +570 -0
  68. data/lib/prism/inspect_visitor.rb +2392 -0
  69. data/lib/prism/lex_compat.rb +928 -0
  70. data/lib/prism/mutation_compiler.rb +772 -0
  71. data/lib/prism/node.rb +18816 -0
  72. data/lib/prism/node_ext.rb +511 -0
  73. data/lib/prism/pack.rb +230 -0
  74. data/lib/prism/parse_result/comments.rb +188 -0
  75. data/lib/prism/parse_result/errors.rb +66 -0
  76. data/lib/prism/parse_result/newlines.rb +155 -0
  77. data/lib/prism/parse_result.rb +911 -0
  78. data/lib/prism/pattern.rb +269 -0
  79. data/lib/prism/polyfill/append_as_bytes.rb +15 -0
  80. data/lib/prism/polyfill/byteindex.rb +13 -0
  81. data/lib/prism/polyfill/scan_byte.rb +14 -0
  82. data/lib/prism/polyfill/unpack1.rb +14 -0
  83. data/lib/prism/polyfill/warn.rb +36 -0
  84. data/lib/prism/prism.so +0 -0
  85. data/lib/prism/reflection.rb +416 -0
  86. data/lib/prism/relocation.rb +505 -0
  87. data/lib/prism/serialize.rb +2398 -0
  88. data/lib/prism/string_query.rb +31 -0
  89. data/lib/prism/translation/parser/builder.rb +62 -0
  90. data/lib/prism/translation/parser/compiler.rb +2234 -0
  91. data/lib/prism/translation/parser/lexer.rb +820 -0
  92. data/lib/prism/translation/parser.rb +374 -0
  93. data/lib/prism/translation/parser33.rb +13 -0
  94. data/lib/prism/translation/parser34.rb +13 -0
  95. data/lib/prism/translation/parser35.rb +13 -0
  96. data/lib/prism/translation/parser_current.rb +24 -0
  97. data/lib/prism/translation/ripper/sexp.rb +126 -0
  98. data/lib/prism/translation/ripper/shim.rb +5 -0
  99. data/lib/prism/translation/ripper.rb +3474 -0
  100. data/lib/prism/translation/ruby_parser.rb +1929 -0
  101. data/lib/prism/translation.rb +16 -0
  102. data/lib/prism/visitor.rb +813 -0
  103. data/lib/prism.rb +97 -0
  104. data/prism.gemspec +174 -0
  105. data/rbi/prism/compiler.rbi +12 -0
  106. data/rbi/prism/dsl.rbi +524 -0
  107. data/rbi/prism/inspect_visitor.rbi +12 -0
  108. data/rbi/prism/node.rbi +8734 -0
  109. data/rbi/prism/node_ext.rbi +107 -0
  110. data/rbi/prism/parse_result.rbi +404 -0
  111. data/rbi/prism/reflection.rbi +58 -0
  112. data/rbi/prism/string_query.rbi +12 -0
  113. data/rbi/prism/translation/parser.rbi +11 -0
  114. data/rbi/prism/translation/parser33.rbi +6 -0
  115. data/rbi/prism/translation/parser34.rbi +6 -0
  116. data/rbi/prism/translation/parser35.rbi +6 -0
  117. data/rbi/prism/translation/ripper.rbi +15 -0
  118. data/rbi/prism/visitor.rbi +473 -0
  119. data/rbi/prism.rbi +66 -0
  120. data/sig/prism/compiler.rbs +9 -0
  121. data/sig/prism/dispatcher.rbs +19 -0
  122. data/sig/prism/dot_visitor.rbs +6 -0
  123. data/sig/prism/dsl.rbs +351 -0
  124. data/sig/prism/inspect_visitor.rbs +22 -0
  125. data/sig/prism/lex_compat.rbs +10 -0
  126. data/sig/prism/mutation_compiler.rbs +159 -0
  127. data/sig/prism/node.rbs +4028 -0
  128. data/sig/prism/node_ext.rbs +149 -0
  129. data/sig/prism/pack.rbs +43 -0
  130. data/sig/prism/parse_result/comments.rbs +38 -0
  131. data/sig/prism/parse_result.rbs +196 -0
  132. data/sig/prism/pattern.rbs +13 -0
  133. data/sig/prism/reflection.rbs +50 -0
  134. data/sig/prism/relocation.rbs +185 -0
  135. data/sig/prism/serialize.rbs +8 -0
  136. data/sig/prism/string_query.rbs +11 -0
  137. data/sig/prism/visitor.rbs +169 -0
  138. data/sig/prism.rbs +254 -0
  139. data/src/diagnostic.c +850 -0
  140. data/src/encoding.c +5235 -0
  141. data/src/node.c +8676 -0
  142. data/src/options.c +328 -0
  143. data/src/pack.c +509 -0
  144. data/src/prettyprint.c +8941 -0
  145. data/src/prism.c +23361 -0
  146. data/src/regexp.c +790 -0
  147. data/src/serialize.c +2268 -0
  148. data/src/static_literals.c +617 -0
  149. data/src/token_type.c +703 -0
  150. data/src/util/pm_buffer.c +357 -0
  151. data/src/util/pm_char.c +318 -0
  152. data/src/util/pm_constant_pool.c +342 -0
  153. data/src/util/pm_integer.c +670 -0
  154. data/src/util/pm_list.c +49 -0
  155. data/src/util/pm_memchr.c +35 -0
  156. data/src/util/pm_newline_list.c +125 -0
  157. data/src/util/pm_string.c +381 -0
  158. data/src/util/pm_strncasecmp.c +36 -0
  159. data/src/util/pm_strpbrk.c +206 -0
  160. metadata +203 -0
@@ -0,0 +1,2398 @@
1
+ # frozen_string_literal: true
2
+ # :markup: markdown
3
+
4
+ =begin
5
+ --
6
+ This file is generated by the templates/template.rb script and should not be
7
+ modified manually. See templates/lib/prism/serialize.rb.erb
8
+ if you are looking to modify the template
9
+ ++
10
+ =end
11
+
12
+ require "stringio"
13
+ require_relative "polyfill/unpack1"
14
+
15
+ module Prism
16
+ # A module responsible for deserializing parse results.
17
+ module Serialize
18
+ # The major version of prism that we are expecting to find in the serialized
19
+ # strings.
20
+ MAJOR_VERSION = 1
21
+
22
+ # The minor version of prism that we are expecting to find in the serialized
23
+ # strings.
24
+ MINOR_VERSION = 5
25
+
26
+ # The patch version of prism that we are expecting to find in the serialized
27
+ # strings.
28
+ PATCH_VERSION = 2
29
+
30
+ # Deserialize the dumped output from a request to parse or parse_file.
31
+ #
32
+ # The formatting of the source of this method is purposeful to illustrate
33
+ # the structure of the serialized data.
34
+ def self.load_parse(input, serialized, freeze)
35
+ input = input.dup
36
+ source = Source.for(input)
37
+ loader = Loader.new(source, serialized)
38
+
39
+ loader.load_header
40
+ encoding = loader.load_encoding
41
+ start_line = loader.load_varsint
42
+ offsets = loader.load_line_offsets(freeze)
43
+
44
+ source.replace_start_line(start_line)
45
+ source.replace_offsets(offsets)
46
+
47
+ comments = loader.load_comments(freeze)
48
+ magic_comments = loader.load_magic_comments(freeze)
49
+ data_loc = loader.load_optional_location_object(freeze)
50
+ errors = loader.load_errors(encoding, freeze)
51
+ warnings = loader.load_warnings(encoding, freeze)
52
+ cpool_base = loader.load_uint32
53
+ cpool_size = loader.load_varuint
54
+
55
+ constant_pool = ConstantPool.new(input, serialized, cpool_base, cpool_size)
56
+
57
+ node = loader.load_node(constant_pool, encoding, freeze)
58
+ loader.load_constant_pool(constant_pool)
59
+ raise unless loader.eof?
60
+
61
+ result = ParseResult.new(node, comments, magic_comments, data_loc, errors, warnings, source)
62
+ result.freeze if freeze
63
+
64
+ input.force_encoding(encoding)
65
+
66
+ # This is an extremely niche use-case where the file was marked as binary
67
+ # but it contained UTF-8-encoded characters. In that case we will actually
68
+ # put it back to UTF-8 to give the location APIs the best chance of being
69
+ # correct.
70
+ if !input.ascii_only? && input.encoding == Encoding::BINARY
71
+ input.force_encoding(Encoding::UTF_8)
72
+ input.force_encoding(Encoding::BINARY) unless input.valid_encoding?
73
+ end
74
+
75
+ if freeze
76
+ input.freeze
77
+ source.deep_freeze
78
+ end
79
+
80
+ result
81
+ end
82
+
83
+ # Deserialize the dumped output from a request to lex or lex_file.
84
+ #
85
+ # The formatting of the source of this method is purposeful to illustrate
86
+ # the structure of the serialized data.
87
+ def self.load_lex(input, serialized, freeze)
88
+ source = Source.for(input)
89
+ loader = Loader.new(source, serialized)
90
+
91
+ tokens = loader.load_tokens
92
+ encoding = loader.load_encoding
93
+ start_line = loader.load_varsint
94
+ offsets = loader.load_line_offsets(freeze)
95
+
96
+ source.replace_start_line(start_line)
97
+ source.replace_offsets(offsets)
98
+
99
+ comments = loader.load_comments(freeze)
100
+ magic_comments = loader.load_magic_comments(freeze)
101
+ data_loc = loader.load_optional_location_object(freeze)
102
+ errors = loader.load_errors(encoding, freeze)
103
+ warnings = loader.load_warnings(encoding, freeze)
104
+ raise unless loader.eof?
105
+
106
+ result = LexResult.new(tokens, comments, magic_comments, data_loc, errors, warnings, source)
107
+
108
+ tokens.each do |token|
109
+ token[0].value.force_encoding(encoding)
110
+
111
+ if freeze
112
+ token[0].deep_freeze
113
+ token.freeze
114
+ end
115
+ end
116
+
117
+ if freeze
118
+ source.deep_freeze
119
+ tokens.freeze
120
+ result.freeze
121
+ end
122
+
123
+ result
124
+ end
125
+
126
+ # Deserialize the dumped output from a request to parse_comments or
127
+ # parse_file_comments.
128
+ #
129
+ # The formatting of the source of this method is purposeful to illustrate
130
+ # the structure of the serialized data.
131
+ def self.load_parse_comments(input, serialized, freeze)
132
+ source = Source.for(input)
133
+ loader = Loader.new(source, serialized)
134
+
135
+ loader.load_header
136
+ loader.load_encoding
137
+ start_line = loader.load_varsint
138
+
139
+ source.replace_start_line(start_line)
140
+
141
+ result = loader.load_comments(freeze)
142
+ raise unless loader.eof?
143
+
144
+ source.deep_freeze if freeze
145
+ result
146
+ end
147
+
148
+ # Deserialize the dumped output from a request to parse_lex or
149
+ # parse_lex_file.
150
+ #
151
+ # The formatting of the source of this method is purposeful to illustrate
152
+ # the structure of the serialized data.
153
+ def self.load_parse_lex(input, serialized, freeze)
154
+ source = Source.for(input)
155
+ loader = Loader.new(source, serialized)
156
+
157
+ tokens = loader.load_tokens
158
+ loader.load_header
159
+ encoding = loader.load_encoding
160
+ start_line = loader.load_varsint
161
+ offsets = loader.load_line_offsets(freeze)
162
+
163
+ source.replace_start_line(start_line)
164
+ source.replace_offsets(offsets)
165
+
166
+ comments = loader.load_comments(freeze)
167
+ magic_comments = loader.load_magic_comments(freeze)
168
+ data_loc = loader.load_optional_location_object(freeze)
169
+ errors = loader.load_errors(encoding, freeze)
170
+ warnings = loader.load_warnings(encoding, freeze)
171
+ cpool_base = loader.load_uint32
172
+ cpool_size = loader.load_varuint
173
+
174
+ constant_pool = ConstantPool.new(input, serialized, cpool_base, cpool_size)
175
+
176
+ node = loader.load_node(constant_pool, encoding, freeze)
177
+ loader.load_constant_pool(constant_pool)
178
+ raise unless loader.eof?
179
+
180
+ value = [node, tokens]
181
+ result = ParseLexResult.new(value, comments, magic_comments, data_loc, errors, warnings, source)
182
+
183
+ tokens.each do |token|
184
+ token[0].value.force_encoding(encoding)
185
+
186
+ if freeze
187
+ token[0].deep_freeze
188
+ token.freeze
189
+ end
190
+ end
191
+
192
+ if freeze
193
+ source.deep_freeze
194
+ tokens.freeze
195
+ value.freeze
196
+ result.freeze
197
+ end
198
+
199
+ result
200
+ end
201
+
202
+ class ConstantPool # :nodoc:
203
+ attr_reader :size
204
+
205
+ def initialize(input, serialized, base, size)
206
+ @input = input
207
+ @serialized = serialized
208
+ @base = base
209
+ @size = size
210
+ @pool = Array.new(size, nil)
211
+ end
212
+
213
+ def get(index, encoding)
214
+ @pool[index] ||=
215
+ begin
216
+ offset = @base + index * 8
217
+ start = @serialized.unpack1("L", offset: offset)
218
+ length = @serialized.unpack1("L", offset: offset + 4)
219
+
220
+ if start.nobits?(1 << 31)
221
+ @input.byteslice(start, length).force_encoding(encoding).to_sym
222
+ else
223
+ @serialized.byteslice(start & ((1 << 31) - 1), length).force_encoding(encoding).to_sym
224
+ end
225
+ end
226
+ end
227
+ end
228
+
229
+ if RUBY_ENGINE == "truffleruby"
230
+ # StringIO is synchronized and that adds a high overhead on TruffleRuby.
231
+ class FastStringIO # :nodoc:
232
+ attr_accessor :pos
233
+
234
+ def initialize(string)
235
+ @string = string
236
+ @pos = 0
237
+ end
238
+
239
+ def getbyte
240
+ byte = @string.getbyte(@pos)
241
+ @pos += 1
242
+ byte
243
+ end
244
+
245
+ def read(n)
246
+ slice = @string.byteslice(@pos, n)
247
+ @pos += n
248
+ slice
249
+ end
250
+
251
+ def eof?
252
+ @pos >= @string.bytesize
253
+ end
254
+ end
255
+ else
256
+ FastStringIO = ::StringIO # :nodoc:
257
+ end
258
+
259
+ class Loader # :nodoc:
260
+ attr_reader :input, :io, :source
261
+
262
+ def initialize(source, serialized)
263
+ @input = source.source.dup
264
+ raise unless serialized.encoding == Encoding::BINARY
265
+ @io = FastStringIO.new(serialized)
266
+ @source = source
267
+ define_load_node_lambdas if RUBY_ENGINE != "ruby"
268
+ end
269
+
270
+ def eof?
271
+ io.getbyte
272
+ io.eof?
273
+ end
274
+
275
+ def load_constant_pool(constant_pool)
276
+ trailer = 0
277
+
278
+ constant_pool.size.times do |index|
279
+ start, length = io.read(8).unpack("L2")
280
+ trailer += length if start.anybits?(1 << 31)
281
+ end
282
+
283
+ io.read(trailer)
284
+ end
285
+
286
+ def load_header
287
+ raise "Invalid serialization" if io.read(5) != "PRISM"
288
+ raise "Invalid serialization" if io.read(3).unpack("C3") != [MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION]
289
+ raise "Invalid serialization (location fields must be included but are not)" if io.getbyte != 0
290
+ end
291
+
292
+ def load_encoding
293
+ encoding = Encoding.find(io.read(load_varuint))
294
+ @input = input.force_encoding(encoding).freeze
295
+ encoding
296
+ end
297
+
298
+ def load_line_offsets(freeze)
299
+ offsets = Array.new(load_varuint) { load_varuint }
300
+ offsets.freeze if freeze
301
+ offsets
302
+ end
303
+
304
+ def load_comments(freeze)
305
+ comments =
306
+ Array.new(load_varuint) do
307
+ comment =
308
+ case load_varuint
309
+ when 0 then InlineComment.new(load_location_object(freeze))
310
+ when 1 then EmbDocComment.new(load_location_object(freeze))
311
+ end
312
+
313
+ comment.freeze if freeze
314
+ comment
315
+ end
316
+
317
+ comments.freeze if freeze
318
+ comments
319
+ end
320
+
321
+ def load_magic_comments(freeze)
322
+ magic_comments =
323
+ Array.new(load_varuint) do
324
+ magic_comment =
325
+ MagicComment.new(
326
+ load_location_object(freeze),
327
+ load_location_object(freeze)
328
+ )
329
+
330
+ magic_comment.freeze if freeze
331
+ magic_comment
332
+ end
333
+
334
+ magic_comments.freeze if freeze
335
+ magic_comments
336
+ end
337
+
338
+ DIAGNOSTIC_TYPES = [
339
+ :alias_argument,
340
+ :alias_argument_numbered_reference,
341
+ :ampampeq_multi_assign,
342
+ :argument_after_block,
343
+ :argument_after_forwarding_ellipses,
344
+ :argument_bare_hash,
345
+ :argument_block_forwarding,
346
+ :argument_block_multi,
347
+ :argument_conflict_ampersand,
348
+ :argument_conflict_star,
349
+ :argument_conflict_star_star,
350
+ :argument_formal_class,
351
+ :argument_formal_constant,
352
+ :argument_formal_global,
353
+ :argument_formal_ivar,
354
+ :argument_forwarding_unbound,
355
+ :argument_no_forwarding_ampersand,
356
+ :argument_no_forwarding_ellipses,
357
+ :argument_no_forwarding_star,
358
+ :argument_no_forwarding_star_star,
359
+ :argument_splat_after_assoc_splat,
360
+ :argument_splat_after_splat,
361
+ :argument_term_paren,
362
+ :argument_unexpected_block,
363
+ :array_element,
364
+ :array_expression,
365
+ :array_expression_after_star,
366
+ :array_separator,
367
+ :array_term,
368
+ :begin_lonely_else,
369
+ :begin_term,
370
+ :begin_upcase_brace,
371
+ :begin_upcase_term,
372
+ :begin_upcase_toplevel,
373
+ :block_param_local_variable,
374
+ :block_param_pipe_term,
375
+ :block_term_brace,
376
+ :block_term_end,
377
+ :cannot_parse_expression,
378
+ :cannot_parse_string_part,
379
+ :case_expression_after_case,
380
+ :case_expression_after_when,
381
+ :case_match_missing_predicate,
382
+ :case_missing_conditions,
383
+ :case_term,
384
+ :class_in_method,
385
+ :class_name,
386
+ :class_superclass,
387
+ :class_term,
388
+ :class_unexpected_end,
389
+ :class_variable_bare,
390
+ :conditional_elsif_predicate,
391
+ :conditional_if_predicate,
392
+ :conditional_predicate_term,
393
+ :conditional_term,
394
+ :conditional_term_else,
395
+ :conditional_unless_predicate,
396
+ :conditional_until_predicate,
397
+ :conditional_while_predicate,
398
+ :constant_path_colon_colon_constant,
399
+ :def_endless,
400
+ :def_endless_parameters,
401
+ :def_endless_setter,
402
+ :def_name,
403
+ :def_params_term,
404
+ :def_params_term_paren,
405
+ :def_receiver,
406
+ :def_receiver_term,
407
+ :def_term,
408
+ :defined_expression,
409
+ :embdoc_term,
410
+ :embexpr_end,
411
+ :embvar_invalid,
412
+ :end_upcase_brace,
413
+ :end_upcase_term,
414
+ :escape_invalid_control,
415
+ :escape_invalid_control_repeat,
416
+ :escape_invalid_hexadecimal,
417
+ :escape_invalid_meta,
418
+ :escape_invalid_meta_repeat,
419
+ :escape_invalid_unicode,
420
+ :escape_invalid_unicode_cm_flags,
421
+ :escape_invalid_unicode_list,
422
+ :escape_invalid_unicode_literal,
423
+ :escape_invalid_unicode_long,
424
+ :escape_invalid_unicode_short,
425
+ :escape_invalid_unicode_term,
426
+ :expect_argument,
427
+ :expect_eol_after_statement,
428
+ :expect_expression_after_ampampeq,
429
+ :expect_expression_after_comma,
430
+ :expect_expression_after_equal,
431
+ :expect_expression_after_less_less,
432
+ :expect_expression_after_lparen,
433
+ :expect_expression_after_operator,
434
+ :expect_expression_after_pipepipeeq,
435
+ :expect_expression_after_question,
436
+ :expect_expression_after_splat,
437
+ :expect_expression_after_splat_hash,
438
+ :expect_expression_after_star,
439
+ :expect_for_delimiter,
440
+ :expect_ident_req_parameter,
441
+ :expect_in_delimiter,
442
+ :expect_lparen_after_not_lparen,
443
+ :expect_lparen_after_not_other,
444
+ :expect_lparen_req_parameter,
445
+ :expect_message,
446
+ :expect_rbracket,
447
+ :expect_rparen,
448
+ :expect_rparen_after_multi,
449
+ :expect_rparen_req_parameter,
450
+ :expect_singleton_class_delimiter,
451
+ :expect_string_content,
452
+ :expect_when_delimiter,
453
+ :expression_bare_hash,
454
+ :expression_not_writable,
455
+ :expression_not_writable_encoding,
456
+ :expression_not_writable_false,
457
+ :expression_not_writable_file,
458
+ :expression_not_writable_line,
459
+ :expression_not_writable_nil,
460
+ :expression_not_writable_numbered,
461
+ :expression_not_writable_self,
462
+ :expression_not_writable_true,
463
+ :float_parse,
464
+ :for_collection,
465
+ :for_in,
466
+ :for_index,
467
+ :for_term,
468
+ :global_variable_bare,
469
+ :hash_expression_after_label,
470
+ :hash_key,
471
+ :hash_rocket,
472
+ :hash_term,
473
+ :hash_value,
474
+ :heredoc_identifier,
475
+ :heredoc_term,
476
+ :incomplete_question_mark,
477
+ :incomplete_variable_class,
478
+ :incomplete_variable_class_3_3,
479
+ :incomplete_variable_instance,
480
+ :incomplete_variable_instance_3_3,
481
+ :instance_variable_bare,
482
+ :invalid_block_exit,
483
+ :invalid_character,
484
+ :invalid_comma,
485
+ :invalid_encoding_magic_comment,
486
+ :invalid_escape_character,
487
+ :invalid_float_exponent,
488
+ :invalid_local_variable_read,
489
+ :invalid_local_variable_write,
490
+ :invalid_multibyte_char,
491
+ :invalid_multibyte_character,
492
+ :invalid_multibyte_escape,
493
+ :invalid_number_binary,
494
+ :invalid_number_decimal,
495
+ :invalid_number_fraction,
496
+ :invalid_number_hexadecimal,
497
+ :invalid_number_octal,
498
+ :invalid_number_underscore_inner,
499
+ :invalid_number_underscore_trailing,
500
+ :invalid_percent,
501
+ :invalid_percent_eof,
502
+ :invalid_printable_character,
503
+ :invalid_retry_after_else,
504
+ :invalid_retry_after_ensure,
505
+ :invalid_retry_without_rescue,
506
+ :invalid_symbol,
507
+ :invalid_variable_global,
508
+ :invalid_variable_global_3_3,
509
+ :invalid_yield,
510
+ :it_not_allowed_numbered,
511
+ :it_not_allowed_ordinary,
512
+ :lambda_open,
513
+ :lambda_term_brace,
514
+ :lambda_term_end,
515
+ :list_i_lower_element,
516
+ :list_i_lower_term,
517
+ :list_i_upper_element,
518
+ :list_i_upper_term,
519
+ :list_w_lower_element,
520
+ :list_w_lower_term,
521
+ :list_w_upper_element,
522
+ :list_w_upper_term,
523
+ :malloc_failed,
524
+ :mixed_encoding,
525
+ :module_in_method,
526
+ :module_name,
527
+ :module_term,
528
+ :multi_assign_multi_splats,
529
+ :multi_assign_unexpected_rest,
530
+ :nesting_too_deep,
531
+ :no_local_variable,
532
+ :non_associative_operator,
533
+ :not_expression,
534
+ :number_literal_underscore,
535
+ :numbered_parameter_inner_block,
536
+ :numbered_parameter_it,
537
+ :numbered_parameter_ordinary,
538
+ :numbered_parameter_outer_block,
539
+ :operator_multi_assign,
540
+ :operator_write_arguments,
541
+ :operator_write_block,
542
+ :parameter_assoc_splat_multi,
543
+ :parameter_block_multi,
544
+ :parameter_circular,
545
+ :parameter_forwarding_after_rest,
546
+ :parameter_method_name,
547
+ :parameter_name_duplicated,
548
+ :parameter_no_default,
549
+ :parameter_no_default_kw,
550
+ :parameter_numbered_reserved,
551
+ :parameter_order,
552
+ :parameter_splat_multi,
553
+ :parameter_star,
554
+ :parameter_unexpected_fwd,
555
+ :parameter_unexpected_no_kw,
556
+ :parameter_wild_loose_comma,
557
+ :pattern_array_multiple_rests,
558
+ :pattern_capture_duplicate,
559
+ :pattern_expression_after_bracket,
560
+ :pattern_expression_after_comma,
561
+ :pattern_expression_after_hrocket,
562
+ :pattern_expression_after_in,
563
+ :pattern_expression_after_key,
564
+ :pattern_expression_after_paren,
565
+ :pattern_expression_after_pin,
566
+ :pattern_expression_after_pipe,
567
+ :pattern_expression_after_range,
568
+ :pattern_expression_after_rest,
569
+ :pattern_find_missing_inner,
570
+ :pattern_hash_implicit,
571
+ :pattern_hash_key,
572
+ :pattern_hash_key_duplicate,
573
+ :pattern_hash_key_interpolated,
574
+ :pattern_hash_key_label,
575
+ :pattern_hash_key_locals,
576
+ :pattern_ident_after_hrocket,
577
+ :pattern_label_after_comma,
578
+ :pattern_rest,
579
+ :pattern_term_brace,
580
+ :pattern_term_bracket,
581
+ :pattern_term_paren,
582
+ :pipepipeeq_multi_assign,
583
+ :regexp_encoding_option_mismatch,
584
+ :regexp_incompat_char_encoding,
585
+ :regexp_invalid_unicode_range,
586
+ :regexp_non_escaped_mbc,
587
+ :regexp_parse_error,
588
+ :regexp_term,
589
+ :regexp_unknown_options,
590
+ :regexp_utf8_char_non_utf8_regexp,
591
+ :rescue_expression,
592
+ :rescue_modifier_value,
593
+ :rescue_term,
594
+ :rescue_variable,
595
+ :return_invalid,
596
+ :script_not_found,
597
+ :singleton_for_literals,
598
+ :statement_alias,
599
+ :statement_postexe_end,
600
+ :statement_preexe_begin,
601
+ :statement_undef,
602
+ :string_concatenation,
603
+ :string_interpolated_term,
604
+ :string_literal_eof,
605
+ :string_literal_term,
606
+ :symbol_invalid,
607
+ :symbol_term_dynamic,
608
+ :symbol_term_interpolated,
609
+ :ternary_colon,
610
+ :ternary_expression_false,
611
+ :ternary_expression_true,
612
+ :unary_disallowed,
613
+ :unary_receiver,
614
+ :undef_argument,
615
+ :unexpected_block_argument,
616
+ :unexpected_index_block,
617
+ :unexpected_index_keywords,
618
+ :unexpected_label,
619
+ :unexpected_multi_write,
620
+ :unexpected_range_operator,
621
+ :unexpected_safe_navigation,
622
+ :unexpected_token_close_context,
623
+ :unexpected_token_ignore,
624
+ :until_term,
625
+ :void_expression,
626
+ :while_term,
627
+ :write_target_in_method,
628
+ :write_target_readonly,
629
+ :write_target_unexpected,
630
+ :xstring_term,
631
+ :ambiguous_binary_operator,
632
+ :ambiguous_first_argument_minus,
633
+ :ambiguous_first_argument_plus,
634
+ :ambiguous_prefix_ampersand,
635
+ :ambiguous_prefix_star,
636
+ :ambiguous_prefix_star_star,
637
+ :ambiguous_slash,
638
+ :comparison_after_comparison,
639
+ :dot_dot_dot_eol,
640
+ :equal_in_conditional,
641
+ :equal_in_conditional_3_3,
642
+ :end_in_method,
643
+ :duplicated_hash_key,
644
+ :duplicated_when_clause,
645
+ :float_out_of_range,
646
+ :ignored_frozen_string_literal,
647
+ :indentation_mismatch,
648
+ :integer_in_flip_flop,
649
+ :invalid_character,
650
+ :invalid_magic_comment_value,
651
+ :invalid_numbered_reference,
652
+ :keyword_eol,
653
+ :literal_in_condition_default,
654
+ :literal_in_condition_verbose,
655
+ :shareable_constant_value_line,
656
+ :shebang_carriage_return,
657
+ :unexpected_carriage_return,
658
+ :unreachable_statement,
659
+ :unused_local_variable,
660
+ :void_statement,
661
+ ].freeze
662
+
663
+ private_constant :DIAGNOSTIC_TYPES
664
+
665
+ def load_error_level
666
+ level = io.getbyte
667
+
668
+ case level
669
+ when 0
670
+ :syntax
671
+ when 1
672
+ :argument
673
+ when 2
674
+ :load
675
+ else
676
+ raise "Unknown level: #{level}"
677
+ end
678
+ end
679
+
680
+ def load_errors(encoding, freeze)
681
+ errors =
682
+ Array.new(load_varuint) do
683
+ error =
684
+ ParseError.new(
685
+ DIAGNOSTIC_TYPES.fetch(load_varuint),
686
+ load_embedded_string(encoding),
687
+ load_location_object(freeze),
688
+ load_error_level
689
+ )
690
+
691
+ error.freeze if freeze
692
+ error
693
+ end
694
+
695
+ errors.freeze if freeze
696
+ errors
697
+ end
698
+
699
+ def load_warning_level
700
+ level = io.getbyte
701
+
702
+ case level
703
+ when 0
704
+ :default
705
+ when 1
706
+ :verbose
707
+ else
708
+ raise "Unknown level: #{level}"
709
+ end
710
+ end
711
+
712
+ def load_warnings(encoding, freeze)
713
+ warnings =
714
+ Array.new(load_varuint) do
715
+ warning =
716
+ ParseWarning.new(
717
+ DIAGNOSTIC_TYPES.fetch(load_varuint),
718
+ load_embedded_string(encoding),
719
+ load_location_object(freeze),
720
+ load_warning_level
721
+ )
722
+
723
+ warning.freeze if freeze
724
+ warning
725
+ end
726
+
727
+ warnings.freeze if freeze
728
+ warnings
729
+ end
730
+
731
+ def load_tokens
732
+ tokens = []
733
+
734
+ while (type = TOKEN_TYPES.fetch(load_varuint))
735
+ start = load_varuint
736
+ length = load_varuint
737
+ lex_state = load_varuint
738
+
739
+ location = Location.new(@source, start, length)
740
+ token = Token.new(@source, type, location.slice, location)
741
+
742
+ tokens << [token, lex_state]
743
+ end
744
+
745
+ tokens
746
+ end
747
+
748
+ # variable-length integer using https://en.wikipedia.org/wiki/LEB128
749
+ # This is also what protobuf uses: https://protobuf.dev/programming-guides/encoding/#varints
750
+ def load_varuint
751
+ n = io.getbyte
752
+ if n < 128
753
+ n
754
+ else
755
+ n -= 128
756
+ shift = 0
757
+ while (b = io.getbyte) >= 128
758
+ n += (b - 128) << (shift += 7)
759
+ end
760
+ n + (b << (shift + 7))
761
+ end
762
+ end
763
+
764
+ def load_varsint
765
+ n = load_varuint
766
+ (n >> 1) ^ (-(n & 1))
767
+ end
768
+
769
+ def load_integer
770
+ negative = io.getbyte != 0
771
+ length = load_varuint
772
+
773
+ value = 0
774
+ length.times { |index| value |= (load_varuint << (index * 32)) }
775
+
776
+ value = -value if negative
777
+ value
778
+ end
779
+
780
+ def load_double
781
+ io.read(8).unpack1("D")
782
+ end
783
+
784
+ def load_uint32
785
+ io.read(4).unpack1("L")
786
+ end
787
+
788
+ def load_optional_node(constant_pool, encoding, freeze)
789
+ if io.getbyte != 0
790
+ io.pos -= 1
791
+ load_node(constant_pool, encoding, freeze)
792
+ end
793
+ end
794
+
795
+ def load_embedded_string(encoding)
796
+ io.read(load_varuint).force_encoding(encoding).freeze
797
+ end
798
+
799
+ def load_string(encoding)
800
+ case (type = io.getbyte)
801
+ when 1
802
+ input.byteslice(load_varuint, load_varuint).force_encoding(encoding).freeze
803
+ when 2
804
+ load_embedded_string(encoding)
805
+ else
806
+ raise "Unknown serialized string type: #{type}"
807
+ end
808
+ end
809
+
810
+ def load_location_object(freeze)
811
+ location = Location.new(source, load_varuint, load_varuint)
812
+ location.freeze if freeze
813
+ location
814
+ end
815
+
816
+ def load_location(freeze)
817
+ return load_location_object(freeze) if freeze
818
+ (load_varuint << 32) | load_varuint
819
+ end
820
+
821
+ def load_optional_location(freeze)
822
+ load_location(freeze) if io.getbyte != 0
823
+ end
824
+
825
+ def load_optional_location_object(freeze)
826
+ load_location_object(freeze) if io.getbyte != 0
827
+ end
828
+
829
+ def load_constant(constant_pool, encoding)
830
+ index = load_varuint
831
+ constant_pool.get(index - 1, encoding)
832
+ end
833
+
834
+ def load_optional_constant(constant_pool, encoding)
835
+ index = load_varuint
836
+ constant_pool.get(index - 1, encoding) if index != 0
837
+ end
838
+
839
+ if RUBY_ENGINE == "ruby"
840
+ def load_node(constant_pool, encoding, freeze)
841
+ type = io.getbyte
842
+ node_id = load_varuint
843
+ location = load_location(freeze)
844
+ value = case type
845
+ when 1 then
846
+ AliasGlobalVariableNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
847
+ when 2 then
848
+ AliasMethodNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
849
+ when 3 then
850
+ AlternationPatternNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
851
+ when 4 then
852
+ AndNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
853
+ when 5 then
854
+ ArgumentsNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze })
855
+ when 6 then
856
+ ArrayNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_location(freeze), load_optional_location(freeze))
857
+ when 7 then
858
+ ArrayPatternNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_location(freeze), load_optional_location(freeze))
859
+ when 8 then
860
+ AssocNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_optional_location(freeze))
861
+ when 9 then
862
+ AssocSplatNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
863
+ when 10 then
864
+ BackReferenceReadNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
865
+ when 11 then
866
+ BeginNode.new(source, node_id, location, load_varuint, load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze))
867
+ when 12 then
868
+ BlockArgumentNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
869
+ when 13 then
870
+ BlockLocalVariableNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
871
+ when 14 then
872
+ BlockNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_constant(constant_pool, encoding) }.tap { |constants| constants.freeze if freeze }, load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_location(freeze))
873
+ when 15 then
874
+ BlockParameterNode.new(source, node_id, location, load_varuint, load_optional_constant(constant_pool, encoding), load_optional_location(freeze), load_location(freeze))
875
+ when 16 then
876
+ BlockParametersNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_location(freeze), load_optional_location(freeze))
877
+ when 17 then
878
+ BreakNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
879
+ when 18 then
880
+ CallAndWriteNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_location(freeze), load_constant(constant_pool, encoding), load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze))
881
+ when 19 then
882
+ CallNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_constant(constant_pool, encoding), load_optional_location(freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze))
883
+ when 20 then
884
+ CallOperatorWriteNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_location(freeze), load_constant(constant_pool, encoding), load_constant(constant_pool, encoding), load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze))
885
+ when 21 then
886
+ CallOrWriteNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_location(freeze), load_constant(constant_pool, encoding), load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze))
887
+ when 22 then
888
+ CallTargetNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze), load_constant(constant_pool, encoding), load_location(freeze))
889
+ when 23 then
890
+ CapturePatternNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
891
+ when 24 then
892
+ CaseMatchNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_location(freeze))
893
+ when 25 then
894
+ CaseNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_location(freeze))
895
+ when 26 then
896
+ ClassNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_constant(constant_pool, encoding) }.tap { |constants| constants.freeze if freeze }, load_location(freeze), load_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_constant(constant_pool, encoding))
897
+ when 27 then
898
+ ClassVariableAndWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
899
+ when 28 then
900
+ ClassVariableOperatorWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding))
901
+ when 29 then
902
+ ClassVariableOrWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
903
+ when 30 then
904
+ ClassVariableReadNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
905
+ when 31 then
906
+ ClassVariableTargetNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
907
+ when 32 then
908
+ ClassVariableWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
909
+ when 33 then
910
+ ConstantAndWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
911
+ when 34 then
912
+ ConstantOperatorWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding))
913
+ when 35 then
914
+ ConstantOrWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
915
+ when 36 then
916
+ ConstantPathAndWriteNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
917
+ when 37 then
918
+ ConstantPathNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_constant(constant_pool, encoding), load_location(freeze), load_location(freeze))
919
+ when 38 then
920
+ ConstantPathOperatorWriteNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding))
921
+ when 39 then
922
+ ConstantPathOrWriteNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
923
+ when 40 then
924
+ ConstantPathTargetNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_constant(constant_pool, encoding), load_location(freeze), load_location(freeze))
925
+ when 41 then
926
+ ConstantPathWriteNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
927
+ when 42 then
928
+ ConstantReadNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
929
+ when 43 then
930
+ ConstantTargetNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
931
+ when 44 then
932
+ ConstantWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
933
+ when 45 then
934
+ load_uint32
935
+ DefNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_constant(constant_pool, encoding) }.tap { |constants| constants.freeze if freeze }, load_location(freeze), load_optional_location(freeze), load_optional_location(freeze), load_optional_location(freeze), load_optional_location(freeze), load_optional_location(freeze))
936
+ when 46 then
937
+ DefinedNode.new(source, node_id, location, load_varuint, load_optional_location(freeze), load_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_location(freeze))
938
+ when 47 then
939
+ ElseNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze))
940
+ when 48 then
941
+ EmbeddedStatementsNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
942
+ when 49 then
943
+ EmbeddedVariableNode.new(source, node_id, location, load_varuint, load_location(freeze), load_node(constant_pool, encoding, freeze))
944
+ when 50 then
945
+ EnsureNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
946
+ when 51 then
947
+ FalseNode.new(source, node_id, location, load_varuint)
948
+ when 52 then
949
+ FindPatternNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_location(freeze))
950
+ when 53 then
951
+ FlipFlopNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
952
+ when 54 then
953
+ FloatNode.new(source, node_id, location, load_varuint, load_double)
954
+ when 55 then
955
+ ForNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_location(freeze), load_optional_location(freeze), load_location(freeze))
956
+ when 56 then
957
+ ForwardingArgumentsNode.new(source, node_id, location, load_varuint)
958
+ when 57 then
959
+ ForwardingParameterNode.new(source, node_id, location, load_varuint)
960
+ when 58 then
961
+ ForwardingSuperNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze))
962
+ when 59 then
963
+ GlobalVariableAndWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
964
+ when 60 then
965
+ GlobalVariableOperatorWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding))
966
+ when 61 then
967
+ GlobalVariableOrWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
968
+ when 62 then
969
+ GlobalVariableReadNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
970
+ when 63 then
971
+ GlobalVariableTargetNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
972
+ when 64 then
973
+ GlobalVariableWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
974
+ when 65 then
975
+ HashNode.new(source, node_id, location, load_varuint, load_location(freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_location(freeze))
976
+ when 66 then
977
+ HashPatternNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_location(freeze))
978
+ when 67 then
979
+ IfNode.new(source, node_id, location, load_varuint, load_optional_location(freeze), load_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze))
980
+ when 68 then
981
+ ImaginaryNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze))
982
+ when 69 then
983
+ ImplicitNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze))
984
+ when 70 then
985
+ ImplicitRestNode.new(source, node_id, location, load_varuint)
986
+ when 71 then
987
+ InNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_optional_location(freeze))
988
+ when 72 then
989
+ IndexAndWriteNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
990
+ when 73 then
991
+ IndexOperatorWriteNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze))
992
+ when 74 then
993
+ IndexOrWriteNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
994
+ when 75 then
995
+ IndexTargetNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze))
996
+ when 76 then
997
+ InstanceVariableAndWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
998
+ when 77 then
999
+ InstanceVariableOperatorWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding))
1000
+ when 78 then
1001
+ InstanceVariableOrWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1002
+ when 79 then
1003
+ InstanceVariableReadNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
1004
+ when 80 then
1005
+ InstanceVariableTargetNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
1006
+ when 81 then
1007
+ InstanceVariableWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1008
+ when 82 then
1009
+ IntegerNode.new(source, node_id, location, load_varuint, load_integer)
1010
+ when 83 then
1011
+ InterpolatedMatchLastLineNode.new(source, node_id, location, load_varuint, load_location(freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_location(freeze))
1012
+ when 84 then
1013
+ InterpolatedRegularExpressionNode.new(source, node_id, location, load_varuint, load_location(freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_location(freeze))
1014
+ when 85 then
1015
+ InterpolatedStringNode.new(source, node_id, location, load_varuint, load_optional_location(freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_location(freeze))
1016
+ when 86 then
1017
+ InterpolatedSymbolNode.new(source, node_id, location, load_varuint, load_optional_location(freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_location(freeze))
1018
+ when 87 then
1019
+ InterpolatedXStringNode.new(source, node_id, location, load_varuint, load_location(freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_location(freeze))
1020
+ when 88 then
1021
+ ItLocalVariableReadNode.new(source, node_id, location, load_varuint)
1022
+ when 89 then
1023
+ ItParametersNode.new(source, node_id, location, load_varuint)
1024
+ when 90 then
1025
+ KeywordHashNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze })
1026
+ when 91 then
1027
+ KeywordRestParameterNode.new(source, node_id, location, load_varuint, load_optional_constant(constant_pool, encoding), load_optional_location(freeze), load_location(freeze))
1028
+ when 92 then
1029
+ LambdaNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_constant(constant_pool, encoding) }.tap { |constants| constants.freeze if freeze }, load_location(freeze), load_location(freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze))
1030
+ when 93 then
1031
+ LocalVariableAndWriteNode.new(source, node_id, location, load_varuint, load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding), load_varuint)
1032
+ when 94 then
1033
+ LocalVariableOperatorWriteNode.new(source, node_id, location, load_varuint, load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding), load_constant(constant_pool, encoding), load_varuint)
1034
+ when 95 then
1035
+ LocalVariableOrWriteNode.new(source, node_id, location, load_varuint, load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding), load_varuint)
1036
+ when 96 then
1037
+ LocalVariableReadNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_varuint)
1038
+ when 97 then
1039
+ LocalVariableTargetNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_varuint)
1040
+ when 98 then
1041
+ LocalVariableWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_varuint, load_location(freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1042
+ when 99 then
1043
+ MatchLastLineNode.new(source, node_id, location, load_varuint, load_location(freeze), load_location(freeze), load_location(freeze), load_string(encoding))
1044
+ when 100 then
1045
+ MatchPredicateNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1046
+ when 101 then
1047
+ MatchRequiredNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1048
+ when 102 then
1049
+ MatchWriteNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze })
1050
+ when 103 then
1051
+ MissingNode.new(source, node_id, location, load_varuint)
1052
+ when 104 then
1053
+ ModuleNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_constant(constant_pool, encoding) }.tap { |constants| constants.freeze if freeze }, load_location(freeze), load_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_constant(constant_pool, encoding))
1054
+ when 105 then
1055
+ MultiTargetNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_location(freeze), load_optional_location(freeze))
1056
+ when 106 then
1057
+ MultiWriteNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_location(freeze), load_optional_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1058
+ when 107 then
1059
+ NextNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
1060
+ when 108 then
1061
+ NilNode.new(source, node_id, location, load_varuint)
1062
+ when 109 then
1063
+ NoKeywordsParameterNode.new(source, node_id, location, load_varuint, load_location(freeze), load_location(freeze))
1064
+ when 110 then
1065
+ NumberedParametersNode.new(source, node_id, location, load_varuint, io.getbyte)
1066
+ when 111 then
1067
+ NumberedReferenceReadNode.new(source, node_id, location, load_varuint, load_varuint)
1068
+ when 112 then
1069
+ OptionalKeywordParameterNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze))
1070
+ when 113 then
1071
+ OptionalParameterNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1072
+ when 114 then
1073
+ OrNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1074
+ when 115 then
1075
+ ParametersNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze))
1076
+ when 116 then
1077
+ ParenthesesNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_location(freeze))
1078
+ when 117 then
1079
+ PinnedExpressionNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze), load_location(freeze), load_location(freeze))
1080
+ when 118 then
1081
+ PinnedVariableNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze))
1082
+ when 119 then
1083
+ PostExecutionNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_location(freeze), load_location(freeze))
1084
+ when 120 then
1085
+ PreExecutionNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_location(freeze), load_location(freeze))
1086
+ when 121 then
1087
+ ProgramNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_constant(constant_pool, encoding) }.tap { |constants| constants.freeze if freeze }, load_node(constant_pool, encoding, freeze))
1088
+ when 122 then
1089
+ RangeNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
1090
+ when 123 then
1091
+ RationalNode.new(source, node_id, location, load_varuint, load_integer, load_integer)
1092
+ when 124 then
1093
+ RedoNode.new(source, node_id, location, load_varuint)
1094
+ when 125 then
1095
+ RegularExpressionNode.new(source, node_id, location, load_varuint, load_location(freeze), load_location(freeze), load_location(freeze), load_string(encoding))
1096
+ when 126 then
1097
+ RequiredKeywordParameterNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze))
1098
+ when 127 then
1099
+ RequiredParameterNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
1100
+ when 128 then
1101
+ RescueModifierNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1102
+ when 129 then
1103
+ RescueNode.new(source, node_id, location, load_varuint, load_location(freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze))
1104
+ when 130 then
1105
+ RestParameterNode.new(source, node_id, location, load_varuint, load_optional_constant(constant_pool, encoding), load_optional_location(freeze), load_location(freeze))
1106
+ when 131 then
1107
+ RetryNode.new(source, node_id, location, load_varuint)
1108
+ when 132 then
1109
+ ReturnNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_node(constant_pool, encoding, freeze))
1110
+ when 133 then
1111
+ SelfNode.new(source, node_id, location, load_varuint)
1112
+ when 134 then
1113
+ ShareableConstantNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze))
1114
+ when 135 then
1115
+ SingletonClassNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_constant(constant_pool, encoding) }.tap { |constants| constants.freeze if freeze }, load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
1116
+ when 136 then
1117
+ SourceEncodingNode.new(source, node_id, location, load_varuint)
1118
+ when 137 then
1119
+ SourceFileNode.new(source, node_id, location, load_varuint, load_string(encoding))
1120
+ when 138 then
1121
+ SourceLineNode.new(source, node_id, location, load_varuint)
1122
+ when 139 then
1123
+ SplatNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_node(constant_pool, encoding, freeze))
1124
+ when 140 then
1125
+ StatementsNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze })
1126
+ when 141 then
1127
+ StringNode.new(source, node_id, location, load_varuint, load_optional_location(freeze), load_location(freeze), load_optional_location(freeze), load_string(encoding))
1128
+ when 142 then
1129
+ SuperNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze))
1130
+ when 143 then
1131
+ SymbolNode.new(source, node_id, location, load_varuint, load_optional_location(freeze), load_optional_location(freeze), load_optional_location(freeze), load_string(encoding))
1132
+ when 144 then
1133
+ TrueNode.new(source, node_id, location, load_varuint)
1134
+ when 145 then
1135
+ UndefNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_location(freeze))
1136
+ when 146 then
1137
+ UnlessNode.new(source, node_id, location, load_varuint, load_location(freeze), load_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze))
1138
+ when 147 then
1139
+ UntilNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_location(freeze), load_optional_location(freeze), load_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze))
1140
+ when 148 then
1141
+ WhenNode.new(source, node_id, location, load_varuint, load_location(freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }.tap { |nodes| nodes.freeze if freeze }, load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze))
1142
+ when 149 then
1143
+ WhileNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_location(freeze), load_optional_location(freeze), load_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze))
1144
+ when 150 then
1145
+ XStringNode.new(source, node_id, location, load_varuint, load_location(freeze), load_location(freeze), load_location(freeze), load_string(encoding))
1146
+ when 151 then
1147
+ YieldNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze))
1148
+ end
1149
+
1150
+ value.freeze if freeze
1151
+ value
1152
+ end
1153
+ else
1154
+ def load_node(constant_pool, encoding, freeze)
1155
+ @load_node_lambdas[io.getbyte].call(constant_pool, encoding, freeze)
1156
+ end
1157
+
1158
+ def define_load_node_lambdas
1159
+ @load_node_lambdas = [
1160
+ nil,
1161
+ -> (constant_pool, encoding, freeze) {
1162
+ node_id = load_varuint
1163
+ location = load_location(freeze)
1164
+ value = AliasGlobalVariableNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1165
+ value.freeze if freeze
1166
+ value
1167
+ },
1168
+ -> (constant_pool, encoding, freeze) {
1169
+ node_id = load_varuint
1170
+ location = load_location(freeze)
1171
+ value = AliasMethodNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1172
+ value.freeze if freeze
1173
+ value
1174
+ },
1175
+ -> (constant_pool, encoding, freeze) {
1176
+ node_id = load_varuint
1177
+ location = load_location(freeze)
1178
+ value = AlternationPatternNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1179
+ value.freeze if freeze
1180
+ value
1181
+ },
1182
+ -> (constant_pool, encoding, freeze) {
1183
+ node_id = load_varuint
1184
+ location = load_location(freeze)
1185
+ value = AndNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1186
+ value.freeze if freeze
1187
+ value
1188
+ },
1189
+ -> (constant_pool, encoding, freeze) {
1190
+ node_id = load_varuint
1191
+ location = load_location(freeze)
1192
+ value = ArgumentsNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) })
1193
+ value.freeze if freeze
1194
+ value
1195
+ },
1196
+ -> (constant_pool, encoding, freeze) {
1197
+ node_id = load_varuint
1198
+ location = load_location(freeze)
1199
+ value = ArrayNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_location(freeze), load_optional_location(freeze))
1200
+ value.freeze if freeze
1201
+ value
1202
+ },
1203
+ -> (constant_pool, encoding, freeze) {
1204
+ node_id = load_varuint
1205
+ location = load_location(freeze)
1206
+ value = ArrayPatternNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_location(freeze), load_optional_location(freeze))
1207
+ value.freeze if freeze
1208
+ value
1209
+ },
1210
+ -> (constant_pool, encoding, freeze) {
1211
+ node_id = load_varuint
1212
+ location = load_location(freeze)
1213
+ value = AssocNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_optional_location(freeze))
1214
+ value.freeze if freeze
1215
+ value
1216
+ },
1217
+ -> (constant_pool, encoding, freeze) {
1218
+ node_id = load_varuint
1219
+ location = load_location(freeze)
1220
+ value = AssocSplatNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
1221
+ value.freeze if freeze
1222
+ value
1223
+ },
1224
+ -> (constant_pool, encoding, freeze) {
1225
+ node_id = load_varuint
1226
+ location = load_location(freeze)
1227
+ value = BackReferenceReadNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
1228
+ value.freeze if freeze
1229
+ value
1230
+ },
1231
+ -> (constant_pool, encoding, freeze) {
1232
+ node_id = load_varuint
1233
+ location = load_location(freeze)
1234
+ value = BeginNode.new(source, node_id, location, load_varuint, load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze))
1235
+ value.freeze if freeze
1236
+ value
1237
+ },
1238
+ -> (constant_pool, encoding, freeze) {
1239
+ node_id = load_varuint
1240
+ location = load_location(freeze)
1241
+ value = BlockArgumentNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
1242
+ value.freeze if freeze
1243
+ value
1244
+ },
1245
+ -> (constant_pool, encoding, freeze) {
1246
+ node_id = load_varuint
1247
+ location = load_location(freeze)
1248
+ value = BlockLocalVariableNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
1249
+ value.freeze if freeze
1250
+ value
1251
+ },
1252
+ -> (constant_pool, encoding, freeze) {
1253
+ node_id = load_varuint
1254
+ location = load_location(freeze)
1255
+ value = BlockNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_constant(constant_pool, encoding) }, load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_location(freeze))
1256
+ value.freeze if freeze
1257
+ value
1258
+ },
1259
+ -> (constant_pool, encoding, freeze) {
1260
+ node_id = load_varuint
1261
+ location = load_location(freeze)
1262
+ value = BlockParameterNode.new(source, node_id, location, load_varuint, load_optional_constant(constant_pool, encoding), load_optional_location(freeze), load_location(freeze))
1263
+ value.freeze if freeze
1264
+ value
1265
+ },
1266
+ -> (constant_pool, encoding, freeze) {
1267
+ node_id = load_varuint
1268
+ location = load_location(freeze)
1269
+ value = BlockParametersNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_location(freeze), load_optional_location(freeze))
1270
+ value.freeze if freeze
1271
+ value
1272
+ },
1273
+ -> (constant_pool, encoding, freeze) {
1274
+ node_id = load_varuint
1275
+ location = load_location(freeze)
1276
+ value = BreakNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
1277
+ value.freeze if freeze
1278
+ value
1279
+ },
1280
+ -> (constant_pool, encoding, freeze) {
1281
+ node_id = load_varuint
1282
+ location = load_location(freeze)
1283
+ value = CallAndWriteNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_location(freeze), load_constant(constant_pool, encoding), load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze))
1284
+ value.freeze if freeze
1285
+ value
1286
+ },
1287
+ -> (constant_pool, encoding, freeze) {
1288
+ node_id = load_varuint
1289
+ location = load_location(freeze)
1290
+ value = CallNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_constant(constant_pool, encoding), load_optional_location(freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze))
1291
+ value.freeze if freeze
1292
+ value
1293
+ },
1294
+ -> (constant_pool, encoding, freeze) {
1295
+ node_id = load_varuint
1296
+ location = load_location(freeze)
1297
+ value = CallOperatorWriteNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_location(freeze), load_constant(constant_pool, encoding), load_constant(constant_pool, encoding), load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze))
1298
+ value.freeze if freeze
1299
+ value
1300
+ },
1301
+ -> (constant_pool, encoding, freeze) {
1302
+ node_id = load_varuint
1303
+ location = load_location(freeze)
1304
+ value = CallOrWriteNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_location(freeze), load_constant(constant_pool, encoding), load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze))
1305
+ value.freeze if freeze
1306
+ value
1307
+ },
1308
+ -> (constant_pool, encoding, freeze) {
1309
+ node_id = load_varuint
1310
+ location = load_location(freeze)
1311
+ value = CallTargetNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze), load_constant(constant_pool, encoding), load_location(freeze))
1312
+ value.freeze if freeze
1313
+ value
1314
+ },
1315
+ -> (constant_pool, encoding, freeze) {
1316
+ node_id = load_varuint
1317
+ location = load_location(freeze)
1318
+ value = CapturePatternNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1319
+ value.freeze if freeze
1320
+ value
1321
+ },
1322
+ -> (constant_pool, encoding, freeze) {
1323
+ node_id = load_varuint
1324
+ location = load_location(freeze)
1325
+ value = CaseMatchNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_location(freeze))
1326
+ value.freeze if freeze
1327
+ value
1328
+ },
1329
+ -> (constant_pool, encoding, freeze) {
1330
+ node_id = load_varuint
1331
+ location = load_location(freeze)
1332
+ value = CaseNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_location(freeze))
1333
+ value.freeze if freeze
1334
+ value
1335
+ },
1336
+ -> (constant_pool, encoding, freeze) {
1337
+ node_id = load_varuint
1338
+ location = load_location(freeze)
1339
+ value = ClassNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_constant(constant_pool, encoding) }, load_location(freeze), load_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_constant(constant_pool, encoding))
1340
+ value.freeze if freeze
1341
+ value
1342
+ },
1343
+ -> (constant_pool, encoding, freeze) {
1344
+ node_id = load_varuint
1345
+ location = load_location(freeze)
1346
+ value = ClassVariableAndWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1347
+ value.freeze if freeze
1348
+ value
1349
+ },
1350
+ -> (constant_pool, encoding, freeze) {
1351
+ node_id = load_varuint
1352
+ location = load_location(freeze)
1353
+ value = ClassVariableOperatorWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding))
1354
+ value.freeze if freeze
1355
+ value
1356
+ },
1357
+ -> (constant_pool, encoding, freeze) {
1358
+ node_id = load_varuint
1359
+ location = load_location(freeze)
1360
+ value = ClassVariableOrWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1361
+ value.freeze if freeze
1362
+ value
1363
+ },
1364
+ -> (constant_pool, encoding, freeze) {
1365
+ node_id = load_varuint
1366
+ location = load_location(freeze)
1367
+ value = ClassVariableReadNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
1368
+ value.freeze if freeze
1369
+ value
1370
+ },
1371
+ -> (constant_pool, encoding, freeze) {
1372
+ node_id = load_varuint
1373
+ location = load_location(freeze)
1374
+ value = ClassVariableTargetNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
1375
+ value.freeze if freeze
1376
+ value
1377
+ },
1378
+ -> (constant_pool, encoding, freeze) {
1379
+ node_id = load_varuint
1380
+ location = load_location(freeze)
1381
+ value = ClassVariableWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1382
+ value.freeze if freeze
1383
+ value
1384
+ },
1385
+ -> (constant_pool, encoding, freeze) {
1386
+ node_id = load_varuint
1387
+ location = load_location(freeze)
1388
+ value = ConstantAndWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1389
+ value.freeze if freeze
1390
+ value
1391
+ },
1392
+ -> (constant_pool, encoding, freeze) {
1393
+ node_id = load_varuint
1394
+ location = load_location(freeze)
1395
+ value = ConstantOperatorWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding))
1396
+ value.freeze if freeze
1397
+ value
1398
+ },
1399
+ -> (constant_pool, encoding, freeze) {
1400
+ node_id = load_varuint
1401
+ location = load_location(freeze)
1402
+ value = ConstantOrWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1403
+ value.freeze if freeze
1404
+ value
1405
+ },
1406
+ -> (constant_pool, encoding, freeze) {
1407
+ node_id = load_varuint
1408
+ location = load_location(freeze)
1409
+ value = ConstantPathAndWriteNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1410
+ value.freeze if freeze
1411
+ value
1412
+ },
1413
+ -> (constant_pool, encoding, freeze) {
1414
+ node_id = load_varuint
1415
+ location = load_location(freeze)
1416
+ value = ConstantPathNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_constant(constant_pool, encoding), load_location(freeze), load_location(freeze))
1417
+ value.freeze if freeze
1418
+ value
1419
+ },
1420
+ -> (constant_pool, encoding, freeze) {
1421
+ node_id = load_varuint
1422
+ location = load_location(freeze)
1423
+ value = ConstantPathOperatorWriteNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding))
1424
+ value.freeze if freeze
1425
+ value
1426
+ },
1427
+ -> (constant_pool, encoding, freeze) {
1428
+ node_id = load_varuint
1429
+ location = load_location(freeze)
1430
+ value = ConstantPathOrWriteNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1431
+ value.freeze if freeze
1432
+ value
1433
+ },
1434
+ -> (constant_pool, encoding, freeze) {
1435
+ node_id = load_varuint
1436
+ location = load_location(freeze)
1437
+ value = ConstantPathTargetNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_constant(constant_pool, encoding), load_location(freeze), load_location(freeze))
1438
+ value.freeze if freeze
1439
+ value
1440
+ },
1441
+ -> (constant_pool, encoding, freeze) {
1442
+ node_id = load_varuint
1443
+ location = load_location(freeze)
1444
+ value = ConstantPathWriteNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1445
+ value.freeze if freeze
1446
+ value
1447
+ },
1448
+ -> (constant_pool, encoding, freeze) {
1449
+ node_id = load_varuint
1450
+ location = load_location(freeze)
1451
+ value = ConstantReadNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
1452
+ value.freeze if freeze
1453
+ value
1454
+ },
1455
+ -> (constant_pool, encoding, freeze) {
1456
+ node_id = load_varuint
1457
+ location = load_location(freeze)
1458
+ value = ConstantTargetNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
1459
+ value.freeze if freeze
1460
+ value
1461
+ },
1462
+ -> (constant_pool, encoding, freeze) {
1463
+ node_id = load_varuint
1464
+ location = load_location(freeze)
1465
+ value = ConstantWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1466
+ value.freeze if freeze
1467
+ value
1468
+ },
1469
+ -> (constant_pool, encoding, freeze) {
1470
+ node_id = load_varuint
1471
+ location = load_location(freeze)
1472
+ load_uint32
1473
+ value = DefNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_constant(constant_pool, encoding) }, load_location(freeze), load_optional_location(freeze), load_optional_location(freeze), load_optional_location(freeze), load_optional_location(freeze), load_optional_location(freeze))
1474
+ value.freeze if freeze
1475
+ value
1476
+ },
1477
+ -> (constant_pool, encoding, freeze) {
1478
+ node_id = load_varuint
1479
+ location = load_location(freeze)
1480
+ value = DefinedNode.new(source, node_id, location, load_varuint, load_optional_location(freeze), load_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_location(freeze))
1481
+ value.freeze if freeze
1482
+ value
1483
+ },
1484
+ -> (constant_pool, encoding, freeze) {
1485
+ node_id = load_varuint
1486
+ location = load_location(freeze)
1487
+ value = ElseNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze))
1488
+ value.freeze if freeze
1489
+ value
1490
+ },
1491
+ -> (constant_pool, encoding, freeze) {
1492
+ node_id = load_varuint
1493
+ location = load_location(freeze)
1494
+ value = EmbeddedStatementsNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
1495
+ value.freeze if freeze
1496
+ value
1497
+ },
1498
+ -> (constant_pool, encoding, freeze) {
1499
+ node_id = load_varuint
1500
+ location = load_location(freeze)
1501
+ value = EmbeddedVariableNode.new(source, node_id, location, load_varuint, load_location(freeze), load_node(constant_pool, encoding, freeze))
1502
+ value.freeze if freeze
1503
+ value
1504
+ },
1505
+ -> (constant_pool, encoding, freeze) {
1506
+ node_id = load_varuint
1507
+ location = load_location(freeze)
1508
+ value = EnsureNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
1509
+ value.freeze if freeze
1510
+ value
1511
+ },
1512
+ -> (constant_pool, encoding, freeze) {
1513
+ node_id = load_varuint
1514
+ location = load_location(freeze)
1515
+ value = FalseNode.new(source, node_id, location, load_varuint)
1516
+ value.freeze if freeze
1517
+ value
1518
+ },
1519
+ -> (constant_pool, encoding, freeze) {
1520
+ node_id = load_varuint
1521
+ location = load_location(freeze)
1522
+ value = FindPatternNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_location(freeze))
1523
+ value.freeze if freeze
1524
+ value
1525
+ },
1526
+ -> (constant_pool, encoding, freeze) {
1527
+ node_id = load_varuint
1528
+ location = load_location(freeze)
1529
+ value = FlipFlopNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
1530
+ value.freeze if freeze
1531
+ value
1532
+ },
1533
+ -> (constant_pool, encoding, freeze) {
1534
+ node_id = load_varuint
1535
+ location = load_location(freeze)
1536
+ value = FloatNode.new(source, node_id, location, load_varuint, load_double)
1537
+ value.freeze if freeze
1538
+ value
1539
+ },
1540
+ -> (constant_pool, encoding, freeze) {
1541
+ node_id = load_varuint
1542
+ location = load_location(freeze)
1543
+ value = ForNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_location(freeze), load_optional_location(freeze), load_location(freeze))
1544
+ value.freeze if freeze
1545
+ value
1546
+ },
1547
+ -> (constant_pool, encoding, freeze) {
1548
+ node_id = load_varuint
1549
+ location = load_location(freeze)
1550
+ value = ForwardingArgumentsNode.new(source, node_id, location, load_varuint)
1551
+ value.freeze if freeze
1552
+ value
1553
+ },
1554
+ -> (constant_pool, encoding, freeze) {
1555
+ node_id = load_varuint
1556
+ location = load_location(freeze)
1557
+ value = ForwardingParameterNode.new(source, node_id, location, load_varuint)
1558
+ value.freeze if freeze
1559
+ value
1560
+ },
1561
+ -> (constant_pool, encoding, freeze) {
1562
+ node_id = load_varuint
1563
+ location = load_location(freeze)
1564
+ value = ForwardingSuperNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze))
1565
+ value.freeze if freeze
1566
+ value
1567
+ },
1568
+ -> (constant_pool, encoding, freeze) {
1569
+ node_id = load_varuint
1570
+ location = load_location(freeze)
1571
+ value = GlobalVariableAndWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1572
+ value.freeze if freeze
1573
+ value
1574
+ },
1575
+ -> (constant_pool, encoding, freeze) {
1576
+ node_id = load_varuint
1577
+ location = load_location(freeze)
1578
+ value = GlobalVariableOperatorWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding))
1579
+ value.freeze if freeze
1580
+ value
1581
+ },
1582
+ -> (constant_pool, encoding, freeze) {
1583
+ node_id = load_varuint
1584
+ location = load_location(freeze)
1585
+ value = GlobalVariableOrWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1586
+ value.freeze if freeze
1587
+ value
1588
+ },
1589
+ -> (constant_pool, encoding, freeze) {
1590
+ node_id = load_varuint
1591
+ location = load_location(freeze)
1592
+ value = GlobalVariableReadNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
1593
+ value.freeze if freeze
1594
+ value
1595
+ },
1596
+ -> (constant_pool, encoding, freeze) {
1597
+ node_id = load_varuint
1598
+ location = load_location(freeze)
1599
+ value = GlobalVariableTargetNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
1600
+ value.freeze if freeze
1601
+ value
1602
+ },
1603
+ -> (constant_pool, encoding, freeze) {
1604
+ node_id = load_varuint
1605
+ location = load_location(freeze)
1606
+ value = GlobalVariableWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1607
+ value.freeze if freeze
1608
+ value
1609
+ },
1610
+ -> (constant_pool, encoding, freeze) {
1611
+ node_id = load_varuint
1612
+ location = load_location(freeze)
1613
+ value = HashNode.new(source, node_id, location, load_varuint, load_location(freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_location(freeze))
1614
+ value.freeze if freeze
1615
+ value
1616
+ },
1617
+ -> (constant_pool, encoding, freeze) {
1618
+ node_id = load_varuint
1619
+ location = load_location(freeze)
1620
+ value = HashPatternNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_location(freeze))
1621
+ value.freeze if freeze
1622
+ value
1623
+ },
1624
+ -> (constant_pool, encoding, freeze) {
1625
+ node_id = load_varuint
1626
+ location = load_location(freeze)
1627
+ value = IfNode.new(source, node_id, location, load_varuint, load_optional_location(freeze), load_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze))
1628
+ value.freeze if freeze
1629
+ value
1630
+ },
1631
+ -> (constant_pool, encoding, freeze) {
1632
+ node_id = load_varuint
1633
+ location = load_location(freeze)
1634
+ value = ImaginaryNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze))
1635
+ value.freeze if freeze
1636
+ value
1637
+ },
1638
+ -> (constant_pool, encoding, freeze) {
1639
+ node_id = load_varuint
1640
+ location = load_location(freeze)
1641
+ value = ImplicitNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze))
1642
+ value.freeze if freeze
1643
+ value
1644
+ },
1645
+ -> (constant_pool, encoding, freeze) {
1646
+ node_id = load_varuint
1647
+ location = load_location(freeze)
1648
+ value = ImplicitRestNode.new(source, node_id, location, load_varuint)
1649
+ value.freeze if freeze
1650
+ value
1651
+ },
1652
+ -> (constant_pool, encoding, freeze) {
1653
+ node_id = load_varuint
1654
+ location = load_location(freeze)
1655
+ value = InNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_optional_location(freeze))
1656
+ value.freeze if freeze
1657
+ value
1658
+ },
1659
+ -> (constant_pool, encoding, freeze) {
1660
+ node_id = load_varuint
1661
+ location = load_location(freeze)
1662
+ value = IndexAndWriteNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1663
+ value.freeze if freeze
1664
+ value
1665
+ },
1666
+ -> (constant_pool, encoding, freeze) {
1667
+ node_id = load_varuint
1668
+ location = load_location(freeze)
1669
+ value = IndexOperatorWriteNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze))
1670
+ value.freeze if freeze
1671
+ value
1672
+ },
1673
+ -> (constant_pool, encoding, freeze) {
1674
+ node_id = load_varuint
1675
+ location = load_location(freeze)
1676
+ value = IndexOrWriteNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1677
+ value.freeze if freeze
1678
+ value
1679
+ },
1680
+ -> (constant_pool, encoding, freeze) {
1681
+ node_id = load_varuint
1682
+ location = load_location(freeze)
1683
+ value = IndexTargetNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze))
1684
+ value.freeze if freeze
1685
+ value
1686
+ },
1687
+ -> (constant_pool, encoding, freeze) {
1688
+ node_id = load_varuint
1689
+ location = load_location(freeze)
1690
+ value = InstanceVariableAndWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1691
+ value.freeze if freeze
1692
+ value
1693
+ },
1694
+ -> (constant_pool, encoding, freeze) {
1695
+ node_id = load_varuint
1696
+ location = load_location(freeze)
1697
+ value = InstanceVariableOperatorWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding))
1698
+ value.freeze if freeze
1699
+ value
1700
+ },
1701
+ -> (constant_pool, encoding, freeze) {
1702
+ node_id = load_varuint
1703
+ location = load_location(freeze)
1704
+ value = InstanceVariableOrWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1705
+ value.freeze if freeze
1706
+ value
1707
+ },
1708
+ -> (constant_pool, encoding, freeze) {
1709
+ node_id = load_varuint
1710
+ location = load_location(freeze)
1711
+ value = InstanceVariableReadNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
1712
+ value.freeze if freeze
1713
+ value
1714
+ },
1715
+ -> (constant_pool, encoding, freeze) {
1716
+ node_id = load_varuint
1717
+ location = load_location(freeze)
1718
+ value = InstanceVariableTargetNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
1719
+ value.freeze if freeze
1720
+ value
1721
+ },
1722
+ -> (constant_pool, encoding, freeze) {
1723
+ node_id = load_varuint
1724
+ location = load_location(freeze)
1725
+ value = InstanceVariableWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1726
+ value.freeze if freeze
1727
+ value
1728
+ },
1729
+ -> (constant_pool, encoding, freeze) {
1730
+ node_id = load_varuint
1731
+ location = load_location(freeze)
1732
+ value = IntegerNode.new(source, node_id, location, load_varuint, load_integer)
1733
+ value.freeze if freeze
1734
+ value
1735
+ },
1736
+ -> (constant_pool, encoding, freeze) {
1737
+ node_id = load_varuint
1738
+ location = load_location(freeze)
1739
+ value = InterpolatedMatchLastLineNode.new(source, node_id, location, load_varuint, load_location(freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_location(freeze))
1740
+ value.freeze if freeze
1741
+ value
1742
+ },
1743
+ -> (constant_pool, encoding, freeze) {
1744
+ node_id = load_varuint
1745
+ location = load_location(freeze)
1746
+ value = InterpolatedRegularExpressionNode.new(source, node_id, location, load_varuint, load_location(freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_location(freeze))
1747
+ value.freeze if freeze
1748
+ value
1749
+ },
1750
+ -> (constant_pool, encoding, freeze) {
1751
+ node_id = load_varuint
1752
+ location = load_location(freeze)
1753
+ value = InterpolatedStringNode.new(source, node_id, location, load_varuint, load_optional_location(freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_location(freeze))
1754
+ value.freeze if freeze
1755
+ value
1756
+ },
1757
+ -> (constant_pool, encoding, freeze) {
1758
+ node_id = load_varuint
1759
+ location = load_location(freeze)
1760
+ value = InterpolatedSymbolNode.new(source, node_id, location, load_varuint, load_optional_location(freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_location(freeze))
1761
+ value.freeze if freeze
1762
+ value
1763
+ },
1764
+ -> (constant_pool, encoding, freeze) {
1765
+ node_id = load_varuint
1766
+ location = load_location(freeze)
1767
+ value = InterpolatedXStringNode.new(source, node_id, location, load_varuint, load_location(freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_location(freeze))
1768
+ value.freeze if freeze
1769
+ value
1770
+ },
1771
+ -> (constant_pool, encoding, freeze) {
1772
+ node_id = load_varuint
1773
+ location = load_location(freeze)
1774
+ value = ItLocalVariableReadNode.new(source, node_id, location, load_varuint)
1775
+ value.freeze if freeze
1776
+ value
1777
+ },
1778
+ -> (constant_pool, encoding, freeze) {
1779
+ node_id = load_varuint
1780
+ location = load_location(freeze)
1781
+ value = ItParametersNode.new(source, node_id, location, load_varuint)
1782
+ value.freeze if freeze
1783
+ value
1784
+ },
1785
+ -> (constant_pool, encoding, freeze) {
1786
+ node_id = load_varuint
1787
+ location = load_location(freeze)
1788
+ value = KeywordHashNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) })
1789
+ value.freeze if freeze
1790
+ value
1791
+ },
1792
+ -> (constant_pool, encoding, freeze) {
1793
+ node_id = load_varuint
1794
+ location = load_location(freeze)
1795
+ value = KeywordRestParameterNode.new(source, node_id, location, load_varuint, load_optional_constant(constant_pool, encoding), load_optional_location(freeze), load_location(freeze))
1796
+ value.freeze if freeze
1797
+ value
1798
+ },
1799
+ -> (constant_pool, encoding, freeze) {
1800
+ node_id = load_varuint
1801
+ location = load_location(freeze)
1802
+ value = LambdaNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_constant(constant_pool, encoding) }, load_location(freeze), load_location(freeze), load_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze))
1803
+ value.freeze if freeze
1804
+ value
1805
+ },
1806
+ -> (constant_pool, encoding, freeze) {
1807
+ node_id = load_varuint
1808
+ location = load_location(freeze)
1809
+ value = LocalVariableAndWriteNode.new(source, node_id, location, load_varuint, load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding), load_varuint)
1810
+ value.freeze if freeze
1811
+ value
1812
+ },
1813
+ -> (constant_pool, encoding, freeze) {
1814
+ node_id = load_varuint
1815
+ location = load_location(freeze)
1816
+ value = LocalVariableOperatorWriteNode.new(source, node_id, location, load_varuint, load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding), load_constant(constant_pool, encoding), load_varuint)
1817
+ value.freeze if freeze
1818
+ value
1819
+ },
1820
+ -> (constant_pool, encoding, freeze) {
1821
+ node_id = load_varuint
1822
+ location = load_location(freeze)
1823
+ value = LocalVariableOrWriteNode.new(source, node_id, location, load_varuint, load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_constant(constant_pool, encoding), load_varuint)
1824
+ value.freeze if freeze
1825
+ value
1826
+ },
1827
+ -> (constant_pool, encoding, freeze) {
1828
+ node_id = load_varuint
1829
+ location = load_location(freeze)
1830
+ value = LocalVariableReadNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_varuint)
1831
+ value.freeze if freeze
1832
+ value
1833
+ },
1834
+ -> (constant_pool, encoding, freeze) {
1835
+ node_id = load_varuint
1836
+ location = load_location(freeze)
1837
+ value = LocalVariableTargetNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_varuint)
1838
+ value.freeze if freeze
1839
+ value
1840
+ },
1841
+ -> (constant_pool, encoding, freeze) {
1842
+ node_id = load_varuint
1843
+ location = load_location(freeze)
1844
+ value = LocalVariableWriteNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_varuint, load_location(freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1845
+ value.freeze if freeze
1846
+ value
1847
+ },
1848
+ -> (constant_pool, encoding, freeze) {
1849
+ node_id = load_varuint
1850
+ location = load_location(freeze)
1851
+ value = MatchLastLineNode.new(source, node_id, location, load_varuint, load_location(freeze), load_location(freeze), load_location(freeze), load_string(encoding))
1852
+ value.freeze if freeze
1853
+ value
1854
+ },
1855
+ -> (constant_pool, encoding, freeze) {
1856
+ node_id = load_varuint
1857
+ location = load_location(freeze)
1858
+ value = MatchPredicateNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1859
+ value.freeze if freeze
1860
+ value
1861
+ },
1862
+ -> (constant_pool, encoding, freeze) {
1863
+ node_id = load_varuint
1864
+ location = load_location(freeze)
1865
+ value = MatchRequiredNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1866
+ value.freeze if freeze
1867
+ value
1868
+ },
1869
+ -> (constant_pool, encoding, freeze) {
1870
+ node_id = load_varuint
1871
+ location = load_location(freeze)
1872
+ value = MatchWriteNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) })
1873
+ value.freeze if freeze
1874
+ value
1875
+ },
1876
+ -> (constant_pool, encoding, freeze) {
1877
+ node_id = load_varuint
1878
+ location = load_location(freeze)
1879
+ value = MissingNode.new(source, node_id, location, load_varuint)
1880
+ value.freeze if freeze
1881
+ value
1882
+ },
1883
+ -> (constant_pool, encoding, freeze) {
1884
+ node_id = load_varuint
1885
+ location = load_location(freeze)
1886
+ value = ModuleNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_constant(constant_pool, encoding) }, load_location(freeze), load_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_constant(constant_pool, encoding))
1887
+ value.freeze if freeze
1888
+ value
1889
+ },
1890
+ -> (constant_pool, encoding, freeze) {
1891
+ node_id = load_varuint
1892
+ location = load_location(freeze)
1893
+ value = MultiTargetNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_location(freeze), load_optional_location(freeze))
1894
+ value.freeze if freeze
1895
+ value
1896
+ },
1897
+ -> (constant_pool, encoding, freeze) {
1898
+ node_id = load_varuint
1899
+ location = load_location(freeze)
1900
+ value = MultiWriteNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_location(freeze), load_optional_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1901
+ value.freeze if freeze
1902
+ value
1903
+ },
1904
+ -> (constant_pool, encoding, freeze) {
1905
+ node_id = load_varuint
1906
+ location = load_location(freeze)
1907
+ value = NextNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
1908
+ value.freeze if freeze
1909
+ value
1910
+ },
1911
+ -> (constant_pool, encoding, freeze) {
1912
+ node_id = load_varuint
1913
+ location = load_location(freeze)
1914
+ value = NilNode.new(source, node_id, location, load_varuint)
1915
+ value.freeze if freeze
1916
+ value
1917
+ },
1918
+ -> (constant_pool, encoding, freeze) {
1919
+ node_id = load_varuint
1920
+ location = load_location(freeze)
1921
+ value = NoKeywordsParameterNode.new(source, node_id, location, load_varuint, load_location(freeze), load_location(freeze))
1922
+ value.freeze if freeze
1923
+ value
1924
+ },
1925
+ -> (constant_pool, encoding, freeze) {
1926
+ node_id = load_varuint
1927
+ location = load_location(freeze)
1928
+ value = NumberedParametersNode.new(source, node_id, location, load_varuint, io.getbyte)
1929
+ value.freeze if freeze
1930
+ value
1931
+ },
1932
+ -> (constant_pool, encoding, freeze) {
1933
+ node_id = load_varuint
1934
+ location = load_location(freeze)
1935
+ value = NumberedReferenceReadNode.new(source, node_id, location, load_varuint, load_varuint)
1936
+ value.freeze if freeze
1937
+ value
1938
+ },
1939
+ -> (constant_pool, encoding, freeze) {
1940
+ node_id = load_varuint
1941
+ location = load_location(freeze)
1942
+ value = OptionalKeywordParameterNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_node(constant_pool, encoding, freeze))
1943
+ value.freeze if freeze
1944
+ value
1945
+ },
1946
+ -> (constant_pool, encoding, freeze) {
1947
+ node_id = load_varuint
1948
+ location = load_location(freeze)
1949
+ value = OptionalParameterNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
1950
+ value.freeze if freeze
1951
+ value
1952
+ },
1953
+ -> (constant_pool, encoding, freeze) {
1954
+ node_id = load_varuint
1955
+ location = load_location(freeze)
1956
+ value = OrNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_node(constant_pool, encoding, freeze), load_location(freeze))
1957
+ value.freeze if freeze
1958
+ value
1959
+ },
1960
+ -> (constant_pool, encoding, freeze) {
1961
+ node_id = load_varuint
1962
+ location = load_location(freeze)
1963
+ value = ParametersNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_node(constant_pool, encoding, freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze))
1964
+ value.freeze if freeze
1965
+ value
1966
+ },
1967
+ -> (constant_pool, encoding, freeze) {
1968
+ node_id = load_varuint
1969
+ location = load_location(freeze)
1970
+ value = ParenthesesNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_location(freeze))
1971
+ value.freeze if freeze
1972
+ value
1973
+ },
1974
+ -> (constant_pool, encoding, freeze) {
1975
+ node_id = load_varuint
1976
+ location = load_location(freeze)
1977
+ value = PinnedExpressionNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze), load_location(freeze), load_location(freeze))
1978
+ value.freeze if freeze
1979
+ value
1980
+ },
1981
+ -> (constant_pool, encoding, freeze) {
1982
+ node_id = load_varuint
1983
+ location = load_location(freeze)
1984
+ value = PinnedVariableNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze))
1985
+ value.freeze if freeze
1986
+ value
1987
+ },
1988
+ -> (constant_pool, encoding, freeze) {
1989
+ node_id = load_varuint
1990
+ location = load_location(freeze)
1991
+ value = PostExecutionNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_location(freeze), load_location(freeze))
1992
+ value.freeze if freeze
1993
+ value
1994
+ },
1995
+ -> (constant_pool, encoding, freeze) {
1996
+ node_id = load_varuint
1997
+ location = load_location(freeze)
1998
+ value = PreExecutionNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_location(freeze), load_location(freeze), load_location(freeze))
1999
+ value.freeze if freeze
2000
+ value
2001
+ },
2002
+ -> (constant_pool, encoding, freeze) {
2003
+ node_id = load_varuint
2004
+ location = load_location(freeze)
2005
+ value = ProgramNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_constant(constant_pool, encoding) }, load_node(constant_pool, encoding, freeze))
2006
+ value.freeze if freeze
2007
+ value
2008
+ },
2009
+ -> (constant_pool, encoding, freeze) {
2010
+ node_id = load_varuint
2011
+ location = load_location(freeze)
2012
+ value = RangeNode.new(source, node_id, location, load_varuint, load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
2013
+ value.freeze if freeze
2014
+ value
2015
+ },
2016
+ -> (constant_pool, encoding, freeze) {
2017
+ node_id = load_varuint
2018
+ location = load_location(freeze)
2019
+ value = RationalNode.new(source, node_id, location, load_varuint, load_integer, load_integer)
2020
+ value.freeze if freeze
2021
+ value
2022
+ },
2023
+ -> (constant_pool, encoding, freeze) {
2024
+ node_id = load_varuint
2025
+ location = load_location(freeze)
2026
+ value = RedoNode.new(source, node_id, location, load_varuint)
2027
+ value.freeze if freeze
2028
+ value
2029
+ },
2030
+ -> (constant_pool, encoding, freeze) {
2031
+ node_id = load_varuint
2032
+ location = load_location(freeze)
2033
+ value = RegularExpressionNode.new(source, node_id, location, load_varuint, load_location(freeze), load_location(freeze), load_location(freeze), load_string(encoding))
2034
+ value.freeze if freeze
2035
+ value
2036
+ },
2037
+ -> (constant_pool, encoding, freeze) {
2038
+ node_id = load_varuint
2039
+ location = load_location(freeze)
2040
+ value = RequiredKeywordParameterNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding), load_location(freeze))
2041
+ value.freeze if freeze
2042
+ value
2043
+ },
2044
+ -> (constant_pool, encoding, freeze) {
2045
+ node_id = load_varuint
2046
+ location = load_location(freeze)
2047
+ value = RequiredParameterNode.new(source, node_id, location, load_varuint, load_constant(constant_pool, encoding))
2048
+ value.freeze if freeze
2049
+ value
2050
+ },
2051
+ -> (constant_pool, encoding, freeze) {
2052
+ node_id = load_varuint
2053
+ location = load_location(freeze)
2054
+ value = RescueModifierNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze), load_location(freeze), load_node(constant_pool, encoding, freeze))
2055
+ value.freeze if freeze
2056
+ value
2057
+ },
2058
+ -> (constant_pool, encoding, freeze) {
2059
+ node_id = load_varuint
2060
+ location = load_location(freeze)
2061
+ value = RescueNode.new(source, node_id, location, load_varuint, load_location(freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze))
2062
+ value.freeze if freeze
2063
+ value
2064
+ },
2065
+ -> (constant_pool, encoding, freeze) {
2066
+ node_id = load_varuint
2067
+ location = load_location(freeze)
2068
+ value = RestParameterNode.new(source, node_id, location, load_varuint, load_optional_constant(constant_pool, encoding), load_optional_location(freeze), load_location(freeze))
2069
+ value.freeze if freeze
2070
+ value
2071
+ },
2072
+ -> (constant_pool, encoding, freeze) {
2073
+ node_id = load_varuint
2074
+ location = load_location(freeze)
2075
+ value = RetryNode.new(source, node_id, location, load_varuint)
2076
+ value.freeze if freeze
2077
+ value
2078
+ },
2079
+ -> (constant_pool, encoding, freeze) {
2080
+ node_id = load_varuint
2081
+ location = load_location(freeze)
2082
+ value = ReturnNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_node(constant_pool, encoding, freeze))
2083
+ value.freeze if freeze
2084
+ value
2085
+ },
2086
+ -> (constant_pool, encoding, freeze) {
2087
+ node_id = load_varuint
2088
+ location = load_location(freeze)
2089
+ value = SelfNode.new(source, node_id, location, load_varuint)
2090
+ value.freeze if freeze
2091
+ value
2092
+ },
2093
+ -> (constant_pool, encoding, freeze) {
2094
+ node_id = load_varuint
2095
+ location = load_location(freeze)
2096
+ value = ShareableConstantNode.new(source, node_id, location, load_varuint, load_node(constant_pool, encoding, freeze))
2097
+ value.freeze if freeze
2098
+ value
2099
+ },
2100
+ -> (constant_pool, encoding, freeze) {
2101
+ node_id = load_varuint
2102
+ location = load_location(freeze)
2103
+ value = SingletonClassNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_constant(constant_pool, encoding) }, load_location(freeze), load_location(freeze), load_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_location(freeze))
2104
+ value.freeze if freeze
2105
+ value
2106
+ },
2107
+ -> (constant_pool, encoding, freeze) {
2108
+ node_id = load_varuint
2109
+ location = load_location(freeze)
2110
+ value = SourceEncodingNode.new(source, node_id, location, load_varuint)
2111
+ value.freeze if freeze
2112
+ value
2113
+ },
2114
+ -> (constant_pool, encoding, freeze) {
2115
+ node_id = load_varuint
2116
+ location = load_location(freeze)
2117
+ value = SourceFileNode.new(source, node_id, location, load_varuint, load_string(encoding))
2118
+ value.freeze if freeze
2119
+ value
2120
+ },
2121
+ -> (constant_pool, encoding, freeze) {
2122
+ node_id = load_varuint
2123
+ location = load_location(freeze)
2124
+ value = SourceLineNode.new(source, node_id, location, load_varuint)
2125
+ value.freeze if freeze
2126
+ value
2127
+ },
2128
+ -> (constant_pool, encoding, freeze) {
2129
+ node_id = load_varuint
2130
+ location = load_location(freeze)
2131
+ value = SplatNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_node(constant_pool, encoding, freeze))
2132
+ value.freeze if freeze
2133
+ value
2134
+ },
2135
+ -> (constant_pool, encoding, freeze) {
2136
+ node_id = load_varuint
2137
+ location = load_location(freeze)
2138
+ value = StatementsNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) })
2139
+ value.freeze if freeze
2140
+ value
2141
+ },
2142
+ -> (constant_pool, encoding, freeze) {
2143
+ node_id = load_varuint
2144
+ location = load_location(freeze)
2145
+ value = StringNode.new(source, node_id, location, load_varuint, load_optional_location(freeze), load_location(freeze), load_optional_location(freeze), load_string(encoding))
2146
+ value.freeze if freeze
2147
+ value
2148
+ },
2149
+ -> (constant_pool, encoding, freeze) {
2150
+ node_id = load_varuint
2151
+ location = load_location(freeze)
2152
+ value = SuperNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze))
2153
+ value.freeze if freeze
2154
+ value
2155
+ },
2156
+ -> (constant_pool, encoding, freeze) {
2157
+ node_id = load_varuint
2158
+ location = load_location(freeze)
2159
+ value = SymbolNode.new(source, node_id, location, load_varuint, load_optional_location(freeze), load_optional_location(freeze), load_optional_location(freeze), load_string(encoding))
2160
+ value.freeze if freeze
2161
+ value
2162
+ },
2163
+ -> (constant_pool, encoding, freeze) {
2164
+ node_id = load_varuint
2165
+ location = load_location(freeze)
2166
+ value = TrueNode.new(source, node_id, location, load_varuint)
2167
+ value.freeze if freeze
2168
+ value
2169
+ },
2170
+ -> (constant_pool, encoding, freeze) {
2171
+ node_id = load_varuint
2172
+ location = load_location(freeze)
2173
+ value = UndefNode.new(source, node_id, location, load_varuint, Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_location(freeze))
2174
+ value.freeze if freeze
2175
+ value
2176
+ },
2177
+ -> (constant_pool, encoding, freeze) {
2178
+ node_id = load_varuint
2179
+ location = load_location(freeze)
2180
+ value = UnlessNode.new(source, node_id, location, load_varuint, load_location(freeze), load_node(constant_pool, encoding, freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze))
2181
+ value.freeze if freeze
2182
+ value
2183
+ },
2184
+ -> (constant_pool, encoding, freeze) {
2185
+ node_id = load_varuint
2186
+ location = load_location(freeze)
2187
+ value = UntilNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_location(freeze), load_optional_location(freeze), load_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze))
2188
+ value.freeze if freeze
2189
+ value
2190
+ },
2191
+ -> (constant_pool, encoding, freeze) {
2192
+ node_id = load_varuint
2193
+ location = load_location(freeze)
2194
+ value = WhenNode.new(source, node_id, location, load_varuint, load_location(freeze), Array.new(load_varuint) { load_node(constant_pool, encoding, freeze) }, load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze))
2195
+ value.freeze if freeze
2196
+ value
2197
+ },
2198
+ -> (constant_pool, encoding, freeze) {
2199
+ node_id = load_varuint
2200
+ location = load_location(freeze)
2201
+ value = WhileNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_location(freeze), load_optional_location(freeze), load_node(constant_pool, encoding, freeze), load_optional_node(constant_pool, encoding, freeze))
2202
+ value.freeze if freeze
2203
+ value
2204
+ },
2205
+ -> (constant_pool, encoding, freeze) {
2206
+ node_id = load_varuint
2207
+ location = load_location(freeze)
2208
+ value = XStringNode.new(source, node_id, location, load_varuint, load_location(freeze), load_location(freeze), load_location(freeze), load_string(encoding))
2209
+ value.freeze if freeze
2210
+ value
2211
+ },
2212
+ -> (constant_pool, encoding, freeze) {
2213
+ node_id = load_varuint
2214
+ location = load_location(freeze)
2215
+ value = YieldNode.new(source, node_id, location, load_varuint, load_location(freeze), load_optional_location(freeze), load_optional_node(constant_pool, encoding, freeze), load_optional_location(freeze))
2216
+ value.freeze if freeze
2217
+ value
2218
+ },
2219
+ ]
2220
+ end
2221
+ end
2222
+ end
2223
+
2224
+ # The token types that can be indexed by their enum values.
2225
+ TOKEN_TYPES = [
2226
+ nil,
2227
+ :EOF,
2228
+ :BRACE_RIGHT,
2229
+ :COMMA,
2230
+ :EMBEXPR_END,
2231
+ :KEYWORD_DO,
2232
+ :KEYWORD_ELSE,
2233
+ :KEYWORD_ELSIF,
2234
+ :KEYWORD_END,
2235
+ :KEYWORD_ENSURE,
2236
+ :KEYWORD_IN,
2237
+ :KEYWORD_RESCUE,
2238
+ :KEYWORD_THEN,
2239
+ :KEYWORD_WHEN,
2240
+ :NEWLINE,
2241
+ :PARENTHESIS_RIGHT,
2242
+ :SEMICOLON,
2243
+ :AMPERSAND,
2244
+ :AMPERSAND_AMPERSAND,
2245
+ :AMPERSAND_AMPERSAND_EQUAL,
2246
+ :AMPERSAND_DOT,
2247
+ :AMPERSAND_EQUAL,
2248
+ :BACKTICK,
2249
+ :BACK_REFERENCE,
2250
+ :BANG,
2251
+ :BANG_EQUAL,
2252
+ :BANG_TILDE,
2253
+ :BRACE_LEFT,
2254
+ :BRACKET_LEFT,
2255
+ :BRACKET_LEFT_ARRAY,
2256
+ :BRACKET_LEFT_RIGHT,
2257
+ :BRACKET_LEFT_RIGHT_EQUAL,
2258
+ :BRACKET_RIGHT,
2259
+ :CARET,
2260
+ :CARET_EQUAL,
2261
+ :CHARACTER_LITERAL,
2262
+ :CLASS_VARIABLE,
2263
+ :COLON,
2264
+ :COLON_COLON,
2265
+ :COMMENT,
2266
+ :CONSTANT,
2267
+ :DOT,
2268
+ :DOT_DOT,
2269
+ :DOT_DOT_DOT,
2270
+ :EMBDOC_BEGIN,
2271
+ :EMBDOC_END,
2272
+ :EMBDOC_LINE,
2273
+ :EMBEXPR_BEGIN,
2274
+ :EMBVAR,
2275
+ :EQUAL,
2276
+ :EQUAL_EQUAL,
2277
+ :EQUAL_EQUAL_EQUAL,
2278
+ :EQUAL_GREATER,
2279
+ :EQUAL_TILDE,
2280
+ :FLOAT,
2281
+ :FLOAT_IMAGINARY,
2282
+ :FLOAT_RATIONAL,
2283
+ :FLOAT_RATIONAL_IMAGINARY,
2284
+ :GLOBAL_VARIABLE,
2285
+ :GREATER,
2286
+ :GREATER_EQUAL,
2287
+ :GREATER_GREATER,
2288
+ :GREATER_GREATER_EQUAL,
2289
+ :HEREDOC_END,
2290
+ :HEREDOC_START,
2291
+ :IDENTIFIER,
2292
+ :IGNORED_NEWLINE,
2293
+ :INSTANCE_VARIABLE,
2294
+ :INTEGER,
2295
+ :INTEGER_IMAGINARY,
2296
+ :INTEGER_RATIONAL,
2297
+ :INTEGER_RATIONAL_IMAGINARY,
2298
+ :KEYWORD_ALIAS,
2299
+ :KEYWORD_AND,
2300
+ :KEYWORD_BEGIN,
2301
+ :KEYWORD_BEGIN_UPCASE,
2302
+ :KEYWORD_BREAK,
2303
+ :KEYWORD_CASE,
2304
+ :KEYWORD_CLASS,
2305
+ :KEYWORD_DEF,
2306
+ :KEYWORD_DEFINED,
2307
+ :KEYWORD_DO_LOOP,
2308
+ :KEYWORD_END_UPCASE,
2309
+ :KEYWORD_FALSE,
2310
+ :KEYWORD_FOR,
2311
+ :KEYWORD_IF,
2312
+ :KEYWORD_IF_MODIFIER,
2313
+ :KEYWORD_MODULE,
2314
+ :KEYWORD_NEXT,
2315
+ :KEYWORD_NIL,
2316
+ :KEYWORD_NOT,
2317
+ :KEYWORD_OR,
2318
+ :KEYWORD_REDO,
2319
+ :KEYWORD_RESCUE_MODIFIER,
2320
+ :KEYWORD_RETRY,
2321
+ :KEYWORD_RETURN,
2322
+ :KEYWORD_SELF,
2323
+ :KEYWORD_SUPER,
2324
+ :KEYWORD_TRUE,
2325
+ :KEYWORD_UNDEF,
2326
+ :KEYWORD_UNLESS,
2327
+ :KEYWORD_UNLESS_MODIFIER,
2328
+ :KEYWORD_UNTIL,
2329
+ :KEYWORD_UNTIL_MODIFIER,
2330
+ :KEYWORD_WHILE,
2331
+ :KEYWORD_WHILE_MODIFIER,
2332
+ :KEYWORD_YIELD,
2333
+ :KEYWORD___ENCODING__,
2334
+ :KEYWORD___FILE__,
2335
+ :KEYWORD___LINE__,
2336
+ :LABEL,
2337
+ :LABEL_END,
2338
+ :LAMBDA_BEGIN,
2339
+ :LESS,
2340
+ :LESS_EQUAL,
2341
+ :LESS_EQUAL_GREATER,
2342
+ :LESS_LESS,
2343
+ :LESS_LESS_EQUAL,
2344
+ :METHOD_NAME,
2345
+ :MINUS,
2346
+ :MINUS_EQUAL,
2347
+ :MINUS_GREATER,
2348
+ :NUMBERED_REFERENCE,
2349
+ :PARENTHESIS_LEFT,
2350
+ :PARENTHESIS_LEFT_PARENTHESES,
2351
+ :PERCENT,
2352
+ :PERCENT_EQUAL,
2353
+ :PERCENT_LOWER_I,
2354
+ :PERCENT_LOWER_W,
2355
+ :PERCENT_LOWER_X,
2356
+ :PERCENT_UPPER_I,
2357
+ :PERCENT_UPPER_W,
2358
+ :PIPE,
2359
+ :PIPE_EQUAL,
2360
+ :PIPE_PIPE,
2361
+ :PIPE_PIPE_EQUAL,
2362
+ :PLUS,
2363
+ :PLUS_EQUAL,
2364
+ :QUESTION_MARK,
2365
+ :REGEXP_BEGIN,
2366
+ :REGEXP_END,
2367
+ :SLASH,
2368
+ :SLASH_EQUAL,
2369
+ :STAR,
2370
+ :STAR_EQUAL,
2371
+ :STAR_STAR,
2372
+ :STAR_STAR_EQUAL,
2373
+ :STRING_BEGIN,
2374
+ :STRING_CONTENT,
2375
+ :STRING_END,
2376
+ :SYMBOL_BEGIN,
2377
+ :TILDE,
2378
+ :UAMPERSAND,
2379
+ :UCOLON_COLON,
2380
+ :UDOT_DOT,
2381
+ :UDOT_DOT_DOT,
2382
+ :UMINUS,
2383
+ :UMINUS_NUM,
2384
+ :UPLUS,
2385
+ :USTAR,
2386
+ :USTAR_STAR,
2387
+ :WORDS_SEP,
2388
+ :__END__,
2389
+ :MISSING,
2390
+ :NOT_PROVIDED,
2391
+ ].freeze
2392
+
2393
+ private_constant :MAJOR_VERSION, :MINOR_VERSION, :PATCH_VERSION
2394
+ private_constant :ConstantPool, :FastStringIO, :Loader, :TOKEN_TYPES
2395
+ end
2396
+
2397
+ private_constant :Serialize
2398
+ end