prism 2.0.0-arm64-darwin

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 (233) hide show
  1. checksums.yaml +7 -0
  2. data/BSDmakefile +58 -0
  3. data/CHANGELOG.md +881 -0
  4. data/CODE_OF_CONDUCT.md +76 -0
  5. data/CONTRIBUTING.md +58 -0
  6. data/LICENSE.md +7 -0
  7. data/Makefile +145 -0
  8. data/README.md +81 -0
  9. data/config.yml +4752 -0
  10. data/docs/build_system.md +119 -0
  11. data/docs/configuration.md +69 -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 +81 -0
  16. data/docs/heredocs.md +36 -0
  17. data/docs/javascript.md +133 -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 +147 -0
  23. data/docs/relocation.md +32 -0
  24. data/docs/ripper_translation.md +63 -0
  25. data/docs/ruby_api.md +45 -0
  26. data/docs/ruby_parser_translation.md +19 -0
  27. data/docs/serialization.md +244 -0
  28. data/docs/testing.md +72 -0
  29. data/ext/prism/api_node.c +7005 -0
  30. data/ext/prism/extconf.rb +126 -0
  31. data/ext/prism/extension.c +1768 -0
  32. data/ext/prism/extension.h +19 -0
  33. data/include/prism/arena.h +45 -0
  34. data/include/prism/arena.hpp +42 -0
  35. data/include/prism/ast.h +10381 -0
  36. data/include/prism/ast.hpp +641 -0
  37. data/include/prism/buffer.h +60 -0
  38. data/include/prism/buffer.hpp +55 -0
  39. data/include/prism/comments.h +72 -0
  40. data/include/prism/compiler/accel.h +26 -0
  41. data/include/prism/compiler/align.h +36 -0
  42. data/include/prism/compiler/assume.h +25 -0
  43. data/include/prism/compiler/branch.h +26 -0
  44. data/include/prism/compiler/bswap.h +46 -0
  45. data/include/prism/compiler/cplusplus.hpp +16 -0
  46. data/include/prism/compiler/endianness.h +34 -0
  47. data/include/prism/compiler/exceptions.hpp +17 -0
  48. data/include/prism/compiler/exported.h +24 -0
  49. data/include/prism/compiler/fallthrough.h +22 -0
  50. data/include/prism/compiler/filesystem.h +32 -0
  51. data/include/prism/compiler/flex_array.h +19 -0
  52. data/include/prism/compiler/force_inline.h +21 -0
  53. data/include/prism/compiler/format.h +27 -0
  54. data/include/prism/compiler/inline.h +17 -0
  55. data/include/prism/compiler/lifetimebound.hpp +25 -0
  56. data/include/prism/compiler/nodiscard.h +22 -0
  57. data/include/prism/compiler/nonnull.h +18 -0
  58. data/include/prism/compiler/unused.h +18 -0
  59. data/include/prism/constant_pool.h +106 -0
  60. data/include/prism/diagnostic.h +111 -0
  61. data/include/prism/errors_format.h +61 -0
  62. data/include/prism/excludes.h +29 -0
  63. data/include/prism/integer.h +41 -0
  64. data/include/prism/internal/allocator.h +68 -0
  65. data/include/prism/internal/allocator_debug.h +88 -0
  66. data/include/prism/internal/arena.h +108 -0
  67. data/include/prism/internal/bit.h +42 -0
  68. data/include/prism/internal/buffer.h +94 -0
  69. data/include/prism/internal/char.h +145 -0
  70. data/include/prism/internal/comments.h +53 -0
  71. data/include/prism/internal/constant_pool.h +152 -0
  72. data/include/prism/internal/diagnostic.h +389 -0
  73. data/include/prism/internal/encoding.h +242 -0
  74. data/include/prism/internal/integer.h +68 -0
  75. data/include/prism/internal/isinf.h +16 -0
  76. data/include/prism/internal/line_offset_list.h +34 -0
  77. data/include/prism/internal/list.h +62 -0
  78. data/include/prism/internal/magic_comments.h +23 -0
  79. data/include/prism/internal/memchr.h +15 -0
  80. data/include/prism/internal/node.h +42 -0
  81. data/include/prism/internal/options.h +232 -0
  82. data/include/prism/internal/parser.h +1004 -0
  83. data/include/prism/internal/regexp.h +26 -0
  84. data/include/prism/internal/serialize.h +39 -0
  85. data/include/prism/internal/source.h +72 -0
  86. data/include/prism/internal/static_literals.h +100 -0
  87. data/include/prism/internal/stringy.h +30 -0
  88. data/include/prism/internal/strncasecmp.h +18 -0
  89. data/include/prism/internal/strpbrk.h +33 -0
  90. data/include/prism/internal/tokens.h +11 -0
  91. data/include/prism/internal/xxh3.h +16 -0
  92. data/include/prism/json.h +40 -0
  93. data/include/prism/line_offset_list.h +69 -0
  94. data/include/prism/magic_comments.h +53 -0
  95. data/include/prism/node.h +139 -0
  96. data/include/prism/node.hpp +272 -0
  97. data/include/prism/node_type.hpp +38 -0
  98. data/include/prism/options.h +363 -0
  99. data/include/prism/options.hpp +43 -0
  100. data/include/prism/parser.h +433 -0
  101. data/include/prism/parser.hpp +274 -0
  102. data/include/prism/prettyprint.h +39 -0
  103. data/include/prism/serialize.h +123 -0
  104. data/include/prism/source.h +163 -0
  105. data/include/prism/stream.h +36 -0
  106. data/include/prism/string_query.h +82 -0
  107. data/include/prism/stringy.h +61 -0
  108. data/include/prism/stringy.hpp +31 -0
  109. data/include/prism/version.h +46 -0
  110. data/include/prism.h +123 -0
  111. data/include/prism.hpp +24 -0
  112. data/lib/prism/3.3/prism.bundle +0 -0
  113. data/lib/prism/3.4/prism.bundle +0 -0
  114. data/lib/prism/4.0/prism.bundle +0 -0
  115. data/lib/prism/compiler.rb +815 -0
  116. data/lib/prism/desugar_compiler.rb +463 -0
  117. data/lib/prism/dispatcher.rb +2383 -0
  118. data/lib/prism/dot_visitor.rb +4848 -0
  119. data/lib/prism/dsl.rb +1369 -0
  120. data/lib/prism/ffi.rb +746 -0
  121. data/lib/prism/inspect_visitor.rb +2425 -0
  122. data/lib/prism/lex_compat.rb +953 -0
  123. data/lib/prism/mutation_compiler.rb +780 -0
  124. data/lib/prism/node.rb +33940 -0
  125. data/lib/prism/node_ext.rb +504 -0
  126. data/lib/prism/node_find.rb +215 -0
  127. data/lib/prism/parse_result/errors.rb +72 -0
  128. data/lib/prism/parse_result/newlines.rb +423 -0
  129. data/lib/prism/parse_result.rb +1236 -0
  130. data/lib/prism/pattern.rb +314 -0
  131. data/lib/prism/polyfill/append_as_bytes.rb +15 -0
  132. data/lib/prism/polyfill/byteindex.rb +13 -0
  133. data/lib/prism/polyfill/scan_byte.rb +14 -0
  134. data/lib/prism/polyfill/unpack1.rb +14 -0
  135. data/lib/prism/polyfill/warn.rb +36 -0
  136. data/lib/prism/reflection.rb +427 -0
  137. data/lib/prism/relocation.rb +567 -0
  138. data/lib/prism/serialize.rb +4589 -0
  139. data/lib/prism/string_query.rb +54 -0
  140. data/lib/prism/translation/parser/builder.rb +70 -0
  141. data/lib/prism/translation/parser/compiler.rb +2226 -0
  142. data/lib/prism/translation/parser/lexer.rb +769 -0
  143. data/lib/prism/translation/parser.rb +376 -0
  144. data/lib/prism/translation/parser_current.rb +26 -0
  145. data/lib/prism/translation/parser_versions.rb +36 -0
  146. data/lib/prism/translation/ripper/filter.rb +53 -0
  147. data/lib/prism/translation/ripper/lexer.rb +133 -0
  148. data/lib/prism/translation/ripper/sexp.rb +118 -0
  149. data/lib/prism/translation/ripper/shim.rb +7 -0
  150. data/lib/prism/translation/ripper.rb +4278 -0
  151. data/lib/prism/translation/ruby_parser.rb +1721 -0
  152. data/lib/prism/translation.rb +20 -0
  153. data/lib/prism/visitor.rb +1440 -0
  154. data/lib/prism.rb +168 -0
  155. data/prism.gemspec +251 -0
  156. data/rbi/generated/prism/compiler.rbi +489 -0
  157. data/rbi/generated/prism/desugar_compiler.rbi +306 -0
  158. data/rbi/generated/prism/dispatcher.rbi +1138 -0
  159. data/rbi/generated/prism/dot_visitor.rbi +618 -0
  160. data/rbi/generated/prism/dsl.rbi +751 -0
  161. data/rbi/generated/prism/inspect_visitor.rbi +503 -0
  162. data/rbi/generated/prism/lex_compat.rbi +162 -0
  163. data/rbi/generated/prism/mutation_compiler.rbi +464 -0
  164. data/rbi/generated/prism/node.rbi +15143 -0
  165. data/rbi/generated/prism/node_ext.rbi +259 -0
  166. data/rbi/generated/prism/node_find.rbi +79 -0
  167. data/rbi/generated/prism/parse_result/errors.rbi +21 -0
  168. data/rbi/generated/prism/parse_result/newlines.rbi +208 -0
  169. data/rbi/generated/prism/parse_result.rbi +776 -0
  170. data/rbi/generated/prism/pattern.rbi +134 -0
  171. data/rbi/generated/prism/reflection.rbi +89 -0
  172. data/rbi/generated/prism/relocation.rbi +329 -0
  173. data/rbi/generated/prism/serialize.rbi +185 -0
  174. data/rbi/generated/prism/string_query.rbi +43 -0
  175. data/rbi/generated/prism/translation.rbi +7 -0
  176. data/rbi/generated/prism/visitor.rbi +650 -0
  177. data/rbi/generated/prism.rbi +86 -0
  178. data/rbi/prism/translation/parser.rbi +11 -0
  179. data/rbi/prism/translation/parser_versions.rbi +28 -0
  180. data/rbi/prism/translation/ripper.rbi +15 -0
  181. data/rbi/rubyvm/node_find.rbi +14 -0
  182. data/sig/generated/prism/compiler.rbs +492 -0
  183. data/sig/generated/prism/desugar_compiler.rbs +305 -0
  184. data/sig/generated/prism/dispatcher.rbs +1292 -0
  185. data/sig/generated/prism/dot_visitor.rbs +635 -0
  186. data/sig/generated/prism/dsl.rbs +928 -0
  187. data/sig/generated/prism/inspect_visitor.rbs +509 -0
  188. data/sig/generated/prism/lex_compat.rbs +166 -0
  189. data/sig/generated/prism/mutation_compiler.rbs +464 -0
  190. data/sig/generated/prism/node.rbs +21632 -0
  191. data/sig/generated/prism/node_ext.rbs +290 -0
  192. data/sig/generated/prism/node_find.rbs +90 -0
  193. data/sig/generated/prism/parse_result/errors.rbs +22 -0
  194. data/sig/generated/prism/parse_result/newlines.rbs +223 -0
  195. data/sig/generated/prism/parse_result.rbs +871 -0
  196. data/sig/generated/prism/pattern.rbs +156 -0
  197. data/sig/generated/prism/reflection.rbs +101 -0
  198. data/sig/generated/prism/relocation.rbs +428 -0
  199. data/sig/generated/prism/serialize.rbs +200 -0
  200. data/sig/generated/prism/string_query.rbs +43 -0
  201. data/sig/generated/prism/translation.rbs +8 -0
  202. data/sig/generated/prism/visitor.rbs +1111 -0
  203. data/sig/generated/prism.rbs +84 -0
  204. data/sig/manifest.yaml +2 -0
  205. data/src/arena.c +117 -0
  206. data/src/buffer.c +389 -0
  207. data/src/char.c +289 -0
  208. data/src/comments.c +454 -0
  209. data/src/constant_pool.c +406 -0
  210. data/src/diagnostic.c +894 -0
  211. data/src/encoding.c +5345 -0
  212. data/src/errors_format.c +519 -0
  213. data/src/integer.c +681 -0
  214. data/src/json.c +5733 -0
  215. data/src/line_offset_list.c +100 -0
  216. data/src/list.c +24 -0
  217. data/src/memchr.c +37 -0
  218. data/src/node.c +4363 -0
  219. data/src/options.c +445 -0
  220. data/src/parser.c +371 -0
  221. data/src/prettyprint.c +9024 -0
  222. data/src/prism.c +23901 -0
  223. data/src/regexp.c +1705 -0
  224. data/src/serialize.c +2660 -0
  225. data/src/source.c +524 -0
  226. data/src/static_literals.c +685 -0
  227. data/src/string_query.c +180 -0
  228. data/src/stringy.c +61 -0
  229. data/src/strncasecmp.c +37 -0
  230. data/src/strpbrk.c +447 -0
  231. data/src/tokens.c +724 -0
  232. data/src/xxh3.c +292 -0
  233. metadata +276 -0
@@ -0,0 +1,4589 @@
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
+ #--
13
+ # rbs_inline: enabled
14
+
15
+ require "stringio"
16
+ require_relative "polyfill/unpack1"
17
+
18
+ module Prism
19
+ # A module responsible for deserializing parse results.
20
+ module Serialize # :nodoc:
21
+ # The major version of prism that we are expecting to find in the serialized
22
+ # strings.
23
+ MAJOR_VERSION = 2
24
+
25
+ # The minor version of prism that we are expecting to find in the serialized
26
+ # strings.
27
+ MINOR_VERSION = 0
28
+
29
+ # The patch version of prism that we are expecting to find in the serialized
30
+ # strings.
31
+ PATCH_VERSION = 0
32
+
33
+ # Deserialize the dumped output from a request to parse or parse_file.
34
+ #
35
+ # The formatting of the source of this method is purposeful to illustrate
36
+ # the structure of the serialized data.
37
+ #
38
+ #: (String input, String serialized, bool freeze) -> ParseResult
39
+ def self.load_parse(input, serialized, freeze)
40
+ input = input.dup
41
+ source = Source.for(input, 1, [])
42
+ loader = Loader.new(source, serialized)
43
+
44
+ loader.load_header
45
+ encoding = loader.load_encoding
46
+ start_line = loader.load_varsint
47
+ checksum = loader.load_uint64
48
+ offsets = loader.load_line_offsets(freeze)
49
+
50
+ source.replace_start_line(start_line)
51
+ source.replace_checksum(checksum)
52
+ source.replace_offsets(offsets)
53
+
54
+ loader.load_comments(source.comments, freeze)
55
+ loader.load_comment_attachments(source, freeze)
56
+ magic_comments = loader.load_magic_comments(freeze)
57
+ data_loc = loader.load_optional_location_object(freeze)
58
+ errors = loader.load_errors(encoding, freeze)
59
+ warnings = loader.load_warnings(encoding, freeze)
60
+ continuable = loader.load_bool
61
+ cpool_base = loader.load_uint32
62
+ cpool_size = loader.load_varuint
63
+
64
+ constant_pool = ConstantPool.new(serialized, cpool_base, cpool_size)
65
+
66
+ node = loader.load_nodes(constant_pool, encoding, freeze, cpool_base) #: ProgramNode
67
+ loader.load_constant_pool(constant_pool)
68
+ raise unless loader.eof?
69
+
70
+ result = ParseResult.new(node, magic_comments, data_loc, errors, warnings, continuable, source)
71
+ result.freeze if freeze
72
+
73
+ input.force_encoding(encoding)
74
+
75
+ # This is an extremely niche use-case where the file was marked as binary
76
+ # but it contained UTF-8-encoded characters. In that case we will actually
77
+ # put it back to UTF-8 to give the location APIs the best chance of being
78
+ # correct.
79
+ if !input.ascii_only? && input.encoding == Encoding::BINARY
80
+ input.force_encoding(Encoding::UTF_8)
81
+ input.force_encoding(Encoding::BINARY) unless input.valid_encoding?
82
+ end
83
+
84
+ if freeze
85
+ input.freeze
86
+ source.deep_freeze
87
+ end
88
+
89
+ result
90
+ end
91
+
92
+ # Deserialize the dumped output from a request to lex or lex_file.
93
+ #
94
+ # The formatting of the source of this method is purposeful to illustrate
95
+ # the structure of the serialized data.
96
+ #
97
+ #: (String input, String serialized, bool freeze) -> LexResult
98
+ def self.load_lex(input, serialized, freeze)
99
+ source = Source.for(input, 1, [])
100
+ loader = Loader.new(source, serialized)
101
+
102
+ tokens = loader.load_tokens
103
+ encoding = loader.load_encoding
104
+ start_line = loader.load_varsint
105
+ checksum = loader.load_uint64
106
+ offsets = loader.load_line_offsets(freeze)
107
+
108
+ source.replace_start_line(start_line)
109
+ source.replace_checksum(checksum)
110
+ source.replace_offsets(offsets)
111
+
112
+ loader.load_comments(source.comments, freeze)
113
+ loader.load_comment_attachments(source, freeze)
114
+ magic_comments = loader.load_magic_comments(freeze)
115
+ data_loc = loader.load_optional_location_object(freeze)
116
+ errors = loader.load_errors(encoding, freeze)
117
+ warnings = loader.load_warnings(encoding, freeze)
118
+ continuable = loader.load_bool
119
+ raise unless loader.eof?
120
+
121
+ result = LexResult.new(tokens, magic_comments, data_loc, errors, warnings, continuable, source)
122
+
123
+ tokens.each do |token|
124
+ token[0].value.force_encoding(encoding)
125
+
126
+ if freeze
127
+ token[0].deep_freeze
128
+ token.freeze
129
+ end
130
+ end
131
+
132
+ if freeze
133
+ source.deep_freeze
134
+ tokens.freeze
135
+ result.freeze
136
+ end
137
+
138
+ result
139
+ end
140
+
141
+ # Deserialize the dumped output from a request to parse_comments or
142
+ # parse_file_comments.
143
+ #
144
+ # The formatting of the source of this method is purposeful to illustrate
145
+ # the structure of the serialized data.
146
+ #
147
+ #: (String input, String serialized, bool freeze) -> Array[Comment]
148
+ def self.load_parse_comments(input, serialized, freeze)
149
+ source = Source.for(input, 1, [])
150
+ loader = Loader.new(source, serialized)
151
+
152
+ loader.load_header
153
+ loader.load_encoding
154
+ start_line = loader.load_varsint
155
+ checksum = loader.load_uint64
156
+ offsets = loader.load_line_offsets(freeze)
157
+
158
+ source.replace_start_line(start_line)
159
+ source.replace_checksum(checksum)
160
+ source.replace_offsets(offsets)
161
+
162
+ result = loader.load_comments(source.comments, freeze)
163
+ raise unless loader.eof?
164
+
165
+ source.deep_freeze if freeze
166
+ result
167
+ end
168
+
169
+ # Deserialize the dumped output from a request to parse_lex or
170
+ # parse_lex_file.
171
+ #
172
+ # The formatting of the source of this method is purposeful to illustrate
173
+ # the structure of the serialized data.
174
+ #
175
+ #: (String input, String serialized, bool freeze) -> ParseLexResult
176
+ def self.load_parse_lex(input, serialized, freeze)
177
+ source = Source.for(input, 1, [])
178
+ loader = Loader.new(source, serialized)
179
+
180
+ tokens = loader.load_tokens
181
+ loader.load_header
182
+ encoding = loader.load_encoding
183
+ start_line = loader.load_varsint
184
+ checksum = loader.load_uint64
185
+ offsets = loader.load_line_offsets(freeze)
186
+
187
+ source.replace_start_line(start_line)
188
+ source.replace_checksum(checksum)
189
+ source.replace_offsets(offsets)
190
+
191
+ loader.load_comments(source.comments, freeze)
192
+ loader.load_comment_attachments(source, freeze)
193
+ magic_comments = loader.load_magic_comments(freeze)
194
+ data_loc = loader.load_optional_location_object(freeze)
195
+ errors = loader.load_errors(encoding, freeze)
196
+ warnings = loader.load_warnings(encoding, freeze)
197
+ continuable = loader.load_bool
198
+ cpool_base = loader.load_uint32
199
+ cpool_size = loader.load_varuint
200
+
201
+ constant_pool = ConstantPool.new(serialized, cpool_base, cpool_size)
202
+
203
+ node = loader.load_nodes(constant_pool, encoding, freeze, cpool_base) #: ProgramNode
204
+ loader.load_constant_pool(constant_pool)
205
+ raise unless loader.eof?
206
+
207
+ value = [node, tokens] #: [ProgramNode, Array[Token]]
208
+ result = ParseLexResult.new(value, magic_comments, data_loc, errors, warnings, continuable, source)
209
+
210
+ tokens.each do |token|
211
+ token[0].value.force_encoding(encoding)
212
+
213
+ if freeze
214
+ token[0].deep_freeze
215
+ token.freeze
216
+ end
217
+ end
218
+
219
+ if freeze
220
+ source.deep_freeze
221
+ tokens.freeze
222
+ value.freeze
223
+ result.freeze
224
+ end
225
+
226
+ result
227
+ end
228
+
229
+ class ConstantPool # :nodoc:
230
+ attr_reader :size #: Integer
231
+
232
+ # @rbs @serialized: String
233
+ # @rbs @base: Integer
234
+ # @rbs @pool: Array[Symbol?]
235
+
236
+ #: (String serialized, Integer base, Integer size) -> void
237
+ def initialize(serialized, base, size)
238
+ @serialized = serialized
239
+ @base = base
240
+ @size = size
241
+ @pool = Array.new(size, nil)
242
+ end
243
+
244
+ #: (Integer index, Encoding encoding) -> Symbol
245
+ def get(index, encoding)
246
+ @pool[index] ||=
247
+ begin
248
+ offset = @base + index * 8
249
+ start = @serialized.unpack1("L", offset: offset) #: Integer
250
+ length = @serialized.unpack1("L", offset: offset + 4) #: Integer
251
+
252
+ (@serialized.byteslice(start, length) or raise).force_encoding(encoding).to_sym
253
+ end
254
+ end
255
+ end
256
+
257
+ if RUBY_ENGINE == "truffleruby"
258
+ # StringIO is synchronized and that adds a high overhead on TruffleRuby.
259
+ # @rbs skip
260
+ class FastStringIO # :nodoc:
261
+ attr_accessor :pos
262
+
263
+ def initialize(string)
264
+ @string = string
265
+ @pos = 0
266
+ end
267
+
268
+ def getbyte
269
+ byte = @string.getbyte(@pos)
270
+ @pos += 1
271
+ byte
272
+ end
273
+
274
+ def read(n)
275
+ slice = @string.byteslice(@pos, n)
276
+ @pos += n
277
+ slice
278
+ end
279
+
280
+ def eof?
281
+ @pos >= @string.bytesize
282
+ end
283
+ end
284
+ else
285
+ FastStringIO = ::StringIO # :nodoc:
286
+ end
287
+
288
+ class Loader # :nodoc:
289
+ attr_reader :input #: String
290
+ attr_reader :io #: StringIO
291
+ attr_reader :source #: Source
292
+
293
+ #: (Source source, String serialized) -> void
294
+ def initialize(source, serialized)
295
+ @input = source.source.dup
296
+ raise unless serialized.encoding == Encoding::BINARY
297
+ @io = FastStringIO.new(serialized)
298
+ @source = source
299
+ define_load_node_lambdas if RUBY_ENGINE != "ruby"
300
+ end
301
+
302
+ #: () -> bool
303
+ def eof?
304
+ io.getbyte
305
+ io.eof?
306
+ end
307
+
308
+ #: (ConstantPool constant_pool) -> void
309
+ def load_constant_pool(constant_pool)
310
+ trailer = 0
311
+
312
+ constant_pool.size.times do |index|
313
+ length = (io.read(8) or raise).unpack1("L", offset: 4) #: Integer
314
+ trailer += length
315
+ end
316
+
317
+ io.read(trailer)
318
+ end
319
+
320
+ #: () -> void
321
+ def load_header
322
+ raise "Invalid serialization" if io.read(5) != "PRISM"
323
+ raise "Invalid serialization" if (io.read(3) or raise).unpack("C3") != [MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION]
324
+ raise "Invalid serialization (location fields must be included but are not)" if io.getbyte != 0
325
+ end
326
+
327
+ #: () -> Encoding
328
+ def load_encoding
329
+ encoding = Encoding.find((io.read(load_varuint) or raise)) or raise
330
+ @input = input.force_encoding(encoding).freeze
331
+ encoding
332
+ end
333
+
334
+ #: (bool freeze) -> Array[Integer]
335
+ def load_line_offsets(freeze)
336
+ offsets = Array.new(load_varuint) { load_varuint }
337
+ offsets.freeze if freeze
338
+ offsets
339
+ end
340
+
341
+ # Load the comments attached to each node into the comment attachments and
342
+ # comment ranges of the given source. For each node that owns comments, the
343
+ # index at which its comments begin is stored at its node id and the index
344
+ # at which they end at the following node id.
345
+ #
346
+ #: (Source source, bool freeze) -> void
347
+ def load_comment_attachments(source, freeze)
348
+ comments = source.comments
349
+ attachments = source.comment_attachments
350
+ ranges = source.comment_ranges
351
+
352
+ load_varuint.times do
353
+ node_id = load_varuint
354
+ ranges[node_id] = attachments.length
355
+ load_varuint.times { attachments << comments[load_varuint] }
356
+ ranges[node_id + 1] = attachments.length
357
+ end
358
+
359
+ if freeze
360
+ attachments.freeze
361
+ ranges.freeze
362
+ end
363
+ end
364
+
365
+ # Load the comments into the given list, which belongs to the source that
366
+ # the comments refer to.
367
+ #
368
+ #: (Array[Comment] comments, bool freeze) -> Array[Comment]
369
+ def load_comments(comments, freeze)
370
+ load_varuint.times do
371
+ comment =
372
+ case load_varuint
373
+ when 0 then InlineComment.new(load_location_object(freeze))
374
+ when 1 then EmbDocComment.new(load_location_object(freeze))
375
+ else raise
376
+ end
377
+
378
+ comment.freeze if freeze
379
+ comments << comment
380
+ end
381
+
382
+ comments.freeze if freeze
383
+ comments
384
+ end
385
+
386
+ #: (bool freeze) -> Array[MagicComment]
387
+ def load_magic_comments(freeze)
388
+ magic_comments =
389
+ Array.new(load_varuint) do
390
+ magic_comment =
391
+ MagicComment.new(
392
+ load_location_object(freeze),
393
+ load_location_object(freeze)
394
+ )
395
+
396
+ magic_comment.freeze if freeze
397
+ magic_comment
398
+ end
399
+
400
+ magic_comments.freeze if freeze
401
+ magic_comments
402
+ end
403
+
404
+ DIAGNOSTIC_TYPES = [
405
+ :alias_argument,
406
+ :alias_argument_numbered_reference,
407
+ :ampampeq_multi_assign,
408
+ :argument_after_block,
409
+ :argument_after_forwarding_ellipses,
410
+ :argument_bare_hash,
411
+ :argument_block_multi,
412
+ :argument_conflict_ampersand,
413
+ :argument_conflict_star,
414
+ :argument_conflict_star_star,
415
+ :argument_formal_class,
416
+ :argument_formal_constant,
417
+ :argument_formal_global,
418
+ :argument_formal_ivar,
419
+ :argument_forwarding_unbound,
420
+ :argument_no_forwarding_ampersand,
421
+ :argument_no_forwarding_ellipses,
422
+ :argument_no_forwarding_ellipses_lambda,
423
+ :argument_no_forwarding_ellipses_block,
424
+ :argument_no_forwarding_star,
425
+ :argument_no_forwarding_star_star,
426
+ :argument_splat_after_assoc_splat,
427
+ :argument_splat_after_splat,
428
+ :argument_term_paren,
429
+ :argument_unexpected_block,
430
+ :array_element,
431
+ :array_expression,
432
+ :array_expression_after_star,
433
+ :array_separator,
434
+ :array_term,
435
+ :begin_lonely_else,
436
+ :begin_term,
437
+ :begin_upcase_brace,
438
+ :begin_upcase_term,
439
+ :begin_upcase_toplevel,
440
+ :block_param_local_variable,
441
+ :block_param_pipe_term,
442
+ :block_term_brace,
443
+ :block_term_end,
444
+ :cannot_parse_expression,
445
+ :cannot_parse_string_part,
446
+ :case_expression_after_case,
447
+ :case_expression_after_when,
448
+ :case_match_missing_predicate,
449
+ :case_missing_conditions,
450
+ :case_term,
451
+ :class_in_method,
452
+ :class_name,
453
+ :class_superclass,
454
+ :class_term,
455
+ :class_unexpected_end,
456
+ :class_variable_bare,
457
+ :conditional_elsif_predicate,
458
+ :conditional_if_predicate,
459
+ :conditional_predicate_term,
460
+ :conditional_term,
461
+ :conditional_term_else,
462
+ :conditional_unless_predicate,
463
+ :conditional_until_predicate,
464
+ :conditional_while_predicate,
465
+ :constant_path_colon_colon_constant,
466
+ :def_endless,
467
+ :def_endless_parameters,
468
+ :def_endless_setter,
469
+ :def_endless_do_block,
470
+ :def_name,
471
+ :def_params_term,
472
+ :def_params_term_paren,
473
+ :def_receiver,
474
+ :def_receiver_term,
475
+ :def_term,
476
+ :defined_expression,
477
+ :embdoc_term,
478
+ :embexpr_end,
479
+ :embvar_invalid,
480
+ :end_upcase_brace,
481
+ :end_upcase_term,
482
+ :escape_invalid_control,
483
+ :escape_invalid_control_repeat,
484
+ :escape_invalid_hexadecimal,
485
+ :escape_invalid_meta,
486
+ :escape_invalid_meta_repeat,
487
+ :escape_invalid_unicode,
488
+ :escape_invalid_unicode_cm_flags,
489
+ :escape_invalid_unicode_list,
490
+ :escape_invalid_unicode_literal,
491
+ :escape_invalid_unicode_long,
492
+ :escape_invalid_unicode_short,
493
+ :escape_invalid_unicode_term,
494
+ :expect_argument,
495
+ :expect_eol_after_statement,
496
+ :expect_expression_after_ampampeq,
497
+ :expect_expression_after_comma,
498
+ :expect_expression_after_equal,
499
+ :expect_expression_after_less_less,
500
+ :expect_expression_after_lparen,
501
+ :expect_expression_after_operator,
502
+ :expect_expression_after_pipepipeeq,
503
+ :expect_expression_after_splat,
504
+ :expect_expression_after_splat_hash,
505
+ :expect_expression_after_star,
506
+ :expect_for_delimiter,
507
+ :expect_ident_req_parameter,
508
+ :expect_in_delimiter,
509
+ :expect_lparen_after_not_lparen,
510
+ :expect_lparen_after_not_other,
511
+ :expect_lparen_req_parameter,
512
+ :expect_message,
513
+ :expect_rbracket,
514
+ :expect_rparen,
515
+ :expect_rparen_after_multi,
516
+ :expect_rparen_req_parameter,
517
+ :expect_singleton_class_delimiter,
518
+ :expect_string_content,
519
+ :expect_when_delimiter,
520
+ :expression_bare_hash,
521
+ :expression_not_writable,
522
+ :expression_not_writable_encoding,
523
+ :expression_not_writable_false,
524
+ :expression_not_writable_file,
525
+ :expression_not_writable_line,
526
+ :expression_not_writable_nil,
527
+ :expression_not_writable_numbered,
528
+ :expression_not_writable_self,
529
+ :expression_not_writable_true,
530
+ :float_parse,
531
+ :for_collection,
532
+ :for_in,
533
+ :for_index,
534
+ :for_term,
535
+ :global_variable_bare,
536
+ :hash_expression_after_label,
537
+ :hash_key,
538
+ :hash_rocket,
539
+ :hash_term,
540
+ :hash_value,
541
+ :heredoc_identifier,
542
+ :heredoc_term,
543
+ :incomplete_question_mark,
544
+ :incomplete_variable_class,
545
+ :incomplete_variable_class_3_3,
546
+ :incomplete_variable_instance,
547
+ :incomplete_variable_instance_3_3,
548
+ :instance_variable_bare,
549
+ :invalid_block_exit,
550
+ :invalid_character,
551
+ :invalid_comma,
552
+ :invalid_encoding_magic_comment,
553
+ :invalid_escape_character,
554
+ :invalid_float_exponent,
555
+ :invalid_local_variable_read,
556
+ :invalid_local_variable_write,
557
+ :invalid_multibyte_char,
558
+ :invalid_multibyte_character,
559
+ :invalid_multibyte_escape,
560
+ :invalid_number_binary,
561
+ :invalid_number_decimal,
562
+ :invalid_number_fraction,
563
+ :invalid_number_hexadecimal,
564
+ :invalid_number_octal,
565
+ :invalid_number_underscore_inner,
566
+ :invalid_number_underscore_trailing,
567
+ :invalid_percent,
568
+ :invalid_percent_eof,
569
+ :invalid_printable_character,
570
+ :invalid_retry_after_else,
571
+ :invalid_retry_after_ensure,
572
+ :invalid_retry_without_rescue,
573
+ :invalid_symbol,
574
+ :invalid_variable_global,
575
+ :invalid_variable_global_3_3,
576
+ :invalid_yield,
577
+ :it_not_allowed_numbered,
578
+ :it_not_allowed_ordinary,
579
+ :lambda_open,
580
+ :lambda_term_brace,
581
+ :lambda_term_end,
582
+ :list_i_lower_element,
583
+ :list_i_lower_term,
584
+ :list_i_upper_element,
585
+ :list_i_upper_term,
586
+ :list_w_lower_element,
587
+ :list_w_lower_term,
588
+ :list_w_upper_element,
589
+ :list_w_upper_term,
590
+ :malloc_failed,
591
+ :mixed_encoding,
592
+ :module_in_method,
593
+ :module_name,
594
+ :module_term,
595
+ :multi_assign_multi_splats,
596
+ :multi_assign_unexpected_rest,
597
+ :nesting_too_deep,
598
+ :no_local_variable,
599
+ :non_associative_operator,
600
+ :not_expression,
601
+ :number_literal_underscore,
602
+ :numbered_parameter_inner_block,
603
+ :numbered_parameter_it,
604
+ :numbered_parameter_ordinary,
605
+ :numbered_parameter_outer_block,
606
+ :operator_multi_assign,
607
+ :operator_write_arguments,
608
+ :operator_write_block,
609
+ :parameter_assoc_splat_multi,
610
+ :parameter_block_multi,
611
+ :parameter_circular,
612
+ :parameter_forwarding_after_rest,
613
+ :parameter_method_name,
614
+ :parameter_name_duplicated,
615
+ :parameter_no_default,
616
+ :parameter_no_default_kw,
617
+ :parameter_numbered_reserved,
618
+ :parameter_order,
619
+ :parameter_splat_multi,
620
+ :parameter_star,
621
+ :parameter_unexpected_fwd,
622
+ :parameter_unexpected_no_kw,
623
+ :parameter_wild_loose_comma,
624
+ :pattern_array_multiple_rests,
625
+ :pattern_capture_duplicate,
626
+ :pattern_capture_in_alternative,
627
+ :pattern_expression_after_bracket,
628
+ :pattern_expression_after_comma,
629
+ :pattern_expression_after_hrocket,
630
+ :pattern_expression_after_in,
631
+ :pattern_expression_after_key,
632
+ :pattern_expression_after_paren,
633
+ :pattern_expression_after_pin,
634
+ :pattern_expression_after_pipe,
635
+ :pattern_expression_after_range,
636
+ :pattern_expression_after_rest,
637
+ :pattern_find_missing_inner,
638
+ :pattern_hash_implicit,
639
+ :pattern_hash_key,
640
+ :pattern_hash_key_duplicate,
641
+ :pattern_hash_key_interpolated,
642
+ :pattern_hash_key_label,
643
+ :pattern_hash_key_locals,
644
+ :pattern_ident_after_hrocket,
645
+ :pattern_label_after_comma,
646
+ :pattern_rest,
647
+ :pattern_term_brace,
648
+ :pattern_term_bracket,
649
+ :pattern_term_paren,
650
+ :pipepipeeq_multi_assign,
651
+ :regexp_encoding_option_mismatch,
652
+ :regexp_escaped_non_ascii_in_utf8,
653
+ :regexp_incompat_char_encoding,
654
+ :regexp_invalid_char_property,
655
+ :regexp_invalid_unicode_range,
656
+ :regexp_non_escaped_mbc,
657
+ :regexp_parse_error,
658
+ :regexp_term,
659
+ :regexp_unknown_options,
660
+ :regexp_utf8_char_non_utf8_regexp,
661
+ :rescue_expression,
662
+ :rescue_modifier_value,
663
+ :rescue_term,
664
+ :rescue_variable,
665
+ :return_invalid,
666
+ :script_not_found,
667
+ :singleton_for_literals,
668
+ :statement_alias,
669
+ :statement_postexe_end,
670
+ :statement_preexe_begin,
671
+ :statement_undef,
672
+ :string_concatenation,
673
+ :string_interpolated_term,
674
+ :string_literal_eof,
675
+ :string_literal_term,
676
+ :symbol_invalid,
677
+ :symbol_term_dynamic,
678
+ :symbol_term_interpolated,
679
+ :ternary_colon,
680
+ :ternary_expression_false,
681
+ :ternary_expression_true,
682
+ :unary_disallowed,
683
+ :unary_receiver,
684
+ :undef_argument,
685
+ :unexpected_block_argument,
686
+ :unexpected_index_block,
687
+ :unexpected_index_keywords,
688
+ :unexpected_label,
689
+ :unexpected_multi_write,
690
+ :unexpected_parameter_default_value,
691
+ :unexpected_range_operator,
692
+ :unexpected_safe_navigation,
693
+ :unexpected_token_close_context,
694
+ :unexpected_token_ignore,
695
+ :until_term,
696
+ :void_expression,
697
+ :while_term,
698
+ :write_target_in_method,
699
+ :write_target_readonly,
700
+ :write_target_unexpected,
701
+ :xstring_term,
702
+ :ambiguous_binary_operator,
703
+ :ambiguous_first_argument_minus,
704
+ :ambiguous_first_argument_plus,
705
+ :ambiguous_prefix_ampersand,
706
+ :ambiguous_prefix_star,
707
+ :ambiguous_prefix_star_star,
708
+ :ambiguous_slash,
709
+ :comparison_after_comparison,
710
+ :dot_dot_dot_eol,
711
+ :equal_in_conditional,
712
+ :equal_in_conditional_3_3,
713
+ :end_in_method,
714
+ :duplicated_hash_key,
715
+ :duplicated_when_clause,
716
+ :float_out_of_range,
717
+ :ignored_frozen_string_literal,
718
+ :indentation_mismatch,
719
+ :integer_in_flip_flop,
720
+ :invalid_character,
721
+ :invalid_magic_comment_value,
722
+ :invalid_numbered_reference,
723
+ :keyword_eol,
724
+ :literal_in_condition_default,
725
+ :literal_in_condition_verbose,
726
+ :shareable_constant_value_line,
727
+ :shebang_carriage_return,
728
+ :unexpected_carriage_return,
729
+ :unreachable_statement,
730
+ :unused_local_variable,
731
+ :void_statement,
732
+ ].freeze #: Array[Symbol]
733
+
734
+ private_constant :DIAGNOSTIC_TYPES
735
+
736
+ #: () -> Symbol
737
+ def load_error_level
738
+ level = io.getbyte
739
+
740
+ case level
741
+ when 0
742
+ :syntax
743
+ when 1
744
+ :argument
745
+ when 2
746
+ :load
747
+ else
748
+ raise "Unknown level: #{level}"
749
+ end
750
+ end
751
+
752
+ #: (Encoding encoding, bool freeze) -> Array[ParseError]
753
+ def load_errors(encoding, freeze)
754
+ errors =
755
+ Array.new(load_varuint) do
756
+ error =
757
+ ParseError.new(
758
+ DIAGNOSTIC_TYPES.fetch(load_varuint),
759
+ load_string(encoding),
760
+ load_location_object(freeze),
761
+ load_error_level
762
+ )
763
+
764
+ error.freeze if freeze
765
+ error
766
+ end
767
+
768
+ errors.freeze if freeze
769
+ errors
770
+ end
771
+
772
+ #: () -> Symbol
773
+ def load_warning_level
774
+ level = io.getbyte
775
+
776
+ case level
777
+ when 0
778
+ :default
779
+ when 1
780
+ :verbose
781
+ else
782
+ raise "Unknown level: #{level}"
783
+ end
784
+ end
785
+
786
+ #: (Encoding encoding, bool freeze) -> Array[ParseWarning]
787
+ def load_warnings(encoding, freeze)
788
+ warnings =
789
+ Array.new(load_varuint) do
790
+ warning =
791
+ ParseWarning.new(
792
+ DIAGNOSTIC_TYPES.fetch(load_varuint),
793
+ load_string(encoding),
794
+ load_location_object(freeze),
795
+ load_warning_level
796
+ )
797
+
798
+ warning.freeze if freeze
799
+ warning
800
+ end
801
+
802
+ warnings.freeze if freeze
803
+ warnings
804
+ end
805
+
806
+ #: () -> Array[Token]
807
+ def load_tokens
808
+ tokens = [] #: Array[Token]
809
+
810
+ while (type = TOKEN_TYPES.fetch(load_varuint))
811
+ location = load_location_object(false)
812
+
813
+ lex_state = load_varuint
814
+
815
+ token = Token.new(@source, type, location.slice, location, lex_state)
816
+
817
+ tokens << token
818
+ end
819
+
820
+ tokens
821
+ end
822
+
823
+ # variable-length integer using https://en.wikipedia.org/wiki/LEB128
824
+ # This is also what protobuf uses: https://protobuf.dev/programming-guides/encoding/#varints
825
+ #
826
+ #: () -> Integer
827
+ def load_varuint
828
+ n = (io.getbyte or raise)
829
+ if n < 128
830
+ n
831
+ else
832
+ n -= 128
833
+ shift = 0
834
+ while (b = (io.getbyte or raise)) >= 128
835
+ n += (b - 128) << (shift += 7)
836
+ end
837
+ n + (b << (shift + 7))
838
+ end
839
+ end
840
+
841
+ #: () -> Integer
842
+ def load_varsint
843
+ n = load_varuint
844
+ (n >> 1) ^ (-(n & 1))
845
+ end
846
+
847
+ #: () -> Integer
848
+ def load_integer
849
+ negative = io.getbyte != 0
850
+ length = load_varuint
851
+
852
+ value = 0
853
+ length.times { |index| value |= (load_varuint << (index * 32)) }
854
+
855
+ value = -value if negative
856
+ value
857
+ end
858
+
859
+ #: () -> Float
860
+ def load_double
861
+ (io.read(8) or raise).unpack1("D") #: Float
862
+ end
863
+
864
+ #: () -> bool
865
+ def load_bool
866
+ (io.getbyte or raise) != 0
867
+ end
868
+
869
+ #: () -> Integer
870
+ def load_uint32
871
+ (io.read(4) or raise).unpack1("L") #: Integer
872
+ end
873
+
874
+ #: () -> Integer
875
+ def load_uint64
876
+ (io.read(8) or raise).unpack1("Q") #: Integer
877
+ end
878
+
879
+ #: (Encoding encoding) -> String
880
+ def load_string(encoding)
881
+ (io.read(load_varuint) or raise).force_encoding(encoding).freeze
882
+ end
883
+
884
+ #: (bool freeze) -> Location
885
+ def load_location_object(freeze)
886
+ location = Location.new(source, load_varuint, load_varuint)
887
+ location.freeze if freeze
888
+ location
889
+ end
890
+
891
+ # Load a location object from the serialized data. Note that we are lying
892
+ # about the signature a bit here, because we sometimes load it as a packed
893
+ # integer instead of an object.
894
+ #
895
+ #: (bool freeze) -> Location
896
+ def load_location(freeze)
897
+ return load_location_object(freeze) if freeze
898
+ (load_varuint << 32) | load_varuint #: Location
899
+ end
900
+
901
+ # Load an optional location object from the serialized data if it is
902
+ # present. Note that we are lying about the signature a bit here, because
903
+ # we sometimes load it as a packed integer instead of an object.
904
+ #
905
+ #: (bool freeze) -> Location?
906
+ def load_optional_location(freeze)
907
+ load_location(freeze) if io.getbyte != 0
908
+ end
909
+
910
+ #: (bool freeze) -> Location?
911
+ def load_optional_location_object(freeze)
912
+ load_location_object(freeze) if io.getbyte != 0
913
+ end
914
+
915
+ #: (ConstantPool constant_pool, Encoding encoding) -> Symbol
916
+ def load_constant(constant_pool, encoding)
917
+ index = load_varuint
918
+ constant_pool.get(index - 1, encoding)
919
+ end
920
+
921
+ #: (ConstantPool constant_pool, Encoding encoding) -> Symbol?
922
+ def load_optional_constant(constant_pool, encoding)
923
+ index = load_varuint
924
+ constant_pool.get(index - 1, encoding) if index != 0
925
+ end
926
+
927
+ if RUBY_ENGINE == "ruby"
928
+ # Load the nodes that are serialized before the given offset and return
929
+ # the root. Nodes are serialized in post-order, so the children of each
930
+ # node are the topmost values on the stack, in field order, by the time
931
+ # its record is read.
932
+ #
933
+ #: (ConstantPool constant_pool, Encoding encoding, bool freeze, Integer finish) -> node
934
+ def load_nodes(constant_pool, encoding, freeze, finish)
935
+ stack = [] #: Array[node?]
936
+
937
+ while io.pos < finish
938
+ case (type = io.getbyte)
939
+ when 0
940
+ stack << nil
941
+ when 255
942
+ io.read(8)
943
+ when 1
944
+ node_id = load_varuint
945
+ location = load_location(freeze)
946
+ flags = load_varuint
947
+ field_keyword_loc = load_location(freeze)
948
+ field_old_name = stack.pop #: (GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode)
949
+ field_new_name = stack.pop #: (GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode)
950
+ value = AliasGlobalVariableNode.new(source, node_id, location, flags, field_new_name, field_old_name, field_keyword_loc)
951
+ value.freeze if freeze
952
+ stack << value
953
+ when 2
954
+ node_id = load_varuint
955
+ location = load_location(freeze)
956
+ flags = load_varuint
957
+ field_keyword_loc = load_location(freeze)
958
+ field_old_name = stack.pop #: (SymbolNode | InterpolatedSymbolNode)
959
+ field_new_name = stack.pop #: (SymbolNode | InterpolatedSymbolNode)
960
+ value = AliasMethodNode.new(source, node_id, location, flags, field_new_name, field_old_name, field_keyword_loc)
961
+ value.freeze if freeze
962
+ stack << value
963
+ when 3
964
+ node_id = load_varuint
965
+ location = load_location(freeze)
966
+ flags = load_varuint
967
+ field_operator_loc = load_location(freeze)
968
+ field_right = stack.pop #: Prism::node
969
+ field_left = stack.pop #: Prism::node
970
+ value = AlternationPatternNode.new(source, node_id, location, flags, field_left, field_right, field_operator_loc)
971
+ value.freeze if freeze
972
+ stack << value
973
+ when 4
974
+ node_id = load_varuint
975
+ location = load_location(freeze)
976
+ flags = load_varuint
977
+ field_operator_loc = load_location(freeze)
978
+ field_right = stack.pop #: Prism::node
979
+ field_left = stack.pop #: Prism::node
980
+ value = AndNode.new(source, node_id, location, flags, field_left, field_right, field_operator_loc)
981
+ value.freeze if freeze
982
+ stack << value
983
+ when 5
984
+ node_id = load_varuint
985
+ location = load_location(freeze)
986
+ flags = load_varuint
987
+ arguments_size = load_varuint
988
+ field_arguments = stack.slice!(-arguments_size, arguments_size) #: Array[Prism::node]
989
+ field_arguments.freeze if freeze
990
+ value = ArgumentsNode.new(source, node_id, location, flags, field_arguments)
991
+ value.freeze if freeze
992
+ stack << value
993
+ when 6
994
+ node_id = load_varuint
995
+ location = load_location(freeze)
996
+ flags = load_varuint
997
+ elements_size = load_varuint
998
+ field_opening_loc = load_optional_location(freeze)
999
+ field_closing_loc = load_optional_location(freeze)
1000
+ field_elements = stack.slice!(-elements_size, elements_size) #: Array[Prism::node]
1001
+ field_elements.freeze if freeze
1002
+ value = ArrayNode.new(source, node_id, location, flags, field_elements, field_opening_loc, field_closing_loc)
1003
+ value.freeze if freeze
1004
+ stack << value
1005
+ when 7
1006
+ node_id = load_varuint
1007
+ location = load_location(freeze)
1008
+ flags = load_varuint
1009
+ requireds_size = load_varuint
1010
+ posts_size = load_varuint
1011
+ field_opening_loc = load_optional_location(freeze)
1012
+ field_closing_loc = load_optional_location(freeze)
1013
+ field_posts = stack.slice!(-posts_size, posts_size) #: Array[Prism::node]
1014
+ field_posts.freeze if freeze
1015
+ field_rest = stack.pop #: (ImplicitRestNode | SplatNode)?
1016
+ field_requireds = stack.slice!(-requireds_size, requireds_size) #: Array[Prism::node]
1017
+ field_requireds.freeze if freeze
1018
+ field_constant = stack.pop #: (ConstantPathNode | ConstantReadNode)?
1019
+ value = ArrayPatternNode.new(source, node_id, location, flags, field_constant, field_requireds, field_rest, field_posts, field_opening_loc, field_closing_loc)
1020
+ value.freeze if freeze
1021
+ stack << value
1022
+ when 8
1023
+ node_id = load_varuint
1024
+ location = load_location(freeze)
1025
+ flags = load_varuint
1026
+ field_operator_loc = load_optional_location(freeze)
1027
+ field_value = stack.pop #: Prism::node
1028
+ field_key = stack.pop #: Prism::node
1029
+ value = AssocNode.new(source, node_id, location, flags, field_key, field_value, field_operator_loc)
1030
+ value.freeze if freeze
1031
+ stack << value
1032
+ when 9
1033
+ node_id = load_varuint
1034
+ location = load_location(freeze)
1035
+ flags = load_varuint
1036
+ field_operator_loc = load_location(freeze)
1037
+ field_value = stack.pop #: Prism::node?
1038
+ value = AssocSplatNode.new(source, node_id, location, flags, field_value, field_operator_loc)
1039
+ value.freeze if freeze
1040
+ stack << value
1041
+ when 10
1042
+ node_id = load_varuint
1043
+ location = load_location(freeze)
1044
+ flags = load_varuint
1045
+ field_name = load_constant(constant_pool, encoding)
1046
+ value = BackReferenceReadNode.new(source, node_id, location, flags, field_name)
1047
+ value.freeze if freeze
1048
+ stack << value
1049
+ when 11
1050
+ node_id = load_varuint
1051
+ location = load_location(freeze)
1052
+ flags = load_varuint
1053
+ field_begin_keyword_loc = load_optional_location(freeze)
1054
+ field_end_keyword_loc = load_optional_location(freeze)
1055
+ field_ensure_clause = stack.pop #: EnsureNode?
1056
+ field_else_clause = stack.pop #: ElseNode?
1057
+ field_rescue_clause = stack.pop #: RescueNode?
1058
+ field_statements = stack.pop #: StatementsNode?
1059
+ value = BeginNode.new(source, node_id, location, flags, field_begin_keyword_loc, field_statements, field_rescue_clause, field_else_clause, field_ensure_clause, field_end_keyword_loc)
1060
+ value.freeze if freeze
1061
+ stack << value
1062
+ when 12
1063
+ node_id = load_varuint
1064
+ location = load_location(freeze)
1065
+ flags = load_varuint
1066
+ field_operator_loc = load_location(freeze)
1067
+ field_expression = stack.pop #: Prism::node?
1068
+ value = BlockArgumentNode.new(source, node_id, location, flags, field_expression, field_operator_loc)
1069
+ value.freeze if freeze
1070
+ stack << value
1071
+ when 13
1072
+ node_id = load_varuint
1073
+ location = load_location(freeze)
1074
+ flags = load_varuint
1075
+ field_name = load_constant(constant_pool, encoding)
1076
+ value = BlockLocalVariableNode.new(source, node_id, location, flags, field_name)
1077
+ value.freeze if freeze
1078
+ stack << value
1079
+ when 14
1080
+ node_id = load_varuint
1081
+ location = load_location(freeze)
1082
+ flags = load_varuint
1083
+ field_locals = Array.new(load_varuint) { load_constant(constant_pool, encoding) }
1084
+ field_locals.freeze if freeze
1085
+ field_opening_loc = load_location(freeze)
1086
+ field_closing_loc = load_location(freeze)
1087
+ field_body = stack.pop #: (StatementsNode | BeginNode)?
1088
+ field_parameters = stack.pop #: (BlockParametersNode | NumberedParametersNode | ItParametersNode)?
1089
+ value = BlockNode.new(source, node_id, location, flags, field_locals, field_parameters, field_body, field_opening_loc, field_closing_loc)
1090
+ value.freeze if freeze
1091
+ stack << value
1092
+ when 15
1093
+ node_id = load_varuint
1094
+ location = load_location(freeze)
1095
+ flags = load_varuint
1096
+ field_name = load_optional_constant(constant_pool, encoding)
1097
+ field_name_loc = load_optional_location(freeze)
1098
+ field_operator_loc = load_location(freeze)
1099
+ value = BlockParameterNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc)
1100
+ value.freeze if freeze
1101
+ stack << value
1102
+ when 16
1103
+ node_id = load_varuint
1104
+ location = load_location(freeze)
1105
+ flags = load_varuint
1106
+ locals_size = load_varuint
1107
+ field_opening_loc = load_optional_location(freeze)
1108
+ field_closing_loc = load_optional_location(freeze)
1109
+ field_locals = stack.slice!(-locals_size, locals_size) #: Array[BlockLocalVariableNode]
1110
+ field_locals.freeze if freeze
1111
+ field_parameters = stack.pop #: ParametersNode?
1112
+ value = BlockParametersNode.new(source, node_id, location, flags, field_parameters, field_locals, field_opening_loc, field_closing_loc)
1113
+ value.freeze if freeze
1114
+ stack << value
1115
+ when 17
1116
+ node_id = load_varuint
1117
+ location = load_location(freeze)
1118
+ flags = load_varuint
1119
+ field_keyword_loc = load_location(freeze)
1120
+ field_arguments = stack.pop #: ArgumentsNode?
1121
+ value = BreakNode.new(source, node_id, location, flags, field_arguments, field_keyword_loc)
1122
+ value.freeze if freeze
1123
+ stack << value
1124
+ when 18
1125
+ node_id = load_varuint
1126
+ location = load_location(freeze)
1127
+ flags = load_varuint
1128
+ field_call_operator_loc = load_optional_location(freeze)
1129
+ field_message_loc = load_optional_location(freeze)
1130
+ field_read_name = load_constant(constant_pool, encoding)
1131
+ field_write_name = load_constant(constant_pool, encoding)
1132
+ field_operator_loc = load_location(freeze)
1133
+ field_value = stack.pop #: Prism::node
1134
+ field_receiver = stack.pop #: Prism::node?
1135
+ value = CallAndWriteNode.new(source, node_id, location, flags, field_receiver, field_call_operator_loc, field_message_loc, field_read_name, field_write_name, field_operator_loc, field_value)
1136
+ value.freeze if freeze
1137
+ stack << value
1138
+ when 19
1139
+ node_id = load_varuint
1140
+ location = load_location(freeze)
1141
+ flags = load_varuint
1142
+ field_call_operator_loc = load_optional_location(freeze)
1143
+ field_name = load_constant(constant_pool, encoding)
1144
+ field_message_loc = load_optional_location(freeze)
1145
+ field_opening_loc = load_optional_location(freeze)
1146
+ field_closing_loc = load_optional_location(freeze)
1147
+ field_equal_loc = load_optional_location(freeze)
1148
+ field_block = stack.pop #: (BlockNode | BlockArgumentNode)?
1149
+ field_arguments = stack.pop #: ArgumentsNode?
1150
+ field_receiver = stack.pop #: Prism::node?
1151
+ value = CallNode.new(source, node_id, location, flags, field_receiver, field_call_operator_loc, field_name, field_message_loc, field_opening_loc, field_arguments, field_closing_loc, field_equal_loc, field_block)
1152
+ value.freeze if freeze
1153
+ stack << value
1154
+ when 20
1155
+ node_id = load_varuint
1156
+ location = load_location(freeze)
1157
+ flags = load_varuint
1158
+ field_call_operator_loc = load_optional_location(freeze)
1159
+ field_message_loc = load_optional_location(freeze)
1160
+ field_read_name = load_constant(constant_pool, encoding)
1161
+ field_write_name = load_constant(constant_pool, encoding)
1162
+ field_binary_operator = load_constant(constant_pool, encoding)
1163
+ field_binary_operator_loc = load_location(freeze)
1164
+ field_value = stack.pop #: Prism::node
1165
+ field_receiver = stack.pop #: Prism::node?
1166
+ value = CallOperatorWriteNode.new(source, node_id, location, flags, field_receiver, field_call_operator_loc, field_message_loc, field_read_name, field_write_name, field_binary_operator, field_binary_operator_loc, field_value)
1167
+ value.freeze if freeze
1168
+ stack << value
1169
+ when 21
1170
+ node_id = load_varuint
1171
+ location = load_location(freeze)
1172
+ flags = load_varuint
1173
+ field_call_operator_loc = load_optional_location(freeze)
1174
+ field_message_loc = load_optional_location(freeze)
1175
+ field_read_name = load_constant(constant_pool, encoding)
1176
+ field_write_name = load_constant(constant_pool, encoding)
1177
+ field_operator_loc = load_location(freeze)
1178
+ field_value = stack.pop #: Prism::node
1179
+ field_receiver = stack.pop #: Prism::node?
1180
+ value = CallOrWriteNode.new(source, node_id, location, flags, field_receiver, field_call_operator_loc, field_message_loc, field_read_name, field_write_name, field_operator_loc, field_value)
1181
+ value.freeze if freeze
1182
+ stack << value
1183
+ when 22
1184
+ node_id = load_varuint
1185
+ location = load_location(freeze)
1186
+ flags = load_varuint
1187
+ field_call_operator_loc = load_location(freeze)
1188
+ field_name = load_constant(constant_pool, encoding)
1189
+ field_message_loc = load_location(freeze)
1190
+ field_receiver = stack.pop #: Prism::node
1191
+ value = CallTargetNode.new(source, node_id, location, flags, field_receiver, field_call_operator_loc, field_name, field_message_loc)
1192
+ value.freeze if freeze
1193
+ stack << value
1194
+ when 23
1195
+ node_id = load_varuint
1196
+ location = load_location(freeze)
1197
+ flags = load_varuint
1198
+ field_operator_loc = load_location(freeze)
1199
+ field_target = stack.pop #: LocalVariableTargetNode
1200
+ field_value = stack.pop #: Prism::node
1201
+ value = CapturePatternNode.new(source, node_id, location, flags, field_value, field_target, field_operator_loc)
1202
+ value.freeze if freeze
1203
+ stack << value
1204
+ when 24
1205
+ node_id = load_varuint
1206
+ location = load_location(freeze)
1207
+ flags = load_varuint
1208
+ conditions_size = load_varuint
1209
+ field_case_keyword_loc = load_location(freeze)
1210
+ field_end_keyword_loc = load_location(freeze)
1211
+ field_else_clause = stack.pop #: ElseNode?
1212
+ field_conditions = stack.slice!(-conditions_size, conditions_size) #: Array[InNode]
1213
+ field_conditions.freeze if freeze
1214
+ field_predicate = stack.pop #: Prism::node?
1215
+ value = CaseMatchNode.new(source, node_id, location, flags, field_predicate, field_conditions, field_else_clause, field_case_keyword_loc, field_end_keyword_loc)
1216
+ value.freeze if freeze
1217
+ stack << value
1218
+ when 25
1219
+ node_id = load_varuint
1220
+ location = load_location(freeze)
1221
+ flags = load_varuint
1222
+ conditions_size = load_varuint
1223
+ field_case_keyword_loc = load_location(freeze)
1224
+ field_end_keyword_loc = load_location(freeze)
1225
+ field_else_clause = stack.pop #: ElseNode?
1226
+ field_conditions = stack.slice!(-conditions_size, conditions_size) #: Array[WhenNode]
1227
+ field_conditions.freeze if freeze
1228
+ field_predicate = stack.pop #: Prism::node?
1229
+ value = CaseNode.new(source, node_id, location, flags, field_predicate, field_conditions, field_else_clause, field_case_keyword_loc, field_end_keyword_loc)
1230
+ value.freeze if freeze
1231
+ stack << value
1232
+ when 26
1233
+ node_id = load_varuint
1234
+ location = load_location(freeze)
1235
+ flags = load_varuint
1236
+ field_locals = Array.new(load_varuint) { load_constant(constant_pool, encoding) }
1237
+ field_locals.freeze if freeze
1238
+ field_class_keyword_loc = load_location(freeze)
1239
+ field_inheritance_operator_loc = load_optional_location(freeze)
1240
+ field_end_keyword_loc = load_location(freeze)
1241
+ field_name = load_constant(constant_pool, encoding)
1242
+ field_body = stack.pop #: (StatementsNode | BeginNode)?
1243
+ field_superclass = stack.pop #: Prism::node?
1244
+ field_constant_path = stack.pop #: (ConstantReadNode | ConstantPathNode)
1245
+ value = ClassNode.new(source, node_id, location, flags, field_locals, field_class_keyword_loc, field_constant_path, field_inheritance_operator_loc, field_superclass, field_body, field_end_keyword_loc, field_name)
1246
+ value.freeze if freeze
1247
+ stack << value
1248
+ when 27
1249
+ node_id = load_varuint
1250
+ location = load_location(freeze)
1251
+ flags = load_varuint
1252
+ field_name = load_constant(constant_pool, encoding)
1253
+ field_name_loc = load_location(freeze)
1254
+ field_operator_loc = load_location(freeze)
1255
+ field_value = stack.pop #: Prism::node
1256
+ value = ClassVariableAndWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
1257
+ value.freeze if freeze
1258
+ stack << value
1259
+ when 28
1260
+ node_id = load_varuint
1261
+ location = load_location(freeze)
1262
+ flags = load_varuint
1263
+ field_name = load_constant(constant_pool, encoding)
1264
+ field_name_loc = load_location(freeze)
1265
+ field_binary_operator_loc = load_location(freeze)
1266
+ field_binary_operator = load_constant(constant_pool, encoding)
1267
+ field_value = stack.pop #: Prism::node
1268
+ value = ClassVariableOperatorWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_binary_operator_loc, field_value, field_binary_operator)
1269
+ value.freeze if freeze
1270
+ stack << value
1271
+ when 29
1272
+ node_id = load_varuint
1273
+ location = load_location(freeze)
1274
+ flags = load_varuint
1275
+ field_name = load_constant(constant_pool, encoding)
1276
+ field_name_loc = load_location(freeze)
1277
+ field_operator_loc = load_location(freeze)
1278
+ field_value = stack.pop #: Prism::node
1279
+ value = ClassVariableOrWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
1280
+ value.freeze if freeze
1281
+ stack << value
1282
+ when 30
1283
+ node_id = load_varuint
1284
+ location = load_location(freeze)
1285
+ flags = load_varuint
1286
+ field_name = load_constant(constant_pool, encoding)
1287
+ value = ClassVariableReadNode.new(source, node_id, location, flags, field_name)
1288
+ value.freeze if freeze
1289
+ stack << value
1290
+ when 31
1291
+ node_id = load_varuint
1292
+ location = load_location(freeze)
1293
+ flags = load_varuint
1294
+ field_name = load_constant(constant_pool, encoding)
1295
+ value = ClassVariableTargetNode.new(source, node_id, location, flags, field_name)
1296
+ value.freeze if freeze
1297
+ stack << value
1298
+ when 32
1299
+ node_id = load_varuint
1300
+ location = load_location(freeze)
1301
+ flags = load_varuint
1302
+ field_name = load_constant(constant_pool, encoding)
1303
+ field_name_loc = load_location(freeze)
1304
+ field_operator_loc = load_location(freeze)
1305
+ field_value = stack.pop #: Prism::node
1306
+ value = ClassVariableWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_value, field_operator_loc)
1307
+ value.freeze if freeze
1308
+ stack << value
1309
+ when 33
1310
+ node_id = load_varuint
1311
+ location = load_location(freeze)
1312
+ flags = load_varuint
1313
+ field_name = load_constant(constant_pool, encoding)
1314
+ field_name_loc = load_location(freeze)
1315
+ field_operator_loc = load_location(freeze)
1316
+ field_value = stack.pop #: Prism::node
1317
+ value = ConstantAndWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
1318
+ value.freeze if freeze
1319
+ stack << value
1320
+ when 34
1321
+ node_id = load_varuint
1322
+ location = load_location(freeze)
1323
+ flags = load_varuint
1324
+ field_name = load_constant(constant_pool, encoding)
1325
+ field_name_loc = load_location(freeze)
1326
+ field_binary_operator_loc = load_location(freeze)
1327
+ field_binary_operator = load_constant(constant_pool, encoding)
1328
+ field_value = stack.pop #: Prism::node
1329
+ value = ConstantOperatorWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_binary_operator_loc, field_value, field_binary_operator)
1330
+ value.freeze if freeze
1331
+ stack << value
1332
+ when 35
1333
+ node_id = load_varuint
1334
+ location = load_location(freeze)
1335
+ flags = load_varuint
1336
+ field_name = load_constant(constant_pool, encoding)
1337
+ field_name_loc = load_location(freeze)
1338
+ field_operator_loc = load_location(freeze)
1339
+ field_value = stack.pop #: Prism::node
1340
+ value = ConstantOrWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
1341
+ value.freeze if freeze
1342
+ stack << value
1343
+ when 36
1344
+ node_id = load_varuint
1345
+ location = load_location(freeze)
1346
+ flags = load_varuint
1347
+ field_operator_loc = load_location(freeze)
1348
+ field_value = stack.pop #: Prism::node
1349
+ field_target = stack.pop #: ConstantPathNode
1350
+ value = ConstantPathAndWriteNode.new(source, node_id, location, flags, field_target, field_operator_loc, field_value)
1351
+ value.freeze if freeze
1352
+ stack << value
1353
+ when 37
1354
+ node_id = load_varuint
1355
+ location = load_location(freeze)
1356
+ flags = load_varuint
1357
+ field_name = load_optional_constant(constant_pool, encoding)
1358
+ field_delimiter_loc = load_location(freeze)
1359
+ field_name_loc = load_location(freeze)
1360
+ field_parent = stack.pop #: Prism::node?
1361
+ value = ConstantPathNode.new(source, node_id, location, flags, field_parent, field_name, field_delimiter_loc, field_name_loc)
1362
+ value.freeze if freeze
1363
+ stack << value
1364
+ when 38
1365
+ node_id = load_varuint
1366
+ location = load_location(freeze)
1367
+ flags = load_varuint
1368
+ field_binary_operator_loc = load_location(freeze)
1369
+ field_binary_operator = load_constant(constant_pool, encoding)
1370
+ field_value = stack.pop #: Prism::node
1371
+ field_target = stack.pop #: ConstantPathNode
1372
+ value = ConstantPathOperatorWriteNode.new(source, node_id, location, flags, field_target, field_binary_operator_loc, field_value, field_binary_operator)
1373
+ value.freeze if freeze
1374
+ stack << value
1375
+ when 39
1376
+ node_id = load_varuint
1377
+ location = load_location(freeze)
1378
+ flags = load_varuint
1379
+ field_operator_loc = load_location(freeze)
1380
+ field_value = stack.pop #: Prism::node
1381
+ field_target = stack.pop #: ConstantPathNode
1382
+ value = ConstantPathOrWriteNode.new(source, node_id, location, flags, field_target, field_operator_loc, field_value)
1383
+ value.freeze if freeze
1384
+ stack << value
1385
+ when 40
1386
+ node_id = load_varuint
1387
+ location = load_location(freeze)
1388
+ flags = load_varuint
1389
+ field_name = load_optional_constant(constant_pool, encoding)
1390
+ field_delimiter_loc = load_location(freeze)
1391
+ field_name_loc = load_location(freeze)
1392
+ field_parent = stack.pop #: Prism::node?
1393
+ value = ConstantPathTargetNode.new(source, node_id, location, flags, field_parent, field_name, field_delimiter_loc, field_name_loc)
1394
+ value.freeze if freeze
1395
+ stack << value
1396
+ when 41
1397
+ node_id = load_varuint
1398
+ location = load_location(freeze)
1399
+ flags = load_varuint
1400
+ field_operator_loc = load_location(freeze)
1401
+ field_value = stack.pop #: Prism::node
1402
+ field_target = stack.pop #: ConstantPathNode
1403
+ value = ConstantPathWriteNode.new(source, node_id, location, flags, field_target, field_operator_loc, field_value)
1404
+ value.freeze if freeze
1405
+ stack << value
1406
+ when 42
1407
+ node_id = load_varuint
1408
+ location = load_location(freeze)
1409
+ flags = load_varuint
1410
+ field_name = load_constant(constant_pool, encoding)
1411
+ value = ConstantReadNode.new(source, node_id, location, flags, field_name)
1412
+ value.freeze if freeze
1413
+ stack << value
1414
+ when 43
1415
+ node_id = load_varuint
1416
+ location = load_location(freeze)
1417
+ flags = load_varuint
1418
+ field_name = load_constant(constant_pool, encoding)
1419
+ value = ConstantTargetNode.new(source, node_id, location, flags, field_name)
1420
+ value.freeze if freeze
1421
+ stack << value
1422
+ when 44
1423
+ node_id = load_varuint
1424
+ location = load_location(freeze)
1425
+ flags = load_varuint
1426
+ field_name = load_constant(constant_pool, encoding)
1427
+ field_name_loc = load_location(freeze)
1428
+ field_operator_loc = load_location(freeze)
1429
+ field_value = stack.pop #: Prism::node
1430
+ value = ConstantWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_value, field_operator_loc)
1431
+ value.freeze if freeze
1432
+ stack << value
1433
+ when 45
1434
+ node_id = load_varuint
1435
+ location = load_location(freeze)
1436
+ flags = load_varuint
1437
+ field_name = load_constant(constant_pool, encoding)
1438
+ field_name_loc = load_location(freeze)
1439
+ field_locals = Array.new(load_varuint) { load_constant(constant_pool, encoding) }
1440
+ field_locals.freeze if freeze
1441
+ field_def_keyword_loc = load_location(freeze)
1442
+ field_operator_loc = load_optional_location(freeze)
1443
+ field_lparen_loc = load_optional_location(freeze)
1444
+ field_rparen_loc = load_optional_location(freeze)
1445
+ field_equal_loc = load_optional_location(freeze)
1446
+ field_end_keyword_loc = load_optional_location(freeze)
1447
+ field_body = stack.pop #: (StatementsNode | BeginNode)?
1448
+ field_parameters = stack.pop #: ParametersNode?
1449
+ field_receiver = stack.pop #: Prism::node?
1450
+ value = DefNode.new(source, node_id, location, flags, field_name, field_name_loc, field_receiver, field_parameters, field_body, field_locals, field_def_keyword_loc, field_operator_loc, field_lparen_loc, field_rparen_loc, field_equal_loc, field_end_keyword_loc)
1451
+ value.freeze if freeze
1452
+ stack << value
1453
+ when 46
1454
+ node_id = load_varuint
1455
+ location = load_location(freeze)
1456
+ flags = load_varuint
1457
+ field_lparen_loc = load_optional_location(freeze)
1458
+ field_rparen_loc = load_optional_location(freeze)
1459
+ field_keyword_loc = load_location(freeze)
1460
+ field_value = stack.pop #: Prism::node
1461
+ value = DefinedNode.new(source, node_id, location, flags, field_lparen_loc, field_value, field_rparen_loc, field_keyword_loc)
1462
+ value.freeze if freeze
1463
+ stack << value
1464
+ when 47
1465
+ node_id = load_varuint
1466
+ location = load_location(freeze)
1467
+ flags = load_varuint
1468
+ field_else_keyword_loc = load_location(freeze)
1469
+ field_end_keyword_loc = load_optional_location(freeze)
1470
+ field_statements = stack.pop #: StatementsNode?
1471
+ value = ElseNode.new(source, node_id, location, flags, field_else_keyword_loc, field_statements, field_end_keyword_loc)
1472
+ value.freeze if freeze
1473
+ stack << value
1474
+ when 48
1475
+ node_id = load_varuint
1476
+ location = load_location(freeze)
1477
+ flags = load_varuint
1478
+ field_opening_loc = load_location(freeze)
1479
+ field_closing_loc = load_location(freeze)
1480
+ field_statements = stack.pop #: StatementsNode?
1481
+ value = EmbeddedStatementsNode.new(source, node_id, location, flags, field_opening_loc, field_statements, field_closing_loc)
1482
+ value.freeze if freeze
1483
+ stack << value
1484
+ when 49
1485
+ node_id = load_varuint
1486
+ location = load_location(freeze)
1487
+ flags = load_varuint
1488
+ field_operator_loc = load_location(freeze)
1489
+ field_variable = stack.pop #: (InstanceVariableReadNode | ClassVariableReadNode | GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode)
1490
+ value = EmbeddedVariableNode.new(source, node_id, location, flags, field_operator_loc, field_variable)
1491
+ value.freeze if freeze
1492
+ stack << value
1493
+ when 50
1494
+ node_id = load_varuint
1495
+ location = load_location(freeze)
1496
+ flags = load_varuint
1497
+ field_ensure_keyword_loc = load_location(freeze)
1498
+ field_end_keyword_loc = load_location(freeze)
1499
+ field_statements = stack.pop #: StatementsNode?
1500
+ value = EnsureNode.new(source, node_id, location, flags, field_ensure_keyword_loc, field_statements, field_end_keyword_loc)
1501
+ value.freeze if freeze
1502
+ stack << value
1503
+ when 51
1504
+ node_id = load_varuint
1505
+ location = load_location(freeze)
1506
+ flags = load_varuint
1507
+ field_unexpected = stack.pop #: Prism::node?
1508
+ value = ErrorRecoveryNode.new(source, node_id, location, flags, field_unexpected)
1509
+ value.freeze if freeze
1510
+ stack << value
1511
+ when 52
1512
+ node_id = load_varuint
1513
+ location = load_location(freeze)
1514
+ flags = load_varuint
1515
+ value = FalseNode.new(source, node_id, location, flags)
1516
+ value.freeze if freeze
1517
+ stack << value
1518
+ when 53
1519
+ node_id = load_varuint
1520
+ location = load_location(freeze)
1521
+ flags = load_varuint
1522
+ requireds_size = load_varuint
1523
+ field_opening_loc = load_optional_location(freeze)
1524
+ field_closing_loc = load_optional_location(freeze)
1525
+ field_right = stack.pop #: SplatNode
1526
+ field_requireds = stack.slice!(-requireds_size, requireds_size) #: Array[Prism::node]
1527
+ field_requireds.freeze if freeze
1528
+ field_left = stack.pop #: SplatNode
1529
+ field_constant = stack.pop #: (ConstantPathNode | ConstantReadNode)?
1530
+ value = FindPatternNode.new(source, node_id, location, flags, field_constant, field_left, field_requireds, field_right, field_opening_loc, field_closing_loc)
1531
+ value.freeze if freeze
1532
+ stack << value
1533
+ when 54
1534
+ node_id = load_varuint
1535
+ location = load_location(freeze)
1536
+ flags = load_varuint
1537
+ field_operator_loc = load_location(freeze)
1538
+ field_right = stack.pop #: Prism::node?
1539
+ field_left = stack.pop #: Prism::node?
1540
+ value = FlipFlopNode.new(source, node_id, location, flags, field_left, field_right, field_operator_loc)
1541
+ value.freeze if freeze
1542
+ stack << value
1543
+ when 55
1544
+ node_id = load_varuint
1545
+ location = load_location(freeze)
1546
+ flags = load_varuint
1547
+ field_value = load_double
1548
+ value = FloatNode.new(source, node_id, location, flags, field_value)
1549
+ value.freeze if freeze
1550
+ stack << value
1551
+ when 56
1552
+ node_id = load_varuint
1553
+ location = load_location(freeze)
1554
+ flags = load_varuint
1555
+ field_for_keyword_loc = load_location(freeze)
1556
+ field_in_keyword_loc = load_location(freeze)
1557
+ field_do_keyword_loc = load_optional_location(freeze)
1558
+ field_end_keyword_loc = load_location(freeze)
1559
+ field_statements = stack.pop #: StatementsNode?
1560
+ field_collection = stack.pop #: Prism::node
1561
+ field_index = stack.pop #: (LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode)
1562
+ value = ForNode.new(source, node_id, location, flags, field_index, field_collection, field_statements, field_for_keyword_loc, field_in_keyword_loc, field_do_keyword_loc, field_end_keyword_loc)
1563
+ value.freeze if freeze
1564
+ stack << value
1565
+ when 57
1566
+ node_id = load_varuint
1567
+ location = load_location(freeze)
1568
+ flags = load_varuint
1569
+ value = ForwardingArgumentsNode.new(source, node_id, location, flags)
1570
+ value.freeze if freeze
1571
+ stack << value
1572
+ when 58
1573
+ node_id = load_varuint
1574
+ location = load_location(freeze)
1575
+ flags = load_varuint
1576
+ value = ForwardingParameterNode.new(source, node_id, location, flags)
1577
+ value.freeze if freeze
1578
+ stack << value
1579
+ when 59
1580
+ node_id = load_varuint
1581
+ location = load_location(freeze)
1582
+ flags = load_varuint
1583
+ field_keyword_loc = load_location(freeze)
1584
+ field_block = stack.pop #: BlockNode?
1585
+ value = ForwardingSuperNode.new(source, node_id, location, flags, field_keyword_loc, field_block)
1586
+ value.freeze if freeze
1587
+ stack << value
1588
+ when 60
1589
+ node_id = load_varuint
1590
+ location = load_location(freeze)
1591
+ flags = load_varuint
1592
+ field_name = load_constant(constant_pool, encoding)
1593
+ field_name_loc = load_location(freeze)
1594
+ field_operator_loc = load_location(freeze)
1595
+ field_value = stack.pop #: Prism::node
1596
+ value = GlobalVariableAndWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
1597
+ value.freeze if freeze
1598
+ stack << value
1599
+ when 61
1600
+ node_id = load_varuint
1601
+ location = load_location(freeze)
1602
+ flags = load_varuint
1603
+ field_name = load_constant(constant_pool, encoding)
1604
+ field_name_loc = load_location(freeze)
1605
+ field_binary_operator_loc = load_location(freeze)
1606
+ field_binary_operator = load_constant(constant_pool, encoding)
1607
+ field_value = stack.pop #: Prism::node
1608
+ value = GlobalVariableOperatorWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_binary_operator_loc, field_value, field_binary_operator)
1609
+ value.freeze if freeze
1610
+ stack << value
1611
+ when 62
1612
+ node_id = load_varuint
1613
+ location = load_location(freeze)
1614
+ flags = load_varuint
1615
+ field_name = load_constant(constant_pool, encoding)
1616
+ field_name_loc = load_location(freeze)
1617
+ field_operator_loc = load_location(freeze)
1618
+ field_value = stack.pop #: Prism::node
1619
+ value = GlobalVariableOrWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
1620
+ value.freeze if freeze
1621
+ stack << value
1622
+ when 63
1623
+ node_id = load_varuint
1624
+ location = load_location(freeze)
1625
+ flags = load_varuint
1626
+ field_name = load_constant(constant_pool, encoding)
1627
+ value = GlobalVariableReadNode.new(source, node_id, location, flags, field_name)
1628
+ value.freeze if freeze
1629
+ stack << value
1630
+ when 64
1631
+ node_id = load_varuint
1632
+ location = load_location(freeze)
1633
+ flags = load_varuint
1634
+ field_name = load_constant(constant_pool, encoding)
1635
+ value = GlobalVariableTargetNode.new(source, node_id, location, flags, field_name)
1636
+ value.freeze if freeze
1637
+ stack << value
1638
+ when 65
1639
+ node_id = load_varuint
1640
+ location = load_location(freeze)
1641
+ flags = load_varuint
1642
+ field_name = load_constant(constant_pool, encoding)
1643
+ field_name_loc = load_location(freeze)
1644
+ field_operator_loc = load_location(freeze)
1645
+ field_value = stack.pop #: Prism::node
1646
+ value = GlobalVariableWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_value, field_operator_loc)
1647
+ value.freeze if freeze
1648
+ stack << value
1649
+ when 66
1650
+ node_id = load_varuint
1651
+ location = load_location(freeze)
1652
+ flags = load_varuint
1653
+ field_opening_loc = load_location(freeze)
1654
+ elements_size = load_varuint
1655
+ field_closing_loc = load_location(freeze)
1656
+ field_elements = stack.slice!(-elements_size, elements_size) #: Array[AssocNode | AssocSplatNode]
1657
+ field_elements.freeze if freeze
1658
+ value = HashNode.new(source, node_id, location, flags, field_opening_loc, field_elements, field_closing_loc)
1659
+ value.freeze if freeze
1660
+ stack << value
1661
+ when 67
1662
+ node_id = load_varuint
1663
+ location = load_location(freeze)
1664
+ flags = load_varuint
1665
+ elements_size = load_varuint
1666
+ field_opening_loc = load_optional_location(freeze)
1667
+ field_closing_loc = load_optional_location(freeze)
1668
+ field_rest = stack.pop #: (AssocSplatNode | NoKeywordsParameterNode)?
1669
+ field_elements = stack.slice!(-elements_size, elements_size) #: Array[AssocNode]
1670
+ field_elements.freeze if freeze
1671
+ field_constant = stack.pop #: (ConstantPathNode | ConstantReadNode)?
1672
+ value = HashPatternNode.new(source, node_id, location, flags, field_constant, field_elements, field_rest, field_opening_loc, field_closing_loc)
1673
+ value.freeze if freeze
1674
+ stack << value
1675
+ when 68
1676
+ node_id = load_varuint
1677
+ location = load_location(freeze)
1678
+ flags = load_varuint
1679
+ field_if_keyword_loc = load_optional_location(freeze)
1680
+ field_then_keyword_loc = load_optional_location(freeze)
1681
+ field_end_keyword_loc = load_optional_location(freeze)
1682
+ field_subsequent = stack.pop #: (ElseNode | IfNode)?
1683
+ field_statements = stack.pop #: StatementsNode?
1684
+ field_predicate = stack.pop #: Prism::node
1685
+ value = IfNode.new(source, node_id, location, flags, field_if_keyword_loc, field_predicate, field_then_keyword_loc, field_statements, field_subsequent, field_end_keyword_loc)
1686
+ value.freeze if freeze
1687
+ stack << value
1688
+ when 69
1689
+ node_id = load_varuint
1690
+ location = load_location(freeze)
1691
+ flags = load_varuint
1692
+ field_numeric = stack.pop #: (FloatNode | IntegerNode | RationalNode)
1693
+ value = ImaginaryNode.new(source, node_id, location, flags, field_numeric)
1694
+ value.freeze if freeze
1695
+ stack << value
1696
+ when 70
1697
+ node_id = load_varuint
1698
+ location = load_location(freeze)
1699
+ flags = load_varuint
1700
+ field_value = stack.pop #: (LocalVariableReadNode | CallNode | ConstantReadNode | LocalVariableTargetNode)
1701
+ value = ImplicitNode.new(source, node_id, location, flags, field_value)
1702
+ value.freeze if freeze
1703
+ stack << value
1704
+ when 71
1705
+ node_id = load_varuint
1706
+ location = load_location(freeze)
1707
+ flags = load_varuint
1708
+ value = ImplicitRestNode.new(source, node_id, location, flags)
1709
+ value.freeze if freeze
1710
+ stack << value
1711
+ when 72
1712
+ node_id = load_varuint
1713
+ location = load_location(freeze)
1714
+ flags = load_varuint
1715
+ field_in_keyword_loc = load_location(freeze)
1716
+ field_then_keyword_loc = load_optional_location(freeze)
1717
+ field_statements = stack.pop #: StatementsNode?
1718
+ field_pattern = stack.pop #: Prism::node
1719
+ value = InNode.new(source, node_id, location, flags, field_pattern, field_statements, field_in_keyword_loc, field_then_keyword_loc)
1720
+ value.freeze if freeze
1721
+ stack << value
1722
+ when 73
1723
+ node_id = load_varuint
1724
+ location = load_location(freeze)
1725
+ flags = load_varuint
1726
+ field_call_operator_loc = load_optional_location(freeze)
1727
+ field_opening_loc = load_location(freeze)
1728
+ field_closing_loc = load_location(freeze)
1729
+ field_operator_loc = load_location(freeze)
1730
+ field_value = stack.pop #: Prism::node
1731
+ field_block = stack.pop #: BlockArgumentNode?
1732
+ field_arguments = stack.pop #: ArgumentsNode?
1733
+ field_receiver = stack.pop #: Prism::node?
1734
+ value = IndexAndWriteNode.new(source, node_id, location, flags, field_receiver, field_call_operator_loc, field_opening_loc, field_arguments, field_closing_loc, field_block, field_operator_loc, field_value)
1735
+ value.freeze if freeze
1736
+ stack << value
1737
+ when 74
1738
+ node_id = load_varuint
1739
+ location = load_location(freeze)
1740
+ flags = load_varuint
1741
+ field_call_operator_loc = load_optional_location(freeze)
1742
+ field_opening_loc = load_location(freeze)
1743
+ field_closing_loc = load_location(freeze)
1744
+ field_binary_operator = load_constant(constant_pool, encoding)
1745
+ field_binary_operator_loc = load_location(freeze)
1746
+ field_value = stack.pop #: Prism::node
1747
+ field_block = stack.pop #: BlockArgumentNode?
1748
+ field_arguments = stack.pop #: ArgumentsNode?
1749
+ field_receiver = stack.pop #: Prism::node?
1750
+ value = IndexOperatorWriteNode.new(source, node_id, location, flags, field_receiver, field_call_operator_loc, field_opening_loc, field_arguments, field_closing_loc, field_block, field_binary_operator, field_binary_operator_loc, field_value)
1751
+ value.freeze if freeze
1752
+ stack << value
1753
+ when 75
1754
+ node_id = load_varuint
1755
+ location = load_location(freeze)
1756
+ flags = load_varuint
1757
+ field_call_operator_loc = load_optional_location(freeze)
1758
+ field_opening_loc = load_location(freeze)
1759
+ field_closing_loc = load_location(freeze)
1760
+ field_operator_loc = load_location(freeze)
1761
+ field_value = stack.pop #: Prism::node
1762
+ field_block = stack.pop #: BlockArgumentNode?
1763
+ field_arguments = stack.pop #: ArgumentsNode?
1764
+ field_receiver = stack.pop #: Prism::node?
1765
+ value = IndexOrWriteNode.new(source, node_id, location, flags, field_receiver, field_call_operator_loc, field_opening_loc, field_arguments, field_closing_loc, field_block, field_operator_loc, field_value)
1766
+ value.freeze if freeze
1767
+ stack << value
1768
+ when 76
1769
+ node_id = load_varuint
1770
+ location = load_location(freeze)
1771
+ flags = load_varuint
1772
+ field_opening_loc = load_location(freeze)
1773
+ field_closing_loc = load_location(freeze)
1774
+ field_block = stack.pop #: BlockArgumentNode?
1775
+ field_arguments = stack.pop #: ArgumentsNode?
1776
+ field_receiver = stack.pop #: Prism::node
1777
+ value = IndexTargetNode.new(source, node_id, location, flags, field_receiver, field_opening_loc, field_arguments, field_closing_loc, field_block)
1778
+ value.freeze if freeze
1779
+ stack << value
1780
+ when 77
1781
+ node_id = load_varuint
1782
+ location = load_location(freeze)
1783
+ flags = load_varuint
1784
+ field_name = load_constant(constant_pool, encoding)
1785
+ field_name_loc = load_location(freeze)
1786
+ field_operator_loc = load_location(freeze)
1787
+ field_value = stack.pop #: Prism::node
1788
+ value = InstanceVariableAndWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
1789
+ value.freeze if freeze
1790
+ stack << value
1791
+ when 78
1792
+ node_id = load_varuint
1793
+ location = load_location(freeze)
1794
+ flags = load_varuint
1795
+ field_name = load_constant(constant_pool, encoding)
1796
+ field_name_loc = load_location(freeze)
1797
+ field_binary_operator_loc = load_location(freeze)
1798
+ field_binary_operator = load_constant(constant_pool, encoding)
1799
+ field_value = stack.pop #: Prism::node
1800
+ value = InstanceVariableOperatorWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_binary_operator_loc, field_value, field_binary_operator)
1801
+ value.freeze if freeze
1802
+ stack << value
1803
+ when 79
1804
+ node_id = load_varuint
1805
+ location = load_location(freeze)
1806
+ flags = load_varuint
1807
+ field_name = load_constant(constant_pool, encoding)
1808
+ field_name_loc = load_location(freeze)
1809
+ field_operator_loc = load_location(freeze)
1810
+ field_value = stack.pop #: Prism::node
1811
+ value = InstanceVariableOrWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
1812
+ value.freeze if freeze
1813
+ stack << value
1814
+ when 80
1815
+ node_id = load_varuint
1816
+ location = load_location(freeze)
1817
+ flags = load_varuint
1818
+ field_name = load_constant(constant_pool, encoding)
1819
+ value = InstanceVariableReadNode.new(source, node_id, location, flags, field_name)
1820
+ value.freeze if freeze
1821
+ stack << value
1822
+ when 81
1823
+ node_id = load_varuint
1824
+ location = load_location(freeze)
1825
+ flags = load_varuint
1826
+ field_name = load_constant(constant_pool, encoding)
1827
+ value = InstanceVariableTargetNode.new(source, node_id, location, flags, field_name)
1828
+ value.freeze if freeze
1829
+ stack << value
1830
+ when 82
1831
+ node_id = load_varuint
1832
+ location = load_location(freeze)
1833
+ flags = load_varuint
1834
+ field_name = load_constant(constant_pool, encoding)
1835
+ field_name_loc = load_location(freeze)
1836
+ field_operator_loc = load_location(freeze)
1837
+ field_value = stack.pop #: Prism::node
1838
+ value = InstanceVariableWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_value, field_operator_loc)
1839
+ value.freeze if freeze
1840
+ stack << value
1841
+ when 83
1842
+ node_id = load_varuint
1843
+ location = load_location(freeze)
1844
+ flags = load_varuint
1845
+ field_value = load_integer
1846
+ value = IntegerNode.new(source, node_id, location, flags, field_value)
1847
+ value.freeze if freeze
1848
+ stack << value
1849
+ when 84
1850
+ node_id = load_varuint
1851
+ location = load_location(freeze)
1852
+ flags = load_varuint
1853
+ field_opening_loc = load_location(freeze)
1854
+ parts_size = load_varuint
1855
+ field_closing_loc = load_location(freeze)
1856
+ field_parts = stack.slice!(-parts_size, parts_size) #: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode]
1857
+ field_parts.freeze if freeze
1858
+ value = InterpolatedMatchLastLineNode.new(source, node_id, location, flags, field_opening_loc, field_parts, field_closing_loc)
1859
+ value.freeze if freeze
1860
+ stack << value
1861
+ when 85
1862
+ node_id = load_varuint
1863
+ location = load_location(freeze)
1864
+ flags = load_varuint
1865
+ field_opening_loc = load_location(freeze)
1866
+ parts_size = load_varuint
1867
+ field_closing_loc = load_location(freeze)
1868
+ field_parts = stack.slice!(-parts_size, parts_size) #: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode]
1869
+ field_parts.freeze if freeze
1870
+ value = InterpolatedRegularExpressionNode.new(source, node_id, location, flags, field_opening_loc, field_parts, field_closing_loc)
1871
+ value.freeze if freeze
1872
+ stack << value
1873
+ when 86
1874
+ node_id = load_varuint
1875
+ location = load_location(freeze)
1876
+ flags = load_varuint
1877
+ field_opening_loc = load_optional_location(freeze)
1878
+ parts_size = load_varuint
1879
+ field_closing_loc = load_optional_location(freeze)
1880
+ field_parts = stack.slice!(-parts_size, parts_size) #: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode]
1881
+ field_parts.freeze if freeze
1882
+ value = InterpolatedStringNode.new(source, node_id, location, flags, field_opening_loc, field_parts, field_closing_loc)
1883
+ value.freeze if freeze
1884
+ stack << value
1885
+ when 87
1886
+ node_id = load_varuint
1887
+ location = load_location(freeze)
1888
+ flags = load_varuint
1889
+ field_opening_loc = load_optional_location(freeze)
1890
+ parts_size = load_varuint
1891
+ field_closing_loc = load_optional_location(freeze)
1892
+ field_parts = stack.slice!(-parts_size, parts_size) #: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode]
1893
+ field_parts.freeze if freeze
1894
+ value = InterpolatedSymbolNode.new(source, node_id, location, flags, field_opening_loc, field_parts, field_closing_loc)
1895
+ value.freeze if freeze
1896
+ stack << value
1897
+ when 88
1898
+ node_id = load_varuint
1899
+ location = load_location(freeze)
1900
+ flags = load_varuint
1901
+ field_opening_loc = load_location(freeze)
1902
+ parts_size = load_varuint
1903
+ field_closing_loc = load_location(freeze)
1904
+ field_parts = stack.slice!(-parts_size, parts_size) #: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode]
1905
+ field_parts.freeze if freeze
1906
+ value = InterpolatedXStringNode.new(source, node_id, location, flags, field_opening_loc, field_parts, field_closing_loc)
1907
+ value.freeze if freeze
1908
+ stack << value
1909
+ when 89
1910
+ node_id = load_varuint
1911
+ location = load_location(freeze)
1912
+ flags = load_varuint
1913
+ value = ItLocalVariableReadNode.new(source, node_id, location, flags)
1914
+ value.freeze if freeze
1915
+ stack << value
1916
+ when 90
1917
+ node_id = load_varuint
1918
+ location = load_location(freeze)
1919
+ flags = load_varuint
1920
+ value = ItParametersNode.new(source, node_id, location, flags)
1921
+ value.freeze if freeze
1922
+ stack << value
1923
+ when 91
1924
+ node_id = load_varuint
1925
+ location = load_location(freeze)
1926
+ flags = load_varuint
1927
+ elements_size = load_varuint
1928
+ field_elements = stack.slice!(-elements_size, elements_size) #: Array[AssocNode | AssocSplatNode]
1929
+ field_elements.freeze if freeze
1930
+ value = KeywordHashNode.new(source, node_id, location, flags, field_elements)
1931
+ value.freeze if freeze
1932
+ stack << value
1933
+ when 92
1934
+ node_id = load_varuint
1935
+ location = load_location(freeze)
1936
+ flags = load_varuint
1937
+ field_name = load_optional_constant(constant_pool, encoding)
1938
+ field_name_loc = load_optional_location(freeze)
1939
+ field_operator_loc = load_location(freeze)
1940
+ value = KeywordRestParameterNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc)
1941
+ value.freeze if freeze
1942
+ stack << value
1943
+ when 93
1944
+ node_id = load_varuint
1945
+ location = load_location(freeze)
1946
+ flags = load_varuint
1947
+ field_locals = Array.new(load_varuint) { load_constant(constant_pool, encoding) }
1948
+ field_locals.freeze if freeze
1949
+ field_operator_loc = load_location(freeze)
1950
+ field_opening_loc = load_location(freeze)
1951
+ field_closing_loc = load_location(freeze)
1952
+ field_body = stack.pop #: (StatementsNode | BeginNode)?
1953
+ field_parameters = stack.pop #: (BlockParametersNode | NumberedParametersNode | ItParametersNode)?
1954
+ value = LambdaNode.new(source, node_id, location, flags, field_locals, field_operator_loc, field_opening_loc, field_closing_loc, field_parameters, field_body)
1955
+ value.freeze if freeze
1956
+ stack << value
1957
+ when 94
1958
+ node_id = load_varuint
1959
+ location = load_location(freeze)
1960
+ flags = load_varuint
1961
+ field_name_loc = load_location(freeze)
1962
+ field_operator_loc = load_location(freeze)
1963
+ field_name = load_constant(constant_pool, encoding)
1964
+ field_depth = load_varuint
1965
+ field_value = stack.pop #: Prism::node
1966
+ value = LocalVariableAndWriteNode.new(source, node_id, location, flags, field_name_loc, field_operator_loc, field_value, field_name, field_depth)
1967
+ value.freeze if freeze
1968
+ stack << value
1969
+ when 95
1970
+ node_id = load_varuint
1971
+ location = load_location(freeze)
1972
+ flags = load_varuint
1973
+ field_name_loc = load_location(freeze)
1974
+ field_binary_operator_loc = load_location(freeze)
1975
+ field_name = load_constant(constant_pool, encoding)
1976
+ field_binary_operator = load_constant(constant_pool, encoding)
1977
+ field_depth = load_varuint
1978
+ field_value = stack.pop #: Prism::node
1979
+ value = LocalVariableOperatorWriteNode.new(source, node_id, location, flags, field_name_loc, field_binary_operator_loc, field_value, field_name, field_binary_operator, field_depth)
1980
+ value.freeze if freeze
1981
+ stack << value
1982
+ when 96
1983
+ node_id = load_varuint
1984
+ location = load_location(freeze)
1985
+ flags = load_varuint
1986
+ field_name_loc = load_location(freeze)
1987
+ field_operator_loc = load_location(freeze)
1988
+ field_name = load_constant(constant_pool, encoding)
1989
+ field_depth = load_varuint
1990
+ field_value = stack.pop #: Prism::node
1991
+ value = LocalVariableOrWriteNode.new(source, node_id, location, flags, field_name_loc, field_operator_loc, field_value, field_name, field_depth)
1992
+ value.freeze if freeze
1993
+ stack << value
1994
+ when 97
1995
+ node_id = load_varuint
1996
+ location = load_location(freeze)
1997
+ flags = load_varuint
1998
+ field_name = load_constant(constant_pool, encoding)
1999
+ field_depth = load_varuint
2000
+ value = LocalVariableReadNode.new(source, node_id, location, flags, field_name, field_depth)
2001
+ value.freeze if freeze
2002
+ stack << value
2003
+ when 98
2004
+ node_id = load_varuint
2005
+ location = load_location(freeze)
2006
+ flags = load_varuint
2007
+ field_name = load_constant(constant_pool, encoding)
2008
+ field_depth = load_varuint
2009
+ value = LocalVariableTargetNode.new(source, node_id, location, flags, field_name, field_depth)
2010
+ value.freeze if freeze
2011
+ stack << value
2012
+ when 99
2013
+ node_id = load_varuint
2014
+ location = load_location(freeze)
2015
+ flags = load_varuint
2016
+ field_name = load_constant(constant_pool, encoding)
2017
+ field_depth = load_varuint
2018
+ field_name_loc = load_location(freeze)
2019
+ field_operator_loc = load_location(freeze)
2020
+ field_value = stack.pop #: Prism::node
2021
+ value = LocalVariableWriteNode.new(source, node_id, location, flags, field_name, field_depth, field_name_loc, field_value, field_operator_loc)
2022
+ value.freeze if freeze
2023
+ stack << value
2024
+ when 100
2025
+ node_id = load_varuint
2026
+ location = load_location(freeze)
2027
+ flags = load_varuint
2028
+ field_opening_loc = load_location(freeze)
2029
+ field_content_loc = load_location(freeze)
2030
+ field_closing_loc = load_location(freeze)
2031
+ field_unescaped = load_string(encoding)
2032
+ value = MatchLastLineNode.new(source, node_id, location, flags, field_opening_loc, field_content_loc, field_closing_loc, field_unescaped)
2033
+ value.freeze if freeze
2034
+ stack << value
2035
+ when 101
2036
+ node_id = load_varuint
2037
+ location = load_location(freeze)
2038
+ flags = load_varuint
2039
+ field_keyword_loc = load_location(freeze)
2040
+ field_pattern = stack.pop #: Prism::node
2041
+ field_value = stack.pop #: Prism::node
2042
+ value = MatchPredicateNode.new(source, node_id, location, flags, field_value, field_pattern, field_keyword_loc)
2043
+ value.freeze if freeze
2044
+ stack << value
2045
+ when 102
2046
+ node_id = load_varuint
2047
+ location = load_location(freeze)
2048
+ flags = load_varuint
2049
+ field_operator_loc = load_location(freeze)
2050
+ field_pattern = stack.pop #: Prism::node
2051
+ field_value = stack.pop #: Prism::node
2052
+ value = MatchRequiredNode.new(source, node_id, location, flags, field_value, field_pattern, field_operator_loc)
2053
+ value.freeze if freeze
2054
+ stack << value
2055
+ when 103
2056
+ node_id = load_varuint
2057
+ location = load_location(freeze)
2058
+ flags = load_varuint
2059
+ targets_size = load_varuint
2060
+ field_targets = stack.slice!(-targets_size, targets_size) #: Array[LocalVariableTargetNode]
2061
+ field_targets.freeze if freeze
2062
+ field_call = stack.pop #: CallNode
2063
+ value = MatchWriteNode.new(source, node_id, location, flags, field_call, field_targets)
2064
+ value.freeze if freeze
2065
+ stack << value
2066
+ when 104
2067
+ node_id = load_varuint
2068
+ location = load_location(freeze)
2069
+ flags = load_varuint
2070
+ field_locals = Array.new(load_varuint) { load_constant(constant_pool, encoding) }
2071
+ field_locals.freeze if freeze
2072
+ field_module_keyword_loc = load_location(freeze)
2073
+ field_end_keyword_loc = load_location(freeze)
2074
+ field_name = load_constant(constant_pool, encoding)
2075
+ field_body = stack.pop #: (StatementsNode | BeginNode)?
2076
+ field_constant_path = stack.pop #: (ConstantReadNode | ConstantPathNode)
2077
+ value = ModuleNode.new(source, node_id, location, flags, field_locals, field_module_keyword_loc, field_constant_path, field_body, field_end_keyword_loc, field_name)
2078
+ value.freeze if freeze
2079
+ stack << value
2080
+ when 105
2081
+ node_id = load_varuint
2082
+ location = load_location(freeze)
2083
+ flags = load_varuint
2084
+ lefts_size = load_varuint
2085
+ rights_size = load_varuint
2086
+ field_lparen_loc = load_optional_location(freeze)
2087
+ field_rparen_loc = load_optional_location(freeze)
2088
+ field_rights = stack.slice!(-rights_size, rights_size) #: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | RequiredParameterNode]
2089
+ field_rights.freeze if freeze
2090
+ field_rest = stack.pop #: (ImplicitRestNode | SplatNode)?
2091
+ field_lefts = stack.slice!(-lefts_size, lefts_size) #: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | RequiredParameterNode]
2092
+ field_lefts.freeze if freeze
2093
+ value = MultiTargetNode.new(source, node_id, location, flags, field_lefts, field_rest, field_rights, field_lparen_loc, field_rparen_loc)
2094
+ value.freeze if freeze
2095
+ stack << value
2096
+ when 106
2097
+ node_id = load_varuint
2098
+ location = load_location(freeze)
2099
+ flags = load_varuint
2100
+ lefts_size = load_varuint
2101
+ rights_size = load_varuint
2102
+ field_lparen_loc = load_optional_location(freeze)
2103
+ field_rparen_loc = load_optional_location(freeze)
2104
+ field_operator_loc = load_location(freeze)
2105
+ field_value = stack.pop #: Prism::node
2106
+ field_rights = stack.slice!(-rights_size, rights_size) #: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode]
2107
+ field_rights.freeze if freeze
2108
+ field_rest = stack.pop #: (ImplicitRestNode | SplatNode)?
2109
+ field_lefts = stack.slice!(-lefts_size, lefts_size) #: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode]
2110
+ field_lefts.freeze if freeze
2111
+ value = MultiWriteNode.new(source, node_id, location, flags, field_lefts, field_rest, field_rights, field_lparen_loc, field_rparen_loc, field_operator_loc, field_value)
2112
+ value.freeze if freeze
2113
+ stack << value
2114
+ when 107
2115
+ node_id = load_varuint
2116
+ location = load_location(freeze)
2117
+ flags = load_varuint
2118
+ field_keyword_loc = load_location(freeze)
2119
+ field_arguments = stack.pop #: ArgumentsNode?
2120
+ value = NextNode.new(source, node_id, location, flags, field_arguments, field_keyword_loc)
2121
+ value.freeze if freeze
2122
+ stack << value
2123
+ when 108
2124
+ node_id = load_varuint
2125
+ location = load_location(freeze)
2126
+ flags = load_varuint
2127
+ value = NilNode.new(source, node_id, location, flags)
2128
+ value.freeze if freeze
2129
+ stack << value
2130
+ when 109
2131
+ node_id = load_varuint
2132
+ location = load_location(freeze)
2133
+ flags = load_varuint
2134
+ field_operator_loc = load_location(freeze)
2135
+ field_keyword_loc = load_location(freeze)
2136
+ value = NoBlockParameterNode.new(source, node_id, location, flags, field_operator_loc, field_keyword_loc)
2137
+ value.freeze if freeze
2138
+ stack << value
2139
+ when 110
2140
+ node_id = load_varuint
2141
+ location = load_location(freeze)
2142
+ flags = load_varuint
2143
+ field_operator_loc = load_location(freeze)
2144
+ field_keyword_loc = load_location(freeze)
2145
+ value = NoKeywordsParameterNode.new(source, node_id, location, flags, field_operator_loc, field_keyword_loc)
2146
+ value.freeze if freeze
2147
+ stack << value
2148
+ when 111
2149
+ node_id = load_varuint
2150
+ location = load_location(freeze)
2151
+ flags = load_varuint
2152
+ field_maximum = (io.getbyte or raise)
2153
+ value = NumberedParametersNode.new(source, node_id, location, flags, field_maximum)
2154
+ value.freeze if freeze
2155
+ stack << value
2156
+ when 112
2157
+ node_id = load_varuint
2158
+ location = load_location(freeze)
2159
+ flags = load_varuint
2160
+ field_number = load_varuint
2161
+ value = NumberedReferenceReadNode.new(source, node_id, location, flags, field_number)
2162
+ value.freeze if freeze
2163
+ stack << value
2164
+ when 113
2165
+ node_id = load_varuint
2166
+ location = load_location(freeze)
2167
+ flags = load_varuint
2168
+ field_name = load_constant(constant_pool, encoding)
2169
+ field_name_loc = load_location(freeze)
2170
+ field_value = stack.pop #: Prism::node
2171
+ value = OptionalKeywordParameterNode.new(source, node_id, location, flags, field_name, field_name_loc, field_value)
2172
+ value.freeze if freeze
2173
+ stack << value
2174
+ when 114
2175
+ node_id = load_varuint
2176
+ location = load_location(freeze)
2177
+ flags = load_varuint
2178
+ field_name = load_constant(constant_pool, encoding)
2179
+ field_name_loc = load_location(freeze)
2180
+ field_operator_loc = load_location(freeze)
2181
+ field_value = stack.pop #: Prism::node
2182
+ value = OptionalParameterNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
2183
+ value.freeze if freeze
2184
+ stack << value
2185
+ when 115
2186
+ node_id = load_varuint
2187
+ location = load_location(freeze)
2188
+ flags = load_varuint
2189
+ field_operator_loc = load_location(freeze)
2190
+ field_right = stack.pop #: Prism::node
2191
+ field_left = stack.pop #: Prism::node
2192
+ value = OrNode.new(source, node_id, location, flags, field_left, field_right, field_operator_loc)
2193
+ value.freeze if freeze
2194
+ stack << value
2195
+ when 116
2196
+ node_id = load_varuint
2197
+ location = load_location(freeze)
2198
+ flags = load_varuint
2199
+ requireds_size = load_varuint
2200
+ optionals_size = load_varuint
2201
+ posts_size = load_varuint
2202
+ keywords_size = load_varuint
2203
+ field_block = stack.pop #: (BlockParameterNode | NoBlockParameterNode)?
2204
+ field_keyword_rest = stack.pop #: (KeywordRestParameterNode | ForwardingParameterNode | NoKeywordsParameterNode)?
2205
+ field_keywords = stack.slice!(-keywords_size, keywords_size) #: Array[RequiredKeywordParameterNode | OptionalKeywordParameterNode]
2206
+ field_keywords.freeze if freeze
2207
+ field_posts = stack.slice!(-posts_size, posts_size) #: Array[RequiredParameterNode | MultiTargetNode]
2208
+ field_posts.freeze if freeze
2209
+ field_rest = stack.pop #: (RestParameterNode | ImplicitRestNode)?
2210
+ field_optionals = stack.slice!(-optionals_size, optionals_size) #: Array[OptionalParameterNode]
2211
+ field_optionals.freeze if freeze
2212
+ field_requireds = stack.slice!(-requireds_size, requireds_size) #: Array[RequiredParameterNode | MultiTargetNode]
2213
+ field_requireds.freeze if freeze
2214
+ value = ParametersNode.new(source, node_id, location, flags, field_requireds, field_optionals, field_rest, field_posts, field_keywords, field_keyword_rest, field_block)
2215
+ value.freeze if freeze
2216
+ stack << value
2217
+ when 117
2218
+ node_id = load_varuint
2219
+ location = load_location(freeze)
2220
+ flags = load_varuint
2221
+ field_opening_loc = load_location(freeze)
2222
+ field_closing_loc = load_location(freeze)
2223
+ field_body = stack.pop #: Prism::node?
2224
+ value = ParenthesesNode.new(source, node_id, location, flags, field_body, field_opening_loc, field_closing_loc)
2225
+ value.freeze if freeze
2226
+ stack << value
2227
+ when 118
2228
+ node_id = load_varuint
2229
+ location = load_location(freeze)
2230
+ flags = load_varuint
2231
+ field_operator_loc = load_location(freeze)
2232
+ field_lparen_loc = load_location(freeze)
2233
+ field_rparen_loc = load_location(freeze)
2234
+ field_expression = stack.pop #: Prism::node
2235
+ value = PinnedExpressionNode.new(source, node_id, location, flags, field_expression, field_operator_loc, field_lparen_loc, field_rparen_loc)
2236
+ value.freeze if freeze
2237
+ stack << value
2238
+ when 119
2239
+ node_id = load_varuint
2240
+ location = load_location(freeze)
2241
+ flags = load_varuint
2242
+ field_operator_loc = load_location(freeze)
2243
+ field_variable = stack.pop #: (LocalVariableReadNode | InstanceVariableReadNode | ClassVariableReadNode | GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode | ItLocalVariableReadNode)
2244
+ value = PinnedVariableNode.new(source, node_id, location, flags, field_variable, field_operator_loc)
2245
+ value.freeze if freeze
2246
+ stack << value
2247
+ when 120
2248
+ node_id = load_varuint
2249
+ location = load_location(freeze)
2250
+ flags = load_varuint
2251
+ field_keyword_loc = load_location(freeze)
2252
+ field_opening_loc = load_location(freeze)
2253
+ field_closing_loc = load_location(freeze)
2254
+ field_statements = stack.pop #: StatementsNode?
2255
+ value = PostExecutionNode.new(source, node_id, location, flags, field_statements, field_keyword_loc, field_opening_loc, field_closing_loc)
2256
+ value.freeze if freeze
2257
+ stack << value
2258
+ when 121
2259
+ node_id = load_varuint
2260
+ location = load_location(freeze)
2261
+ flags = load_varuint
2262
+ field_keyword_loc = load_location(freeze)
2263
+ field_opening_loc = load_location(freeze)
2264
+ field_closing_loc = load_location(freeze)
2265
+ field_statements = stack.pop #: StatementsNode?
2266
+ value = PreExecutionNode.new(source, node_id, location, flags, field_statements, field_keyword_loc, field_opening_loc, field_closing_loc)
2267
+ value.freeze if freeze
2268
+ stack << value
2269
+ when 122
2270
+ node_id = load_varuint
2271
+ location = load_location(freeze)
2272
+ flags = load_varuint
2273
+ field_locals = Array.new(load_varuint) { load_constant(constant_pool, encoding) }
2274
+ field_locals.freeze if freeze
2275
+ field_statements = stack.pop #: StatementsNode
2276
+ value = ProgramNode.new(source, node_id, location, flags, field_locals, field_statements)
2277
+ value.freeze if freeze
2278
+ stack << value
2279
+ when 123
2280
+ node_id = load_varuint
2281
+ location = load_location(freeze)
2282
+ flags = load_varuint
2283
+ field_operator_loc = load_location(freeze)
2284
+ field_right = stack.pop #: Prism::node?
2285
+ field_left = stack.pop #: Prism::node?
2286
+ value = RangeNode.new(source, node_id, location, flags, field_left, field_right, field_operator_loc)
2287
+ value.freeze if freeze
2288
+ stack << value
2289
+ when 124
2290
+ node_id = load_varuint
2291
+ location = load_location(freeze)
2292
+ flags = load_varuint
2293
+ field_numerator = load_integer
2294
+ field_denominator = load_integer
2295
+ value = RationalNode.new(source, node_id, location, flags, field_numerator, field_denominator)
2296
+ value.freeze if freeze
2297
+ stack << value
2298
+ when 125
2299
+ node_id = load_varuint
2300
+ location = load_location(freeze)
2301
+ flags = load_varuint
2302
+ value = RedoNode.new(source, node_id, location, flags)
2303
+ value.freeze if freeze
2304
+ stack << value
2305
+ when 126
2306
+ node_id = load_varuint
2307
+ location = load_location(freeze)
2308
+ flags = load_varuint
2309
+ field_opening_loc = load_location(freeze)
2310
+ field_content_loc = load_location(freeze)
2311
+ field_closing_loc = load_location(freeze)
2312
+ field_unescaped = load_string(encoding)
2313
+ value = RegularExpressionNode.new(source, node_id, location, flags, field_opening_loc, field_content_loc, field_closing_loc, field_unescaped)
2314
+ value.freeze if freeze
2315
+ stack << value
2316
+ when 127
2317
+ node_id = load_varuint
2318
+ location = load_location(freeze)
2319
+ flags = load_varuint
2320
+ field_name = load_constant(constant_pool, encoding)
2321
+ field_name_loc = load_location(freeze)
2322
+ value = RequiredKeywordParameterNode.new(source, node_id, location, flags, field_name, field_name_loc)
2323
+ value.freeze if freeze
2324
+ stack << value
2325
+ when 128
2326
+ node_id = load_varuint
2327
+ location = load_location(freeze)
2328
+ flags = load_varuint
2329
+ field_name = load_constant(constant_pool, encoding)
2330
+ value = RequiredParameterNode.new(source, node_id, location, flags, field_name)
2331
+ value.freeze if freeze
2332
+ stack << value
2333
+ when 129
2334
+ node_id = load_varuint
2335
+ location = load_location(freeze)
2336
+ flags = load_varuint
2337
+ field_keyword_loc = load_location(freeze)
2338
+ field_rescue_expression = stack.pop #: Prism::node
2339
+ field_expression = stack.pop #: Prism::node
2340
+ value = RescueModifierNode.new(source, node_id, location, flags, field_expression, field_keyword_loc, field_rescue_expression)
2341
+ value.freeze if freeze
2342
+ stack << value
2343
+ when 130
2344
+ node_id = load_varuint
2345
+ location = load_location(freeze)
2346
+ flags = load_varuint
2347
+ field_keyword_loc = load_location(freeze)
2348
+ exceptions_size = load_varuint
2349
+ field_operator_loc = load_optional_location(freeze)
2350
+ field_then_keyword_loc = load_optional_location(freeze)
2351
+ field_subsequent = stack.pop #: RescueNode?
2352
+ field_statements = stack.pop #: StatementsNode?
2353
+ field_reference = stack.pop #: (LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode)?
2354
+ field_exceptions = stack.slice!(-exceptions_size, exceptions_size) #: Array[Prism::node]
2355
+ field_exceptions.freeze if freeze
2356
+ value = RescueNode.new(source, node_id, location, flags, field_keyword_loc, field_exceptions, field_operator_loc, field_reference, field_then_keyword_loc, field_statements, field_subsequent)
2357
+ value.freeze if freeze
2358
+ stack << value
2359
+ when 131
2360
+ node_id = load_varuint
2361
+ location = load_location(freeze)
2362
+ flags = load_varuint
2363
+ field_name = load_optional_constant(constant_pool, encoding)
2364
+ field_name_loc = load_optional_location(freeze)
2365
+ field_operator_loc = load_location(freeze)
2366
+ value = RestParameterNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc)
2367
+ value.freeze if freeze
2368
+ stack << value
2369
+ when 132
2370
+ node_id = load_varuint
2371
+ location = load_location(freeze)
2372
+ flags = load_varuint
2373
+ value = RetryNode.new(source, node_id, location, flags)
2374
+ value.freeze if freeze
2375
+ stack << value
2376
+ when 133
2377
+ node_id = load_varuint
2378
+ location = load_location(freeze)
2379
+ flags = load_varuint
2380
+ field_keyword_loc = load_location(freeze)
2381
+ field_arguments = stack.pop #: ArgumentsNode?
2382
+ value = ReturnNode.new(source, node_id, location, flags, field_keyword_loc, field_arguments)
2383
+ value.freeze if freeze
2384
+ stack << value
2385
+ when 134
2386
+ node_id = load_varuint
2387
+ location = load_location(freeze)
2388
+ flags = load_varuint
2389
+ value = SelfNode.new(source, node_id, location, flags)
2390
+ value.freeze if freeze
2391
+ stack << value
2392
+ when 135
2393
+ node_id = load_varuint
2394
+ location = load_location(freeze)
2395
+ flags = load_varuint
2396
+ field_write = stack.pop #: (ConstantWriteNode | ConstantAndWriteNode | ConstantOrWriteNode | ConstantOperatorWriteNode | ConstantPathWriteNode | ConstantPathAndWriteNode | ConstantPathOrWriteNode | ConstantPathOperatorWriteNode)
2397
+ value = ShareableConstantNode.new(source, node_id, location, flags, field_write)
2398
+ value.freeze if freeze
2399
+ stack << value
2400
+ when 136
2401
+ node_id = load_varuint
2402
+ location = load_location(freeze)
2403
+ flags = load_varuint
2404
+ field_locals = Array.new(load_varuint) { load_constant(constant_pool, encoding) }
2405
+ field_locals.freeze if freeze
2406
+ field_class_keyword_loc = load_location(freeze)
2407
+ field_operator_loc = load_location(freeze)
2408
+ field_end_keyword_loc = load_location(freeze)
2409
+ field_body = stack.pop #: (StatementsNode | BeginNode)?
2410
+ field_expression = stack.pop #: Prism::node
2411
+ value = SingletonClassNode.new(source, node_id, location, flags, field_locals, field_class_keyword_loc, field_operator_loc, field_expression, field_body, field_end_keyword_loc)
2412
+ value.freeze if freeze
2413
+ stack << value
2414
+ when 137
2415
+ node_id = load_varuint
2416
+ location = load_location(freeze)
2417
+ flags = load_varuint
2418
+ value = SourceEncodingNode.new(source, node_id, location, flags)
2419
+ value.freeze if freeze
2420
+ stack << value
2421
+ when 138
2422
+ node_id = load_varuint
2423
+ location = load_location(freeze)
2424
+ flags = load_varuint
2425
+ field_filepath = load_string(encoding)
2426
+ value = SourceFileNode.new(source, node_id, location, flags, field_filepath)
2427
+ value.freeze if freeze
2428
+ stack << value
2429
+ when 139
2430
+ node_id = load_varuint
2431
+ location = load_location(freeze)
2432
+ flags = load_varuint
2433
+ value = SourceLineNode.new(source, node_id, location, flags)
2434
+ value.freeze if freeze
2435
+ stack << value
2436
+ when 140
2437
+ node_id = load_varuint
2438
+ location = load_location(freeze)
2439
+ flags = load_varuint
2440
+ field_operator_loc = load_location(freeze)
2441
+ field_expression = stack.pop #: Prism::node?
2442
+ value = SplatNode.new(source, node_id, location, flags, field_operator_loc, field_expression)
2443
+ value.freeze if freeze
2444
+ stack << value
2445
+ when 141
2446
+ node_id = load_varuint
2447
+ location = load_location(freeze)
2448
+ flags = load_varuint
2449
+ body_size = load_varuint
2450
+ field_body = stack.slice!(-body_size, body_size) #: Array[Prism::node]
2451
+ field_body.freeze if freeze
2452
+ value = StatementsNode.new(source, node_id, location, flags, field_body)
2453
+ value.freeze if freeze
2454
+ stack << value
2455
+ when 142
2456
+ node_id = load_varuint
2457
+ location = load_location(freeze)
2458
+ flags = load_varuint
2459
+ field_opening_loc = load_optional_location(freeze)
2460
+ field_content_loc = load_location(freeze)
2461
+ field_closing_loc = load_optional_location(freeze)
2462
+ field_unescaped = load_string(encoding)
2463
+ value = StringNode.new(source, node_id, location, flags, field_opening_loc, field_content_loc, field_closing_loc, field_unescaped)
2464
+ value.freeze if freeze
2465
+ stack << value
2466
+ when 143
2467
+ node_id = load_varuint
2468
+ location = load_location(freeze)
2469
+ flags = load_varuint
2470
+ field_keyword_loc = load_location(freeze)
2471
+ field_lparen_loc = load_optional_location(freeze)
2472
+ field_rparen_loc = load_optional_location(freeze)
2473
+ field_block = stack.pop #: (BlockNode | BlockArgumentNode)?
2474
+ field_arguments = stack.pop #: ArgumentsNode?
2475
+ value = SuperNode.new(source, node_id, location, flags, field_keyword_loc, field_lparen_loc, field_arguments, field_rparen_loc, field_block)
2476
+ value.freeze if freeze
2477
+ stack << value
2478
+ when 144
2479
+ node_id = load_varuint
2480
+ location = load_location(freeze)
2481
+ flags = load_varuint
2482
+ field_opening_loc = load_optional_location(freeze)
2483
+ field_content_loc = load_location(freeze)
2484
+ field_closing_loc = load_optional_location(freeze)
2485
+ field_unescaped = load_string(encoding)
2486
+ value = SymbolNode.new(source, node_id, location, flags, field_opening_loc, field_content_loc, field_closing_loc, field_unescaped)
2487
+ value.freeze if freeze
2488
+ stack << value
2489
+ when 145
2490
+ node_id = load_varuint
2491
+ location = load_location(freeze)
2492
+ flags = load_varuint
2493
+ value = TrueNode.new(source, node_id, location, flags)
2494
+ value.freeze if freeze
2495
+ stack << value
2496
+ when 146
2497
+ node_id = load_varuint
2498
+ location = load_location(freeze)
2499
+ flags = load_varuint
2500
+ names_size = load_varuint
2501
+ field_keyword_loc = load_location(freeze)
2502
+ field_names = stack.slice!(-names_size, names_size) #: Array[SymbolNode | InterpolatedSymbolNode]
2503
+ field_names.freeze if freeze
2504
+ value = UndefNode.new(source, node_id, location, flags, field_names, field_keyword_loc)
2505
+ value.freeze if freeze
2506
+ stack << value
2507
+ when 147
2508
+ node_id = load_varuint
2509
+ location = load_location(freeze)
2510
+ flags = load_varuint
2511
+ field_unless_keyword_loc = load_location(freeze)
2512
+ field_then_keyword_loc = load_optional_location(freeze)
2513
+ field_end_keyword_loc = load_optional_location(freeze)
2514
+ field_else_clause = stack.pop #: ElseNode?
2515
+ field_statements = stack.pop #: StatementsNode?
2516
+ field_predicate = stack.pop #: Prism::node
2517
+ value = UnlessNode.new(source, node_id, location, flags, field_unless_keyword_loc, field_predicate, field_then_keyword_loc, field_statements, field_else_clause, field_end_keyword_loc)
2518
+ value.freeze if freeze
2519
+ stack << value
2520
+ when 148
2521
+ node_id = load_varuint
2522
+ location = load_location(freeze)
2523
+ flags = load_varuint
2524
+ field_until_keyword_loc = load_location(freeze)
2525
+ field_do_keyword_loc = load_optional_location(freeze)
2526
+ field_end_keyword_loc = load_optional_location(freeze)
2527
+ field_statements = stack.pop #: StatementsNode?
2528
+ field_predicate = stack.pop #: Prism::node
2529
+ value = UntilNode.new(source, node_id, location, flags, field_until_keyword_loc, field_do_keyword_loc, field_end_keyword_loc, field_predicate, field_statements)
2530
+ value.freeze if freeze
2531
+ stack << value
2532
+ when 149
2533
+ node_id = load_varuint
2534
+ location = load_location(freeze)
2535
+ flags = load_varuint
2536
+ field_when_keyword_loc = load_location(freeze)
2537
+ conditions_size = load_varuint
2538
+ field_then_keyword_loc = load_optional_location(freeze)
2539
+ field_statements = stack.pop #: StatementsNode?
2540
+ field_conditions = stack.slice!(-conditions_size, conditions_size) #: Array[Prism::node]
2541
+ field_conditions.freeze if freeze
2542
+ value = WhenNode.new(source, node_id, location, flags, field_when_keyword_loc, field_conditions, field_then_keyword_loc, field_statements)
2543
+ value.freeze if freeze
2544
+ stack << value
2545
+ when 150
2546
+ node_id = load_varuint
2547
+ location = load_location(freeze)
2548
+ flags = load_varuint
2549
+ field_while_keyword_loc = load_location(freeze)
2550
+ field_do_keyword_loc = load_optional_location(freeze)
2551
+ field_end_keyword_loc = load_optional_location(freeze)
2552
+ field_statements = stack.pop #: StatementsNode?
2553
+ field_predicate = stack.pop #: Prism::node
2554
+ value = WhileNode.new(source, node_id, location, flags, field_while_keyword_loc, field_do_keyword_loc, field_end_keyword_loc, field_predicate, field_statements)
2555
+ value.freeze if freeze
2556
+ stack << value
2557
+ when 151
2558
+ node_id = load_varuint
2559
+ location = load_location(freeze)
2560
+ flags = load_varuint
2561
+ field_opening_loc = load_location(freeze)
2562
+ field_content_loc = load_location(freeze)
2563
+ field_closing_loc = load_location(freeze)
2564
+ field_unescaped = load_string(encoding)
2565
+ value = XStringNode.new(source, node_id, location, flags, field_opening_loc, field_content_loc, field_closing_loc, field_unescaped)
2566
+ value.freeze if freeze
2567
+ stack << value
2568
+ when 152
2569
+ node_id = load_varuint
2570
+ location = load_location(freeze)
2571
+ flags = load_varuint
2572
+ field_keyword_loc = load_location(freeze)
2573
+ field_lparen_loc = load_optional_location(freeze)
2574
+ field_rparen_loc = load_optional_location(freeze)
2575
+ field_arguments = stack.pop #: ArgumentsNode?
2576
+ value = YieldNode.new(source, node_id, location, flags, field_keyword_loc, field_lparen_loc, field_arguments, field_rparen_loc)
2577
+ value.freeze if freeze
2578
+ stack << value
2579
+ else
2580
+ raise "Unknown node type: #{type}"
2581
+ end
2582
+ end
2583
+
2584
+ raise unless io.pos == finish && stack.length == 1
2585
+ stack.first or raise
2586
+ end
2587
+ else
2588
+ # @rbs skip
2589
+ def load_nodes(constant_pool, encoding, freeze, finish)
2590
+ stack = [] #: Array[node?]
2591
+
2592
+ while io.pos < finish
2593
+ type = (io.getbyte or raise)
2594
+
2595
+ if type == 0
2596
+ stack << nil
2597
+ elsif type == 255
2598
+ io.read(8)
2599
+ else
2600
+ stack << @load_node_lambdas[type].call(constant_pool, encoding, freeze, stack)
2601
+ end
2602
+ end
2603
+
2604
+ raise unless io.pos == finish && stack.length == 1
2605
+ stack.first or raise
2606
+ end
2607
+
2608
+ # @rbs skip
2609
+ def define_load_node_lambdas
2610
+ @load_node_lambdas = [
2611
+ nil,
2612
+ -> (constant_pool, encoding, freeze, stack) {
2613
+ node_id = load_varuint
2614
+ location = load_location(freeze)
2615
+ flags = load_varuint
2616
+ field_keyword_loc = load_location(freeze)
2617
+ field_old_name = stack.pop #: (GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode)
2618
+ field_new_name = stack.pop #: (GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode)
2619
+ value = AliasGlobalVariableNode.new(source, node_id, location, flags, field_new_name, field_old_name, field_keyword_loc)
2620
+ value.freeze if freeze
2621
+ value
2622
+ },
2623
+ -> (constant_pool, encoding, freeze, stack) {
2624
+ node_id = load_varuint
2625
+ location = load_location(freeze)
2626
+ flags = load_varuint
2627
+ field_keyword_loc = load_location(freeze)
2628
+ field_old_name = stack.pop #: (SymbolNode | InterpolatedSymbolNode)
2629
+ field_new_name = stack.pop #: (SymbolNode | InterpolatedSymbolNode)
2630
+ value = AliasMethodNode.new(source, node_id, location, flags, field_new_name, field_old_name, field_keyword_loc)
2631
+ value.freeze if freeze
2632
+ value
2633
+ },
2634
+ -> (constant_pool, encoding, freeze, stack) {
2635
+ node_id = load_varuint
2636
+ location = load_location(freeze)
2637
+ flags = load_varuint
2638
+ field_operator_loc = load_location(freeze)
2639
+ field_right = stack.pop #: Prism::node
2640
+ field_left = stack.pop #: Prism::node
2641
+ value = AlternationPatternNode.new(source, node_id, location, flags, field_left, field_right, field_operator_loc)
2642
+ value.freeze if freeze
2643
+ value
2644
+ },
2645
+ -> (constant_pool, encoding, freeze, stack) {
2646
+ node_id = load_varuint
2647
+ location = load_location(freeze)
2648
+ flags = load_varuint
2649
+ field_operator_loc = load_location(freeze)
2650
+ field_right = stack.pop #: Prism::node
2651
+ field_left = stack.pop #: Prism::node
2652
+ value = AndNode.new(source, node_id, location, flags, field_left, field_right, field_operator_loc)
2653
+ value.freeze if freeze
2654
+ value
2655
+ },
2656
+ -> (constant_pool, encoding, freeze, stack) {
2657
+ node_id = load_varuint
2658
+ location = load_location(freeze)
2659
+ flags = load_varuint
2660
+ arguments_size = load_varuint
2661
+ field_arguments = stack.slice!(-arguments_size, arguments_size) #: Array[Prism::node]
2662
+ field_arguments.freeze if freeze
2663
+ value = ArgumentsNode.new(source, node_id, location, flags, field_arguments)
2664
+ value.freeze if freeze
2665
+ value
2666
+ },
2667
+ -> (constant_pool, encoding, freeze, stack) {
2668
+ node_id = load_varuint
2669
+ location = load_location(freeze)
2670
+ flags = load_varuint
2671
+ elements_size = load_varuint
2672
+ field_opening_loc = load_optional_location(freeze)
2673
+ field_closing_loc = load_optional_location(freeze)
2674
+ field_elements = stack.slice!(-elements_size, elements_size) #: Array[Prism::node]
2675
+ field_elements.freeze if freeze
2676
+ value = ArrayNode.new(source, node_id, location, flags, field_elements, field_opening_loc, field_closing_loc)
2677
+ value.freeze if freeze
2678
+ value
2679
+ },
2680
+ -> (constant_pool, encoding, freeze, stack) {
2681
+ node_id = load_varuint
2682
+ location = load_location(freeze)
2683
+ flags = load_varuint
2684
+ requireds_size = load_varuint
2685
+ posts_size = load_varuint
2686
+ field_opening_loc = load_optional_location(freeze)
2687
+ field_closing_loc = load_optional_location(freeze)
2688
+ field_posts = stack.slice!(-posts_size, posts_size) #: Array[Prism::node]
2689
+ field_posts.freeze if freeze
2690
+ field_rest = stack.pop #: (ImplicitRestNode | SplatNode)?
2691
+ field_requireds = stack.slice!(-requireds_size, requireds_size) #: Array[Prism::node]
2692
+ field_requireds.freeze if freeze
2693
+ field_constant = stack.pop #: (ConstantPathNode | ConstantReadNode)?
2694
+ value = ArrayPatternNode.new(source, node_id, location, flags, field_constant, field_requireds, field_rest, field_posts, field_opening_loc, field_closing_loc)
2695
+ value.freeze if freeze
2696
+ value
2697
+ },
2698
+ -> (constant_pool, encoding, freeze, stack) {
2699
+ node_id = load_varuint
2700
+ location = load_location(freeze)
2701
+ flags = load_varuint
2702
+ field_operator_loc = load_optional_location(freeze)
2703
+ field_value = stack.pop #: Prism::node
2704
+ field_key = stack.pop #: Prism::node
2705
+ value = AssocNode.new(source, node_id, location, flags, field_key, field_value, field_operator_loc)
2706
+ value.freeze if freeze
2707
+ value
2708
+ },
2709
+ -> (constant_pool, encoding, freeze, stack) {
2710
+ node_id = load_varuint
2711
+ location = load_location(freeze)
2712
+ flags = load_varuint
2713
+ field_operator_loc = load_location(freeze)
2714
+ field_value = stack.pop #: Prism::node?
2715
+ value = AssocSplatNode.new(source, node_id, location, flags, field_value, field_operator_loc)
2716
+ value.freeze if freeze
2717
+ value
2718
+ },
2719
+ -> (constant_pool, encoding, freeze, stack) {
2720
+ node_id = load_varuint
2721
+ location = load_location(freeze)
2722
+ flags = load_varuint
2723
+ field_name = load_constant(constant_pool, encoding)
2724
+ value = BackReferenceReadNode.new(source, node_id, location, flags, field_name)
2725
+ value.freeze if freeze
2726
+ value
2727
+ },
2728
+ -> (constant_pool, encoding, freeze, stack) {
2729
+ node_id = load_varuint
2730
+ location = load_location(freeze)
2731
+ flags = load_varuint
2732
+ field_begin_keyword_loc = load_optional_location(freeze)
2733
+ field_end_keyword_loc = load_optional_location(freeze)
2734
+ field_ensure_clause = stack.pop #: EnsureNode?
2735
+ field_else_clause = stack.pop #: ElseNode?
2736
+ field_rescue_clause = stack.pop #: RescueNode?
2737
+ field_statements = stack.pop #: StatementsNode?
2738
+ value = BeginNode.new(source, node_id, location, flags, field_begin_keyword_loc, field_statements, field_rescue_clause, field_else_clause, field_ensure_clause, field_end_keyword_loc)
2739
+ value.freeze if freeze
2740
+ value
2741
+ },
2742
+ -> (constant_pool, encoding, freeze, stack) {
2743
+ node_id = load_varuint
2744
+ location = load_location(freeze)
2745
+ flags = load_varuint
2746
+ field_operator_loc = load_location(freeze)
2747
+ field_expression = stack.pop #: Prism::node?
2748
+ value = BlockArgumentNode.new(source, node_id, location, flags, field_expression, field_operator_loc)
2749
+ value.freeze if freeze
2750
+ value
2751
+ },
2752
+ -> (constant_pool, encoding, freeze, stack) {
2753
+ node_id = load_varuint
2754
+ location = load_location(freeze)
2755
+ flags = load_varuint
2756
+ field_name = load_constant(constant_pool, encoding)
2757
+ value = BlockLocalVariableNode.new(source, node_id, location, flags, field_name)
2758
+ value.freeze if freeze
2759
+ value
2760
+ },
2761
+ -> (constant_pool, encoding, freeze, stack) {
2762
+ node_id = load_varuint
2763
+ location = load_location(freeze)
2764
+ flags = load_varuint
2765
+ field_locals = Array.new(load_varuint) { load_constant(constant_pool, encoding) }
2766
+ field_locals.freeze if freeze
2767
+ field_opening_loc = load_location(freeze)
2768
+ field_closing_loc = load_location(freeze)
2769
+ field_body = stack.pop #: (StatementsNode | BeginNode)?
2770
+ field_parameters = stack.pop #: (BlockParametersNode | NumberedParametersNode | ItParametersNode)?
2771
+ value = BlockNode.new(source, node_id, location, flags, field_locals, field_parameters, field_body, field_opening_loc, field_closing_loc)
2772
+ value.freeze if freeze
2773
+ value
2774
+ },
2775
+ -> (constant_pool, encoding, freeze, stack) {
2776
+ node_id = load_varuint
2777
+ location = load_location(freeze)
2778
+ flags = load_varuint
2779
+ field_name = load_optional_constant(constant_pool, encoding)
2780
+ field_name_loc = load_optional_location(freeze)
2781
+ field_operator_loc = load_location(freeze)
2782
+ value = BlockParameterNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc)
2783
+ value.freeze if freeze
2784
+ value
2785
+ },
2786
+ -> (constant_pool, encoding, freeze, stack) {
2787
+ node_id = load_varuint
2788
+ location = load_location(freeze)
2789
+ flags = load_varuint
2790
+ locals_size = load_varuint
2791
+ field_opening_loc = load_optional_location(freeze)
2792
+ field_closing_loc = load_optional_location(freeze)
2793
+ field_locals = stack.slice!(-locals_size, locals_size) #: Array[BlockLocalVariableNode]
2794
+ field_locals.freeze if freeze
2795
+ field_parameters = stack.pop #: ParametersNode?
2796
+ value = BlockParametersNode.new(source, node_id, location, flags, field_parameters, field_locals, field_opening_loc, field_closing_loc)
2797
+ value.freeze if freeze
2798
+ value
2799
+ },
2800
+ -> (constant_pool, encoding, freeze, stack) {
2801
+ node_id = load_varuint
2802
+ location = load_location(freeze)
2803
+ flags = load_varuint
2804
+ field_keyword_loc = load_location(freeze)
2805
+ field_arguments = stack.pop #: ArgumentsNode?
2806
+ value = BreakNode.new(source, node_id, location, flags, field_arguments, field_keyword_loc)
2807
+ value.freeze if freeze
2808
+ value
2809
+ },
2810
+ -> (constant_pool, encoding, freeze, stack) {
2811
+ node_id = load_varuint
2812
+ location = load_location(freeze)
2813
+ flags = load_varuint
2814
+ field_call_operator_loc = load_optional_location(freeze)
2815
+ field_message_loc = load_optional_location(freeze)
2816
+ field_read_name = load_constant(constant_pool, encoding)
2817
+ field_write_name = load_constant(constant_pool, encoding)
2818
+ field_operator_loc = load_location(freeze)
2819
+ field_value = stack.pop #: Prism::node
2820
+ field_receiver = stack.pop #: Prism::node?
2821
+ value = CallAndWriteNode.new(source, node_id, location, flags, field_receiver, field_call_operator_loc, field_message_loc, field_read_name, field_write_name, field_operator_loc, field_value)
2822
+ value.freeze if freeze
2823
+ value
2824
+ },
2825
+ -> (constant_pool, encoding, freeze, stack) {
2826
+ node_id = load_varuint
2827
+ location = load_location(freeze)
2828
+ flags = load_varuint
2829
+ field_call_operator_loc = load_optional_location(freeze)
2830
+ field_name = load_constant(constant_pool, encoding)
2831
+ field_message_loc = load_optional_location(freeze)
2832
+ field_opening_loc = load_optional_location(freeze)
2833
+ field_closing_loc = load_optional_location(freeze)
2834
+ field_equal_loc = load_optional_location(freeze)
2835
+ field_block = stack.pop #: (BlockNode | BlockArgumentNode)?
2836
+ field_arguments = stack.pop #: ArgumentsNode?
2837
+ field_receiver = stack.pop #: Prism::node?
2838
+ value = CallNode.new(source, node_id, location, flags, field_receiver, field_call_operator_loc, field_name, field_message_loc, field_opening_loc, field_arguments, field_closing_loc, field_equal_loc, field_block)
2839
+ value.freeze if freeze
2840
+ value
2841
+ },
2842
+ -> (constant_pool, encoding, freeze, stack) {
2843
+ node_id = load_varuint
2844
+ location = load_location(freeze)
2845
+ flags = load_varuint
2846
+ field_call_operator_loc = load_optional_location(freeze)
2847
+ field_message_loc = load_optional_location(freeze)
2848
+ field_read_name = load_constant(constant_pool, encoding)
2849
+ field_write_name = load_constant(constant_pool, encoding)
2850
+ field_binary_operator = load_constant(constant_pool, encoding)
2851
+ field_binary_operator_loc = load_location(freeze)
2852
+ field_value = stack.pop #: Prism::node
2853
+ field_receiver = stack.pop #: Prism::node?
2854
+ value = CallOperatorWriteNode.new(source, node_id, location, flags, field_receiver, field_call_operator_loc, field_message_loc, field_read_name, field_write_name, field_binary_operator, field_binary_operator_loc, field_value)
2855
+ value.freeze if freeze
2856
+ value
2857
+ },
2858
+ -> (constant_pool, encoding, freeze, stack) {
2859
+ node_id = load_varuint
2860
+ location = load_location(freeze)
2861
+ flags = load_varuint
2862
+ field_call_operator_loc = load_optional_location(freeze)
2863
+ field_message_loc = load_optional_location(freeze)
2864
+ field_read_name = load_constant(constant_pool, encoding)
2865
+ field_write_name = load_constant(constant_pool, encoding)
2866
+ field_operator_loc = load_location(freeze)
2867
+ field_value = stack.pop #: Prism::node
2868
+ field_receiver = stack.pop #: Prism::node?
2869
+ value = CallOrWriteNode.new(source, node_id, location, flags, field_receiver, field_call_operator_loc, field_message_loc, field_read_name, field_write_name, field_operator_loc, field_value)
2870
+ value.freeze if freeze
2871
+ value
2872
+ },
2873
+ -> (constant_pool, encoding, freeze, stack) {
2874
+ node_id = load_varuint
2875
+ location = load_location(freeze)
2876
+ flags = load_varuint
2877
+ field_call_operator_loc = load_location(freeze)
2878
+ field_name = load_constant(constant_pool, encoding)
2879
+ field_message_loc = load_location(freeze)
2880
+ field_receiver = stack.pop #: Prism::node
2881
+ value = CallTargetNode.new(source, node_id, location, flags, field_receiver, field_call_operator_loc, field_name, field_message_loc)
2882
+ value.freeze if freeze
2883
+ value
2884
+ },
2885
+ -> (constant_pool, encoding, freeze, stack) {
2886
+ node_id = load_varuint
2887
+ location = load_location(freeze)
2888
+ flags = load_varuint
2889
+ field_operator_loc = load_location(freeze)
2890
+ field_target = stack.pop #: LocalVariableTargetNode
2891
+ field_value = stack.pop #: Prism::node
2892
+ value = CapturePatternNode.new(source, node_id, location, flags, field_value, field_target, field_operator_loc)
2893
+ value.freeze if freeze
2894
+ value
2895
+ },
2896
+ -> (constant_pool, encoding, freeze, stack) {
2897
+ node_id = load_varuint
2898
+ location = load_location(freeze)
2899
+ flags = load_varuint
2900
+ conditions_size = load_varuint
2901
+ field_case_keyword_loc = load_location(freeze)
2902
+ field_end_keyword_loc = load_location(freeze)
2903
+ field_else_clause = stack.pop #: ElseNode?
2904
+ field_conditions = stack.slice!(-conditions_size, conditions_size) #: Array[InNode]
2905
+ field_conditions.freeze if freeze
2906
+ field_predicate = stack.pop #: Prism::node?
2907
+ value = CaseMatchNode.new(source, node_id, location, flags, field_predicate, field_conditions, field_else_clause, field_case_keyword_loc, field_end_keyword_loc)
2908
+ value.freeze if freeze
2909
+ value
2910
+ },
2911
+ -> (constant_pool, encoding, freeze, stack) {
2912
+ node_id = load_varuint
2913
+ location = load_location(freeze)
2914
+ flags = load_varuint
2915
+ conditions_size = load_varuint
2916
+ field_case_keyword_loc = load_location(freeze)
2917
+ field_end_keyword_loc = load_location(freeze)
2918
+ field_else_clause = stack.pop #: ElseNode?
2919
+ field_conditions = stack.slice!(-conditions_size, conditions_size) #: Array[WhenNode]
2920
+ field_conditions.freeze if freeze
2921
+ field_predicate = stack.pop #: Prism::node?
2922
+ value = CaseNode.new(source, node_id, location, flags, field_predicate, field_conditions, field_else_clause, field_case_keyword_loc, field_end_keyword_loc)
2923
+ value.freeze if freeze
2924
+ value
2925
+ },
2926
+ -> (constant_pool, encoding, freeze, stack) {
2927
+ node_id = load_varuint
2928
+ location = load_location(freeze)
2929
+ flags = load_varuint
2930
+ field_locals = Array.new(load_varuint) { load_constant(constant_pool, encoding) }
2931
+ field_locals.freeze if freeze
2932
+ field_class_keyword_loc = load_location(freeze)
2933
+ field_inheritance_operator_loc = load_optional_location(freeze)
2934
+ field_end_keyword_loc = load_location(freeze)
2935
+ field_name = load_constant(constant_pool, encoding)
2936
+ field_body = stack.pop #: (StatementsNode | BeginNode)?
2937
+ field_superclass = stack.pop #: Prism::node?
2938
+ field_constant_path = stack.pop #: (ConstantReadNode | ConstantPathNode)
2939
+ value = ClassNode.new(source, node_id, location, flags, field_locals, field_class_keyword_loc, field_constant_path, field_inheritance_operator_loc, field_superclass, field_body, field_end_keyword_loc, field_name)
2940
+ value.freeze if freeze
2941
+ value
2942
+ },
2943
+ -> (constant_pool, encoding, freeze, stack) {
2944
+ node_id = load_varuint
2945
+ location = load_location(freeze)
2946
+ flags = load_varuint
2947
+ field_name = load_constant(constant_pool, encoding)
2948
+ field_name_loc = load_location(freeze)
2949
+ field_operator_loc = load_location(freeze)
2950
+ field_value = stack.pop #: Prism::node
2951
+ value = ClassVariableAndWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
2952
+ value.freeze if freeze
2953
+ value
2954
+ },
2955
+ -> (constant_pool, encoding, freeze, stack) {
2956
+ node_id = load_varuint
2957
+ location = load_location(freeze)
2958
+ flags = load_varuint
2959
+ field_name = load_constant(constant_pool, encoding)
2960
+ field_name_loc = load_location(freeze)
2961
+ field_binary_operator_loc = load_location(freeze)
2962
+ field_binary_operator = load_constant(constant_pool, encoding)
2963
+ field_value = stack.pop #: Prism::node
2964
+ value = ClassVariableOperatorWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_binary_operator_loc, field_value, field_binary_operator)
2965
+ value.freeze if freeze
2966
+ value
2967
+ },
2968
+ -> (constant_pool, encoding, freeze, stack) {
2969
+ node_id = load_varuint
2970
+ location = load_location(freeze)
2971
+ flags = load_varuint
2972
+ field_name = load_constant(constant_pool, encoding)
2973
+ field_name_loc = load_location(freeze)
2974
+ field_operator_loc = load_location(freeze)
2975
+ field_value = stack.pop #: Prism::node
2976
+ value = ClassVariableOrWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
2977
+ value.freeze if freeze
2978
+ value
2979
+ },
2980
+ -> (constant_pool, encoding, freeze, stack) {
2981
+ node_id = load_varuint
2982
+ location = load_location(freeze)
2983
+ flags = load_varuint
2984
+ field_name = load_constant(constant_pool, encoding)
2985
+ value = ClassVariableReadNode.new(source, node_id, location, flags, field_name)
2986
+ value.freeze if freeze
2987
+ value
2988
+ },
2989
+ -> (constant_pool, encoding, freeze, stack) {
2990
+ node_id = load_varuint
2991
+ location = load_location(freeze)
2992
+ flags = load_varuint
2993
+ field_name = load_constant(constant_pool, encoding)
2994
+ value = ClassVariableTargetNode.new(source, node_id, location, flags, field_name)
2995
+ value.freeze if freeze
2996
+ value
2997
+ },
2998
+ -> (constant_pool, encoding, freeze, stack) {
2999
+ node_id = load_varuint
3000
+ location = load_location(freeze)
3001
+ flags = load_varuint
3002
+ field_name = load_constant(constant_pool, encoding)
3003
+ field_name_loc = load_location(freeze)
3004
+ field_operator_loc = load_location(freeze)
3005
+ field_value = stack.pop #: Prism::node
3006
+ value = ClassVariableWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_value, field_operator_loc)
3007
+ value.freeze if freeze
3008
+ value
3009
+ },
3010
+ -> (constant_pool, encoding, freeze, stack) {
3011
+ node_id = load_varuint
3012
+ location = load_location(freeze)
3013
+ flags = load_varuint
3014
+ field_name = load_constant(constant_pool, encoding)
3015
+ field_name_loc = load_location(freeze)
3016
+ field_operator_loc = load_location(freeze)
3017
+ field_value = stack.pop #: Prism::node
3018
+ value = ConstantAndWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
3019
+ value.freeze if freeze
3020
+ value
3021
+ },
3022
+ -> (constant_pool, encoding, freeze, stack) {
3023
+ node_id = load_varuint
3024
+ location = load_location(freeze)
3025
+ flags = load_varuint
3026
+ field_name = load_constant(constant_pool, encoding)
3027
+ field_name_loc = load_location(freeze)
3028
+ field_binary_operator_loc = load_location(freeze)
3029
+ field_binary_operator = load_constant(constant_pool, encoding)
3030
+ field_value = stack.pop #: Prism::node
3031
+ value = ConstantOperatorWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_binary_operator_loc, field_value, field_binary_operator)
3032
+ value.freeze if freeze
3033
+ value
3034
+ },
3035
+ -> (constant_pool, encoding, freeze, stack) {
3036
+ node_id = load_varuint
3037
+ location = load_location(freeze)
3038
+ flags = load_varuint
3039
+ field_name = load_constant(constant_pool, encoding)
3040
+ field_name_loc = load_location(freeze)
3041
+ field_operator_loc = load_location(freeze)
3042
+ field_value = stack.pop #: Prism::node
3043
+ value = ConstantOrWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
3044
+ value.freeze if freeze
3045
+ value
3046
+ },
3047
+ -> (constant_pool, encoding, freeze, stack) {
3048
+ node_id = load_varuint
3049
+ location = load_location(freeze)
3050
+ flags = load_varuint
3051
+ field_operator_loc = load_location(freeze)
3052
+ field_value = stack.pop #: Prism::node
3053
+ field_target = stack.pop #: ConstantPathNode
3054
+ value = ConstantPathAndWriteNode.new(source, node_id, location, flags, field_target, field_operator_loc, field_value)
3055
+ value.freeze if freeze
3056
+ value
3057
+ },
3058
+ -> (constant_pool, encoding, freeze, stack) {
3059
+ node_id = load_varuint
3060
+ location = load_location(freeze)
3061
+ flags = load_varuint
3062
+ field_name = load_optional_constant(constant_pool, encoding)
3063
+ field_delimiter_loc = load_location(freeze)
3064
+ field_name_loc = load_location(freeze)
3065
+ field_parent = stack.pop #: Prism::node?
3066
+ value = ConstantPathNode.new(source, node_id, location, flags, field_parent, field_name, field_delimiter_loc, field_name_loc)
3067
+ value.freeze if freeze
3068
+ value
3069
+ },
3070
+ -> (constant_pool, encoding, freeze, stack) {
3071
+ node_id = load_varuint
3072
+ location = load_location(freeze)
3073
+ flags = load_varuint
3074
+ field_binary_operator_loc = load_location(freeze)
3075
+ field_binary_operator = load_constant(constant_pool, encoding)
3076
+ field_value = stack.pop #: Prism::node
3077
+ field_target = stack.pop #: ConstantPathNode
3078
+ value = ConstantPathOperatorWriteNode.new(source, node_id, location, flags, field_target, field_binary_operator_loc, field_value, field_binary_operator)
3079
+ value.freeze if freeze
3080
+ value
3081
+ },
3082
+ -> (constant_pool, encoding, freeze, stack) {
3083
+ node_id = load_varuint
3084
+ location = load_location(freeze)
3085
+ flags = load_varuint
3086
+ field_operator_loc = load_location(freeze)
3087
+ field_value = stack.pop #: Prism::node
3088
+ field_target = stack.pop #: ConstantPathNode
3089
+ value = ConstantPathOrWriteNode.new(source, node_id, location, flags, field_target, field_operator_loc, field_value)
3090
+ value.freeze if freeze
3091
+ value
3092
+ },
3093
+ -> (constant_pool, encoding, freeze, stack) {
3094
+ node_id = load_varuint
3095
+ location = load_location(freeze)
3096
+ flags = load_varuint
3097
+ field_name = load_optional_constant(constant_pool, encoding)
3098
+ field_delimiter_loc = load_location(freeze)
3099
+ field_name_loc = load_location(freeze)
3100
+ field_parent = stack.pop #: Prism::node?
3101
+ value = ConstantPathTargetNode.new(source, node_id, location, flags, field_parent, field_name, field_delimiter_loc, field_name_loc)
3102
+ value.freeze if freeze
3103
+ value
3104
+ },
3105
+ -> (constant_pool, encoding, freeze, stack) {
3106
+ node_id = load_varuint
3107
+ location = load_location(freeze)
3108
+ flags = load_varuint
3109
+ field_operator_loc = load_location(freeze)
3110
+ field_value = stack.pop #: Prism::node
3111
+ field_target = stack.pop #: ConstantPathNode
3112
+ value = ConstantPathWriteNode.new(source, node_id, location, flags, field_target, field_operator_loc, field_value)
3113
+ value.freeze if freeze
3114
+ value
3115
+ },
3116
+ -> (constant_pool, encoding, freeze, stack) {
3117
+ node_id = load_varuint
3118
+ location = load_location(freeze)
3119
+ flags = load_varuint
3120
+ field_name = load_constant(constant_pool, encoding)
3121
+ value = ConstantReadNode.new(source, node_id, location, flags, field_name)
3122
+ value.freeze if freeze
3123
+ value
3124
+ },
3125
+ -> (constant_pool, encoding, freeze, stack) {
3126
+ node_id = load_varuint
3127
+ location = load_location(freeze)
3128
+ flags = load_varuint
3129
+ field_name = load_constant(constant_pool, encoding)
3130
+ value = ConstantTargetNode.new(source, node_id, location, flags, field_name)
3131
+ value.freeze if freeze
3132
+ value
3133
+ },
3134
+ -> (constant_pool, encoding, freeze, stack) {
3135
+ node_id = load_varuint
3136
+ location = load_location(freeze)
3137
+ flags = load_varuint
3138
+ field_name = load_constant(constant_pool, encoding)
3139
+ field_name_loc = load_location(freeze)
3140
+ field_operator_loc = load_location(freeze)
3141
+ field_value = stack.pop #: Prism::node
3142
+ value = ConstantWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_value, field_operator_loc)
3143
+ value.freeze if freeze
3144
+ value
3145
+ },
3146
+ -> (constant_pool, encoding, freeze, stack) {
3147
+ node_id = load_varuint
3148
+ location = load_location(freeze)
3149
+ flags = load_varuint
3150
+ field_name = load_constant(constant_pool, encoding)
3151
+ field_name_loc = load_location(freeze)
3152
+ field_locals = Array.new(load_varuint) { load_constant(constant_pool, encoding) }
3153
+ field_locals.freeze if freeze
3154
+ field_def_keyword_loc = load_location(freeze)
3155
+ field_operator_loc = load_optional_location(freeze)
3156
+ field_lparen_loc = load_optional_location(freeze)
3157
+ field_rparen_loc = load_optional_location(freeze)
3158
+ field_equal_loc = load_optional_location(freeze)
3159
+ field_end_keyword_loc = load_optional_location(freeze)
3160
+ field_body = stack.pop #: (StatementsNode | BeginNode)?
3161
+ field_parameters = stack.pop #: ParametersNode?
3162
+ field_receiver = stack.pop #: Prism::node?
3163
+ value = DefNode.new(source, node_id, location, flags, field_name, field_name_loc, field_receiver, field_parameters, field_body, field_locals, field_def_keyword_loc, field_operator_loc, field_lparen_loc, field_rparen_loc, field_equal_loc, field_end_keyword_loc)
3164
+ value.freeze if freeze
3165
+ value
3166
+ },
3167
+ -> (constant_pool, encoding, freeze, stack) {
3168
+ node_id = load_varuint
3169
+ location = load_location(freeze)
3170
+ flags = load_varuint
3171
+ field_lparen_loc = load_optional_location(freeze)
3172
+ field_rparen_loc = load_optional_location(freeze)
3173
+ field_keyword_loc = load_location(freeze)
3174
+ field_value = stack.pop #: Prism::node
3175
+ value = DefinedNode.new(source, node_id, location, flags, field_lparen_loc, field_value, field_rparen_loc, field_keyword_loc)
3176
+ value.freeze if freeze
3177
+ value
3178
+ },
3179
+ -> (constant_pool, encoding, freeze, stack) {
3180
+ node_id = load_varuint
3181
+ location = load_location(freeze)
3182
+ flags = load_varuint
3183
+ field_else_keyword_loc = load_location(freeze)
3184
+ field_end_keyword_loc = load_optional_location(freeze)
3185
+ field_statements = stack.pop #: StatementsNode?
3186
+ value = ElseNode.new(source, node_id, location, flags, field_else_keyword_loc, field_statements, field_end_keyword_loc)
3187
+ value.freeze if freeze
3188
+ value
3189
+ },
3190
+ -> (constant_pool, encoding, freeze, stack) {
3191
+ node_id = load_varuint
3192
+ location = load_location(freeze)
3193
+ flags = load_varuint
3194
+ field_opening_loc = load_location(freeze)
3195
+ field_closing_loc = load_location(freeze)
3196
+ field_statements = stack.pop #: StatementsNode?
3197
+ value = EmbeddedStatementsNode.new(source, node_id, location, flags, field_opening_loc, field_statements, field_closing_loc)
3198
+ value.freeze if freeze
3199
+ value
3200
+ },
3201
+ -> (constant_pool, encoding, freeze, stack) {
3202
+ node_id = load_varuint
3203
+ location = load_location(freeze)
3204
+ flags = load_varuint
3205
+ field_operator_loc = load_location(freeze)
3206
+ field_variable = stack.pop #: (InstanceVariableReadNode | ClassVariableReadNode | GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode)
3207
+ value = EmbeddedVariableNode.new(source, node_id, location, flags, field_operator_loc, field_variable)
3208
+ value.freeze if freeze
3209
+ value
3210
+ },
3211
+ -> (constant_pool, encoding, freeze, stack) {
3212
+ node_id = load_varuint
3213
+ location = load_location(freeze)
3214
+ flags = load_varuint
3215
+ field_ensure_keyword_loc = load_location(freeze)
3216
+ field_end_keyword_loc = load_location(freeze)
3217
+ field_statements = stack.pop #: StatementsNode?
3218
+ value = EnsureNode.new(source, node_id, location, flags, field_ensure_keyword_loc, field_statements, field_end_keyword_loc)
3219
+ value.freeze if freeze
3220
+ value
3221
+ },
3222
+ -> (constant_pool, encoding, freeze, stack) {
3223
+ node_id = load_varuint
3224
+ location = load_location(freeze)
3225
+ flags = load_varuint
3226
+ field_unexpected = stack.pop #: Prism::node?
3227
+ value = ErrorRecoveryNode.new(source, node_id, location, flags, field_unexpected)
3228
+ value.freeze if freeze
3229
+ value
3230
+ },
3231
+ -> (constant_pool, encoding, freeze, stack) {
3232
+ node_id = load_varuint
3233
+ location = load_location(freeze)
3234
+ flags = load_varuint
3235
+ value = FalseNode.new(source, node_id, location, flags)
3236
+ value.freeze if freeze
3237
+ value
3238
+ },
3239
+ -> (constant_pool, encoding, freeze, stack) {
3240
+ node_id = load_varuint
3241
+ location = load_location(freeze)
3242
+ flags = load_varuint
3243
+ requireds_size = load_varuint
3244
+ field_opening_loc = load_optional_location(freeze)
3245
+ field_closing_loc = load_optional_location(freeze)
3246
+ field_right = stack.pop #: SplatNode
3247
+ field_requireds = stack.slice!(-requireds_size, requireds_size) #: Array[Prism::node]
3248
+ field_requireds.freeze if freeze
3249
+ field_left = stack.pop #: SplatNode
3250
+ field_constant = stack.pop #: (ConstantPathNode | ConstantReadNode)?
3251
+ value = FindPatternNode.new(source, node_id, location, flags, field_constant, field_left, field_requireds, field_right, field_opening_loc, field_closing_loc)
3252
+ value.freeze if freeze
3253
+ value
3254
+ },
3255
+ -> (constant_pool, encoding, freeze, stack) {
3256
+ node_id = load_varuint
3257
+ location = load_location(freeze)
3258
+ flags = load_varuint
3259
+ field_operator_loc = load_location(freeze)
3260
+ field_right = stack.pop #: Prism::node?
3261
+ field_left = stack.pop #: Prism::node?
3262
+ value = FlipFlopNode.new(source, node_id, location, flags, field_left, field_right, field_operator_loc)
3263
+ value.freeze if freeze
3264
+ value
3265
+ },
3266
+ -> (constant_pool, encoding, freeze, stack) {
3267
+ node_id = load_varuint
3268
+ location = load_location(freeze)
3269
+ flags = load_varuint
3270
+ field_value = load_double
3271
+ value = FloatNode.new(source, node_id, location, flags, field_value)
3272
+ value.freeze if freeze
3273
+ value
3274
+ },
3275
+ -> (constant_pool, encoding, freeze, stack) {
3276
+ node_id = load_varuint
3277
+ location = load_location(freeze)
3278
+ flags = load_varuint
3279
+ field_for_keyword_loc = load_location(freeze)
3280
+ field_in_keyword_loc = load_location(freeze)
3281
+ field_do_keyword_loc = load_optional_location(freeze)
3282
+ field_end_keyword_loc = load_location(freeze)
3283
+ field_statements = stack.pop #: StatementsNode?
3284
+ field_collection = stack.pop #: Prism::node
3285
+ field_index = stack.pop #: (LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode)
3286
+ value = ForNode.new(source, node_id, location, flags, field_index, field_collection, field_statements, field_for_keyword_loc, field_in_keyword_loc, field_do_keyword_loc, field_end_keyword_loc)
3287
+ value.freeze if freeze
3288
+ value
3289
+ },
3290
+ -> (constant_pool, encoding, freeze, stack) {
3291
+ node_id = load_varuint
3292
+ location = load_location(freeze)
3293
+ flags = load_varuint
3294
+ value = ForwardingArgumentsNode.new(source, node_id, location, flags)
3295
+ value.freeze if freeze
3296
+ value
3297
+ },
3298
+ -> (constant_pool, encoding, freeze, stack) {
3299
+ node_id = load_varuint
3300
+ location = load_location(freeze)
3301
+ flags = load_varuint
3302
+ value = ForwardingParameterNode.new(source, node_id, location, flags)
3303
+ value.freeze if freeze
3304
+ value
3305
+ },
3306
+ -> (constant_pool, encoding, freeze, stack) {
3307
+ node_id = load_varuint
3308
+ location = load_location(freeze)
3309
+ flags = load_varuint
3310
+ field_keyword_loc = load_location(freeze)
3311
+ field_block = stack.pop #: BlockNode?
3312
+ value = ForwardingSuperNode.new(source, node_id, location, flags, field_keyword_loc, field_block)
3313
+ value.freeze if freeze
3314
+ value
3315
+ },
3316
+ -> (constant_pool, encoding, freeze, stack) {
3317
+ node_id = load_varuint
3318
+ location = load_location(freeze)
3319
+ flags = load_varuint
3320
+ field_name = load_constant(constant_pool, encoding)
3321
+ field_name_loc = load_location(freeze)
3322
+ field_operator_loc = load_location(freeze)
3323
+ field_value = stack.pop #: Prism::node
3324
+ value = GlobalVariableAndWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
3325
+ value.freeze if freeze
3326
+ value
3327
+ },
3328
+ -> (constant_pool, encoding, freeze, stack) {
3329
+ node_id = load_varuint
3330
+ location = load_location(freeze)
3331
+ flags = load_varuint
3332
+ field_name = load_constant(constant_pool, encoding)
3333
+ field_name_loc = load_location(freeze)
3334
+ field_binary_operator_loc = load_location(freeze)
3335
+ field_binary_operator = load_constant(constant_pool, encoding)
3336
+ field_value = stack.pop #: Prism::node
3337
+ value = GlobalVariableOperatorWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_binary_operator_loc, field_value, field_binary_operator)
3338
+ value.freeze if freeze
3339
+ value
3340
+ },
3341
+ -> (constant_pool, encoding, freeze, stack) {
3342
+ node_id = load_varuint
3343
+ location = load_location(freeze)
3344
+ flags = load_varuint
3345
+ field_name = load_constant(constant_pool, encoding)
3346
+ field_name_loc = load_location(freeze)
3347
+ field_operator_loc = load_location(freeze)
3348
+ field_value = stack.pop #: Prism::node
3349
+ value = GlobalVariableOrWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
3350
+ value.freeze if freeze
3351
+ value
3352
+ },
3353
+ -> (constant_pool, encoding, freeze, stack) {
3354
+ node_id = load_varuint
3355
+ location = load_location(freeze)
3356
+ flags = load_varuint
3357
+ field_name = load_constant(constant_pool, encoding)
3358
+ value = GlobalVariableReadNode.new(source, node_id, location, flags, field_name)
3359
+ value.freeze if freeze
3360
+ value
3361
+ },
3362
+ -> (constant_pool, encoding, freeze, stack) {
3363
+ node_id = load_varuint
3364
+ location = load_location(freeze)
3365
+ flags = load_varuint
3366
+ field_name = load_constant(constant_pool, encoding)
3367
+ value = GlobalVariableTargetNode.new(source, node_id, location, flags, field_name)
3368
+ value.freeze if freeze
3369
+ value
3370
+ },
3371
+ -> (constant_pool, encoding, freeze, stack) {
3372
+ node_id = load_varuint
3373
+ location = load_location(freeze)
3374
+ flags = load_varuint
3375
+ field_name = load_constant(constant_pool, encoding)
3376
+ field_name_loc = load_location(freeze)
3377
+ field_operator_loc = load_location(freeze)
3378
+ field_value = stack.pop #: Prism::node
3379
+ value = GlobalVariableWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_value, field_operator_loc)
3380
+ value.freeze if freeze
3381
+ value
3382
+ },
3383
+ -> (constant_pool, encoding, freeze, stack) {
3384
+ node_id = load_varuint
3385
+ location = load_location(freeze)
3386
+ flags = load_varuint
3387
+ field_opening_loc = load_location(freeze)
3388
+ elements_size = load_varuint
3389
+ field_closing_loc = load_location(freeze)
3390
+ field_elements = stack.slice!(-elements_size, elements_size) #: Array[AssocNode | AssocSplatNode]
3391
+ field_elements.freeze if freeze
3392
+ value = HashNode.new(source, node_id, location, flags, field_opening_loc, field_elements, field_closing_loc)
3393
+ value.freeze if freeze
3394
+ value
3395
+ },
3396
+ -> (constant_pool, encoding, freeze, stack) {
3397
+ node_id = load_varuint
3398
+ location = load_location(freeze)
3399
+ flags = load_varuint
3400
+ elements_size = load_varuint
3401
+ field_opening_loc = load_optional_location(freeze)
3402
+ field_closing_loc = load_optional_location(freeze)
3403
+ field_rest = stack.pop #: (AssocSplatNode | NoKeywordsParameterNode)?
3404
+ field_elements = stack.slice!(-elements_size, elements_size) #: Array[AssocNode]
3405
+ field_elements.freeze if freeze
3406
+ field_constant = stack.pop #: (ConstantPathNode | ConstantReadNode)?
3407
+ value = HashPatternNode.new(source, node_id, location, flags, field_constant, field_elements, field_rest, field_opening_loc, field_closing_loc)
3408
+ value.freeze if freeze
3409
+ value
3410
+ },
3411
+ -> (constant_pool, encoding, freeze, stack) {
3412
+ node_id = load_varuint
3413
+ location = load_location(freeze)
3414
+ flags = load_varuint
3415
+ field_if_keyword_loc = load_optional_location(freeze)
3416
+ field_then_keyword_loc = load_optional_location(freeze)
3417
+ field_end_keyword_loc = load_optional_location(freeze)
3418
+ field_subsequent = stack.pop #: (ElseNode | IfNode)?
3419
+ field_statements = stack.pop #: StatementsNode?
3420
+ field_predicate = stack.pop #: Prism::node
3421
+ value = IfNode.new(source, node_id, location, flags, field_if_keyword_loc, field_predicate, field_then_keyword_loc, field_statements, field_subsequent, field_end_keyword_loc)
3422
+ value.freeze if freeze
3423
+ value
3424
+ },
3425
+ -> (constant_pool, encoding, freeze, stack) {
3426
+ node_id = load_varuint
3427
+ location = load_location(freeze)
3428
+ flags = load_varuint
3429
+ field_numeric = stack.pop #: (FloatNode | IntegerNode | RationalNode)
3430
+ value = ImaginaryNode.new(source, node_id, location, flags, field_numeric)
3431
+ value.freeze if freeze
3432
+ value
3433
+ },
3434
+ -> (constant_pool, encoding, freeze, stack) {
3435
+ node_id = load_varuint
3436
+ location = load_location(freeze)
3437
+ flags = load_varuint
3438
+ field_value = stack.pop #: (LocalVariableReadNode | CallNode | ConstantReadNode | LocalVariableTargetNode)
3439
+ value = ImplicitNode.new(source, node_id, location, flags, field_value)
3440
+ value.freeze if freeze
3441
+ value
3442
+ },
3443
+ -> (constant_pool, encoding, freeze, stack) {
3444
+ node_id = load_varuint
3445
+ location = load_location(freeze)
3446
+ flags = load_varuint
3447
+ value = ImplicitRestNode.new(source, node_id, location, flags)
3448
+ value.freeze if freeze
3449
+ value
3450
+ },
3451
+ -> (constant_pool, encoding, freeze, stack) {
3452
+ node_id = load_varuint
3453
+ location = load_location(freeze)
3454
+ flags = load_varuint
3455
+ field_in_keyword_loc = load_location(freeze)
3456
+ field_then_keyword_loc = load_optional_location(freeze)
3457
+ field_statements = stack.pop #: StatementsNode?
3458
+ field_pattern = stack.pop #: Prism::node
3459
+ value = InNode.new(source, node_id, location, flags, field_pattern, field_statements, field_in_keyword_loc, field_then_keyword_loc)
3460
+ value.freeze if freeze
3461
+ value
3462
+ },
3463
+ -> (constant_pool, encoding, freeze, stack) {
3464
+ node_id = load_varuint
3465
+ location = load_location(freeze)
3466
+ flags = load_varuint
3467
+ field_call_operator_loc = load_optional_location(freeze)
3468
+ field_opening_loc = load_location(freeze)
3469
+ field_closing_loc = load_location(freeze)
3470
+ field_operator_loc = load_location(freeze)
3471
+ field_value = stack.pop #: Prism::node
3472
+ field_block = stack.pop #: BlockArgumentNode?
3473
+ field_arguments = stack.pop #: ArgumentsNode?
3474
+ field_receiver = stack.pop #: Prism::node?
3475
+ value = IndexAndWriteNode.new(source, node_id, location, flags, field_receiver, field_call_operator_loc, field_opening_loc, field_arguments, field_closing_loc, field_block, field_operator_loc, field_value)
3476
+ value.freeze if freeze
3477
+ value
3478
+ },
3479
+ -> (constant_pool, encoding, freeze, stack) {
3480
+ node_id = load_varuint
3481
+ location = load_location(freeze)
3482
+ flags = load_varuint
3483
+ field_call_operator_loc = load_optional_location(freeze)
3484
+ field_opening_loc = load_location(freeze)
3485
+ field_closing_loc = load_location(freeze)
3486
+ field_binary_operator = load_constant(constant_pool, encoding)
3487
+ field_binary_operator_loc = load_location(freeze)
3488
+ field_value = stack.pop #: Prism::node
3489
+ field_block = stack.pop #: BlockArgumentNode?
3490
+ field_arguments = stack.pop #: ArgumentsNode?
3491
+ field_receiver = stack.pop #: Prism::node?
3492
+ value = IndexOperatorWriteNode.new(source, node_id, location, flags, field_receiver, field_call_operator_loc, field_opening_loc, field_arguments, field_closing_loc, field_block, field_binary_operator, field_binary_operator_loc, field_value)
3493
+ value.freeze if freeze
3494
+ value
3495
+ },
3496
+ -> (constant_pool, encoding, freeze, stack) {
3497
+ node_id = load_varuint
3498
+ location = load_location(freeze)
3499
+ flags = load_varuint
3500
+ field_call_operator_loc = load_optional_location(freeze)
3501
+ field_opening_loc = load_location(freeze)
3502
+ field_closing_loc = load_location(freeze)
3503
+ field_operator_loc = load_location(freeze)
3504
+ field_value = stack.pop #: Prism::node
3505
+ field_block = stack.pop #: BlockArgumentNode?
3506
+ field_arguments = stack.pop #: ArgumentsNode?
3507
+ field_receiver = stack.pop #: Prism::node?
3508
+ value = IndexOrWriteNode.new(source, node_id, location, flags, field_receiver, field_call_operator_loc, field_opening_loc, field_arguments, field_closing_loc, field_block, field_operator_loc, field_value)
3509
+ value.freeze if freeze
3510
+ value
3511
+ },
3512
+ -> (constant_pool, encoding, freeze, stack) {
3513
+ node_id = load_varuint
3514
+ location = load_location(freeze)
3515
+ flags = load_varuint
3516
+ field_opening_loc = load_location(freeze)
3517
+ field_closing_loc = load_location(freeze)
3518
+ field_block = stack.pop #: BlockArgumentNode?
3519
+ field_arguments = stack.pop #: ArgumentsNode?
3520
+ field_receiver = stack.pop #: Prism::node
3521
+ value = IndexTargetNode.new(source, node_id, location, flags, field_receiver, field_opening_loc, field_arguments, field_closing_loc, field_block)
3522
+ value.freeze if freeze
3523
+ value
3524
+ },
3525
+ -> (constant_pool, encoding, freeze, stack) {
3526
+ node_id = load_varuint
3527
+ location = load_location(freeze)
3528
+ flags = load_varuint
3529
+ field_name = load_constant(constant_pool, encoding)
3530
+ field_name_loc = load_location(freeze)
3531
+ field_operator_loc = load_location(freeze)
3532
+ field_value = stack.pop #: Prism::node
3533
+ value = InstanceVariableAndWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
3534
+ value.freeze if freeze
3535
+ value
3536
+ },
3537
+ -> (constant_pool, encoding, freeze, stack) {
3538
+ node_id = load_varuint
3539
+ location = load_location(freeze)
3540
+ flags = load_varuint
3541
+ field_name = load_constant(constant_pool, encoding)
3542
+ field_name_loc = load_location(freeze)
3543
+ field_binary_operator_loc = load_location(freeze)
3544
+ field_binary_operator = load_constant(constant_pool, encoding)
3545
+ field_value = stack.pop #: Prism::node
3546
+ value = InstanceVariableOperatorWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_binary_operator_loc, field_value, field_binary_operator)
3547
+ value.freeze if freeze
3548
+ value
3549
+ },
3550
+ -> (constant_pool, encoding, freeze, stack) {
3551
+ node_id = load_varuint
3552
+ location = load_location(freeze)
3553
+ flags = load_varuint
3554
+ field_name = load_constant(constant_pool, encoding)
3555
+ field_name_loc = load_location(freeze)
3556
+ field_operator_loc = load_location(freeze)
3557
+ field_value = stack.pop #: Prism::node
3558
+ value = InstanceVariableOrWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
3559
+ value.freeze if freeze
3560
+ value
3561
+ },
3562
+ -> (constant_pool, encoding, freeze, stack) {
3563
+ node_id = load_varuint
3564
+ location = load_location(freeze)
3565
+ flags = load_varuint
3566
+ field_name = load_constant(constant_pool, encoding)
3567
+ value = InstanceVariableReadNode.new(source, node_id, location, flags, field_name)
3568
+ value.freeze if freeze
3569
+ value
3570
+ },
3571
+ -> (constant_pool, encoding, freeze, stack) {
3572
+ node_id = load_varuint
3573
+ location = load_location(freeze)
3574
+ flags = load_varuint
3575
+ field_name = load_constant(constant_pool, encoding)
3576
+ value = InstanceVariableTargetNode.new(source, node_id, location, flags, field_name)
3577
+ value.freeze if freeze
3578
+ value
3579
+ },
3580
+ -> (constant_pool, encoding, freeze, stack) {
3581
+ node_id = load_varuint
3582
+ location = load_location(freeze)
3583
+ flags = load_varuint
3584
+ field_name = load_constant(constant_pool, encoding)
3585
+ field_name_loc = load_location(freeze)
3586
+ field_operator_loc = load_location(freeze)
3587
+ field_value = stack.pop #: Prism::node
3588
+ value = InstanceVariableWriteNode.new(source, node_id, location, flags, field_name, field_name_loc, field_value, field_operator_loc)
3589
+ value.freeze if freeze
3590
+ value
3591
+ },
3592
+ -> (constant_pool, encoding, freeze, stack) {
3593
+ node_id = load_varuint
3594
+ location = load_location(freeze)
3595
+ flags = load_varuint
3596
+ field_value = load_integer
3597
+ value = IntegerNode.new(source, node_id, location, flags, field_value)
3598
+ value.freeze if freeze
3599
+ value
3600
+ },
3601
+ -> (constant_pool, encoding, freeze, stack) {
3602
+ node_id = load_varuint
3603
+ location = load_location(freeze)
3604
+ flags = load_varuint
3605
+ field_opening_loc = load_location(freeze)
3606
+ parts_size = load_varuint
3607
+ field_closing_loc = load_location(freeze)
3608
+ field_parts = stack.slice!(-parts_size, parts_size) #: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode]
3609
+ field_parts.freeze if freeze
3610
+ value = InterpolatedMatchLastLineNode.new(source, node_id, location, flags, field_opening_loc, field_parts, field_closing_loc)
3611
+ value.freeze if freeze
3612
+ value
3613
+ },
3614
+ -> (constant_pool, encoding, freeze, stack) {
3615
+ node_id = load_varuint
3616
+ location = load_location(freeze)
3617
+ flags = load_varuint
3618
+ field_opening_loc = load_location(freeze)
3619
+ parts_size = load_varuint
3620
+ field_closing_loc = load_location(freeze)
3621
+ field_parts = stack.slice!(-parts_size, parts_size) #: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode]
3622
+ field_parts.freeze if freeze
3623
+ value = InterpolatedRegularExpressionNode.new(source, node_id, location, flags, field_opening_loc, field_parts, field_closing_loc)
3624
+ value.freeze if freeze
3625
+ value
3626
+ },
3627
+ -> (constant_pool, encoding, freeze, stack) {
3628
+ node_id = load_varuint
3629
+ location = load_location(freeze)
3630
+ flags = load_varuint
3631
+ field_opening_loc = load_optional_location(freeze)
3632
+ parts_size = load_varuint
3633
+ field_closing_loc = load_optional_location(freeze)
3634
+ field_parts = stack.slice!(-parts_size, parts_size) #: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode]
3635
+ field_parts.freeze if freeze
3636
+ value = InterpolatedStringNode.new(source, node_id, location, flags, field_opening_loc, field_parts, field_closing_loc)
3637
+ value.freeze if freeze
3638
+ value
3639
+ },
3640
+ -> (constant_pool, encoding, freeze, stack) {
3641
+ node_id = load_varuint
3642
+ location = load_location(freeze)
3643
+ flags = load_varuint
3644
+ field_opening_loc = load_optional_location(freeze)
3645
+ parts_size = load_varuint
3646
+ field_closing_loc = load_optional_location(freeze)
3647
+ field_parts = stack.slice!(-parts_size, parts_size) #: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode]
3648
+ field_parts.freeze if freeze
3649
+ value = InterpolatedSymbolNode.new(source, node_id, location, flags, field_opening_loc, field_parts, field_closing_loc)
3650
+ value.freeze if freeze
3651
+ value
3652
+ },
3653
+ -> (constant_pool, encoding, freeze, stack) {
3654
+ node_id = load_varuint
3655
+ location = load_location(freeze)
3656
+ flags = load_varuint
3657
+ field_opening_loc = load_location(freeze)
3658
+ parts_size = load_varuint
3659
+ field_closing_loc = load_location(freeze)
3660
+ field_parts = stack.slice!(-parts_size, parts_size) #: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode]
3661
+ field_parts.freeze if freeze
3662
+ value = InterpolatedXStringNode.new(source, node_id, location, flags, field_opening_loc, field_parts, field_closing_loc)
3663
+ value.freeze if freeze
3664
+ value
3665
+ },
3666
+ -> (constant_pool, encoding, freeze, stack) {
3667
+ node_id = load_varuint
3668
+ location = load_location(freeze)
3669
+ flags = load_varuint
3670
+ value = ItLocalVariableReadNode.new(source, node_id, location, flags)
3671
+ value.freeze if freeze
3672
+ value
3673
+ },
3674
+ -> (constant_pool, encoding, freeze, stack) {
3675
+ node_id = load_varuint
3676
+ location = load_location(freeze)
3677
+ flags = load_varuint
3678
+ value = ItParametersNode.new(source, node_id, location, flags)
3679
+ value.freeze if freeze
3680
+ value
3681
+ },
3682
+ -> (constant_pool, encoding, freeze, stack) {
3683
+ node_id = load_varuint
3684
+ location = load_location(freeze)
3685
+ flags = load_varuint
3686
+ elements_size = load_varuint
3687
+ field_elements = stack.slice!(-elements_size, elements_size) #: Array[AssocNode | AssocSplatNode]
3688
+ field_elements.freeze if freeze
3689
+ value = KeywordHashNode.new(source, node_id, location, flags, field_elements)
3690
+ value.freeze if freeze
3691
+ value
3692
+ },
3693
+ -> (constant_pool, encoding, freeze, stack) {
3694
+ node_id = load_varuint
3695
+ location = load_location(freeze)
3696
+ flags = load_varuint
3697
+ field_name = load_optional_constant(constant_pool, encoding)
3698
+ field_name_loc = load_optional_location(freeze)
3699
+ field_operator_loc = load_location(freeze)
3700
+ value = KeywordRestParameterNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc)
3701
+ value.freeze if freeze
3702
+ value
3703
+ },
3704
+ -> (constant_pool, encoding, freeze, stack) {
3705
+ node_id = load_varuint
3706
+ location = load_location(freeze)
3707
+ flags = load_varuint
3708
+ field_locals = Array.new(load_varuint) { load_constant(constant_pool, encoding) }
3709
+ field_locals.freeze if freeze
3710
+ field_operator_loc = load_location(freeze)
3711
+ field_opening_loc = load_location(freeze)
3712
+ field_closing_loc = load_location(freeze)
3713
+ field_body = stack.pop #: (StatementsNode | BeginNode)?
3714
+ field_parameters = stack.pop #: (BlockParametersNode | NumberedParametersNode | ItParametersNode)?
3715
+ value = LambdaNode.new(source, node_id, location, flags, field_locals, field_operator_loc, field_opening_loc, field_closing_loc, field_parameters, field_body)
3716
+ value.freeze if freeze
3717
+ value
3718
+ },
3719
+ -> (constant_pool, encoding, freeze, stack) {
3720
+ node_id = load_varuint
3721
+ location = load_location(freeze)
3722
+ flags = load_varuint
3723
+ field_name_loc = load_location(freeze)
3724
+ field_operator_loc = load_location(freeze)
3725
+ field_name = load_constant(constant_pool, encoding)
3726
+ field_depth = load_varuint
3727
+ field_value = stack.pop #: Prism::node
3728
+ value = LocalVariableAndWriteNode.new(source, node_id, location, flags, field_name_loc, field_operator_loc, field_value, field_name, field_depth)
3729
+ value.freeze if freeze
3730
+ value
3731
+ },
3732
+ -> (constant_pool, encoding, freeze, stack) {
3733
+ node_id = load_varuint
3734
+ location = load_location(freeze)
3735
+ flags = load_varuint
3736
+ field_name_loc = load_location(freeze)
3737
+ field_binary_operator_loc = load_location(freeze)
3738
+ field_name = load_constant(constant_pool, encoding)
3739
+ field_binary_operator = load_constant(constant_pool, encoding)
3740
+ field_depth = load_varuint
3741
+ field_value = stack.pop #: Prism::node
3742
+ value = LocalVariableOperatorWriteNode.new(source, node_id, location, flags, field_name_loc, field_binary_operator_loc, field_value, field_name, field_binary_operator, field_depth)
3743
+ value.freeze if freeze
3744
+ value
3745
+ },
3746
+ -> (constant_pool, encoding, freeze, stack) {
3747
+ node_id = load_varuint
3748
+ location = load_location(freeze)
3749
+ flags = load_varuint
3750
+ field_name_loc = load_location(freeze)
3751
+ field_operator_loc = load_location(freeze)
3752
+ field_name = load_constant(constant_pool, encoding)
3753
+ field_depth = load_varuint
3754
+ field_value = stack.pop #: Prism::node
3755
+ value = LocalVariableOrWriteNode.new(source, node_id, location, flags, field_name_loc, field_operator_loc, field_value, field_name, field_depth)
3756
+ value.freeze if freeze
3757
+ value
3758
+ },
3759
+ -> (constant_pool, encoding, freeze, stack) {
3760
+ node_id = load_varuint
3761
+ location = load_location(freeze)
3762
+ flags = load_varuint
3763
+ field_name = load_constant(constant_pool, encoding)
3764
+ field_depth = load_varuint
3765
+ value = LocalVariableReadNode.new(source, node_id, location, flags, field_name, field_depth)
3766
+ value.freeze if freeze
3767
+ value
3768
+ },
3769
+ -> (constant_pool, encoding, freeze, stack) {
3770
+ node_id = load_varuint
3771
+ location = load_location(freeze)
3772
+ flags = load_varuint
3773
+ field_name = load_constant(constant_pool, encoding)
3774
+ field_depth = load_varuint
3775
+ value = LocalVariableTargetNode.new(source, node_id, location, flags, field_name, field_depth)
3776
+ value.freeze if freeze
3777
+ value
3778
+ },
3779
+ -> (constant_pool, encoding, freeze, stack) {
3780
+ node_id = load_varuint
3781
+ location = load_location(freeze)
3782
+ flags = load_varuint
3783
+ field_name = load_constant(constant_pool, encoding)
3784
+ field_depth = load_varuint
3785
+ field_name_loc = load_location(freeze)
3786
+ field_operator_loc = load_location(freeze)
3787
+ field_value = stack.pop #: Prism::node
3788
+ value = LocalVariableWriteNode.new(source, node_id, location, flags, field_name, field_depth, field_name_loc, field_value, field_operator_loc)
3789
+ value.freeze if freeze
3790
+ value
3791
+ },
3792
+ -> (constant_pool, encoding, freeze, stack) {
3793
+ node_id = load_varuint
3794
+ location = load_location(freeze)
3795
+ flags = load_varuint
3796
+ field_opening_loc = load_location(freeze)
3797
+ field_content_loc = load_location(freeze)
3798
+ field_closing_loc = load_location(freeze)
3799
+ field_unescaped = load_string(encoding)
3800
+ value = MatchLastLineNode.new(source, node_id, location, flags, field_opening_loc, field_content_loc, field_closing_loc, field_unescaped)
3801
+ value.freeze if freeze
3802
+ value
3803
+ },
3804
+ -> (constant_pool, encoding, freeze, stack) {
3805
+ node_id = load_varuint
3806
+ location = load_location(freeze)
3807
+ flags = load_varuint
3808
+ field_keyword_loc = load_location(freeze)
3809
+ field_pattern = stack.pop #: Prism::node
3810
+ field_value = stack.pop #: Prism::node
3811
+ value = MatchPredicateNode.new(source, node_id, location, flags, field_value, field_pattern, field_keyword_loc)
3812
+ value.freeze if freeze
3813
+ value
3814
+ },
3815
+ -> (constant_pool, encoding, freeze, stack) {
3816
+ node_id = load_varuint
3817
+ location = load_location(freeze)
3818
+ flags = load_varuint
3819
+ field_operator_loc = load_location(freeze)
3820
+ field_pattern = stack.pop #: Prism::node
3821
+ field_value = stack.pop #: Prism::node
3822
+ value = MatchRequiredNode.new(source, node_id, location, flags, field_value, field_pattern, field_operator_loc)
3823
+ value.freeze if freeze
3824
+ value
3825
+ },
3826
+ -> (constant_pool, encoding, freeze, stack) {
3827
+ node_id = load_varuint
3828
+ location = load_location(freeze)
3829
+ flags = load_varuint
3830
+ targets_size = load_varuint
3831
+ field_targets = stack.slice!(-targets_size, targets_size) #: Array[LocalVariableTargetNode]
3832
+ field_targets.freeze if freeze
3833
+ field_call = stack.pop #: CallNode
3834
+ value = MatchWriteNode.new(source, node_id, location, flags, field_call, field_targets)
3835
+ value.freeze if freeze
3836
+ value
3837
+ },
3838
+ -> (constant_pool, encoding, freeze, stack) {
3839
+ node_id = load_varuint
3840
+ location = load_location(freeze)
3841
+ flags = load_varuint
3842
+ field_locals = Array.new(load_varuint) { load_constant(constant_pool, encoding) }
3843
+ field_locals.freeze if freeze
3844
+ field_module_keyword_loc = load_location(freeze)
3845
+ field_end_keyword_loc = load_location(freeze)
3846
+ field_name = load_constant(constant_pool, encoding)
3847
+ field_body = stack.pop #: (StatementsNode | BeginNode)?
3848
+ field_constant_path = stack.pop #: (ConstantReadNode | ConstantPathNode)
3849
+ value = ModuleNode.new(source, node_id, location, flags, field_locals, field_module_keyword_loc, field_constant_path, field_body, field_end_keyword_loc, field_name)
3850
+ value.freeze if freeze
3851
+ value
3852
+ },
3853
+ -> (constant_pool, encoding, freeze, stack) {
3854
+ node_id = load_varuint
3855
+ location = load_location(freeze)
3856
+ flags = load_varuint
3857
+ lefts_size = load_varuint
3858
+ rights_size = load_varuint
3859
+ field_lparen_loc = load_optional_location(freeze)
3860
+ field_rparen_loc = load_optional_location(freeze)
3861
+ field_rights = stack.slice!(-rights_size, rights_size) #: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | RequiredParameterNode]
3862
+ field_rights.freeze if freeze
3863
+ field_rest = stack.pop #: (ImplicitRestNode | SplatNode)?
3864
+ field_lefts = stack.slice!(-lefts_size, lefts_size) #: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | RequiredParameterNode]
3865
+ field_lefts.freeze if freeze
3866
+ value = MultiTargetNode.new(source, node_id, location, flags, field_lefts, field_rest, field_rights, field_lparen_loc, field_rparen_loc)
3867
+ value.freeze if freeze
3868
+ value
3869
+ },
3870
+ -> (constant_pool, encoding, freeze, stack) {
3871
+ node_id = load_varuint
3872
+ location = load_location(freeze)
3873
+ flags = load_varuint
3874
+ lefts_size = load_varuint
3875
+ rights_size = load_varuint
3876
+ field_lparen_loc = load_optional_location(freeze)
3877
+ field_rparen_loc = load_optional_location(freeze)
3878
+ field_operator_loc = load_location(freeze)
3879
+ field_value = stack.pop #: Prism::node
3880
+ field_rights = stack.slice!(-rights_size, rights_size) #: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode]
3881
+ field_rights.freeze if freeze
3882
+ field_rest = stack.pop #: (ImplicitRestNode | SplatNode)?
3883
+ field_lefts = stack.slice!(-lefts_size, lefts_size) #: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode]
3884
+ field_lefts.freeze if freeze
3885
+ value = MultiWriteNode.new(source, node_id, location, flags, field_lefts, field_rest, field_rights, field_lparen_loc, field_rparen_loc, field_operator_loc, field_value)
3886
+ value.freeze if freeze
3887
+ value
3888
+ },
3889
+ -> (constant_pool, encoding, freeze, stack) {
3890
+ node_id = load_varuint
3891
+ location = load_location(freeze)
3892
+ flags = load_varuint
3893
+ field_keyword_loc = load_location(freeze)
3894
+ field_arguments = stack.pop #: ArgumentsNode?
3895
+ value = NextNode.new(source, node_id, location, flags, field_arguments, field_keyword_loc)
3896
+ value.freeze if freeze
3897
+ value
3898
+ },
3899
+ -> (constant_pool, encoding, freeze, stack) {
3900
+ node_id = load_varuint
3901
+ location = load_location(freeze)
3902
+ flags = load_varuint
3903
+ value = NilNode.new(source, node_id, location, flags)
3904
+ value.freeze if freeze
3905
+ value
3906
+ },
3907
+ -> (constant_pool, encoding, freeze, stack) {
3908
+ node_id = load_varuint
3909
+ location = load_location(freeze)
3910
+ flags = load_varuint
3911
+ field_operator_loc = load_location(freeze)
3912
+ field_keyword_loc = load_location(freeze)
3913
+ value = NoBlockParameterNode.new(source, node_id, location, flags, field_operator_loc, field_keyword_loc)
3914
+ value.freeze if freeze
3915
+ value
3916
+ },
3917
+ -> (constant_pool, encoding, freeze, stack) {
3918
+ node_id = load_varuint
3919
+ location = load_location(freeze)
3920
+ flags = load_varuint
3921
+ field_operator_loc = load_location(freeze)
3922
+ field_keyword_loc = load_location(freeze)
3923
+ value = NoKeywordsParameterNode.new(source, node_id, location, flags, field_operator_loc, field_keyword_loc)
3924
+ value.freeze if freeze
3925
+ value
3926
+ },
3927
+ -> (constant_pool, encoding, freeze, stack) {
3928
+ node_id = load_varuint
3929
+ location = load_location(freeze)
3930
+ flags = load_varuint
3931
+ field_maximum = (io.getbyte or raise)
3932
+ value = NumberedParametersNode.new(source, node_id, location, flags, field_maximum)
3933
+ value.freeze if freeze
3934
+ value
3935
+ },
3936
+ -> (constant_pool, encoding, freeze, stack) {
3937
+ node_id = load_varuint
3938
+ location = load_location(freeze)
3939
+ flags = load_varuint
3940
+ field_number = load_varuint
3941
+ value = NumberedReferenceReadNode.new(source, node_id, location, flags, field_number)
3942
+ value.freeze if freeze
3943
+ value
3944
+ },
3945
+ -> (constant_pool, encoding, freeze, stack) {
3946
+ node_id = load_varuint
3947
+ location = load_location(freeze)
3948
+ flags = load_varuint
3949
+ field_name = load_constant(constant_pool, encoding)
3950
+ field_name_loc = load_location(freeze)
3951
+ field_value = stack.pop #: Prism::node
3952
+ value = OptionalKeywordParameterNode.new(source, node_id, location, flags, field_name, field_name_loc, field_value)
3953
+ value.freeze if freeze
3954
+ value
3955
+ },
3956
+ -> (constant_pool, encoding, freeze, stack) {
3957
+ node_id = load_varuint
3958
+ location = load_location(freeze)
3959
+ flags = load_varuint
3960
+ field_name = load_constant(constant_pool, encoding)
3961
+ field_name_loc = load_location(freeze)
3962
+ field_operator_loc = load_location(freeze)
3963
+ field_value = stack.pop #: Prism::node
3964
+ value = OptionalParameterNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc, field_value)
3965
+ value.freeze if freeze
3966
+ value
3967
+ },
3968
+ -> (constant_pool, encoding, freeze, stack) {
3969
+ node_id = load_varuint
3970
+ location = load_location(freeze)
3971
+ flags = load_varuint
3972
+ field_operator_loc = load_location(freeze)
3973
+ field_right = stack.pop #: Prism::node
3974
+ field_left = stack.pop #: Prism::node
3975
+ value = OrNode.new(source, node_id, location, flags, field_left, field_right, field_operator_loc)
3976
+ value.freeze if freeze
3977
+ value
3978
+ },
3979
+ -> (constant_pool, encoding, freeze, stack) {
3980
+ node_id = load_varuint
3981
+ location = load_location(freeze)
3982
+ flags = load_varuint
3983
+ requireds_size = load_varuint
3984
+ optionals_size = load_varuint
3985
+ posts_size = load_varuint
3986
+ keywords_size = load_varuint
3987
+ field_block = stack.pop #: (BlockParameterNode | NoBlockParameterNode)?
3988
+ field_keyword_rest = stack.pop #: (KeywordRestParameterNode | ForwardingParameterNode | NoKeywordsParameterNode)?
3989
+ field_keywords = stack.slice!(-keywords_size, keywords_size) #: Array[RequiredKeywordParameterNode | OptionalKeywordParameterNode]
3990
+ field_keywords.freeze if freeze
3991
+ field_posts = stack.slice!(-posts_size, posts_size) #: Array[RequiredParameterNode | MultiTargetNode]
3992
+ field_posts.freeze if freeze
3993
+ field_rest = stack.pop #: (RestParameterNode | ImplicitRestNode)?
3994
+ field_optionals = stack.slice!(-optionals_size, optionals_size) #: Array[OptionalParameterNode]
3995
+ field_optionals.freeze if freeze
3996
+ field_requireds = stack.slice!(-requireds_size, requireds_size) #: Array[RequiredParameterNode | MultiTargetNode]
3997
+ field_requireds.freeze if freeze
3998
+ value = ParametersNode.new(source, node_id, location, flags, field_requireds, field_optionals, field_rest, field_posts, field_keywords, field_keyword_rest, field_block)
3999
+ value.freeze if freeze
4000
+ value
4001
+ },
4002
+ -> (constant_pool, encoding, freeze, stack) {
4003
+ node_id = load_varuint
4004
+ location = load_location(freeze)
4005
+ flags = load_varuint
4006
+ field_opening_loc = load_location(freeze)
4007
+ field_closing_loc = load_location(freeze)
4008
+ field_body = stack.pop #: Prism::node?
4009
+ value = ParenthesesNode.new(source, node_id, location, flags, field_body, field_opening_loc, field_closing_loc)
4010
+ value.freeze if freeze
4011
+ value
4012
+ },
4013
+ -> (constant_pool, encoding, freeze, stack) {
4014
+ node_id = load_varuint
4015
+ location = load_location(freeze)
4016
+ flags = load_varuint
4017
+ field_operator_loc = load_location(freeze)
4018
+ field_lparen_loc = load_location(freeze)
4019
+ field_rparen_loc = load_location(freeze)
4020
+ field_expression = stack.pop #: Prism::node
4021
+ value = PinnedExpressionNode.new(source, node_id, location, flags, field_expression, field_operator_loc, field_lparen_loc, field_rparen_loc)
4022
+ value.freeze if freeze
4023
+ value
4024
+ },
4025
+ -> (constant_pool, encoding, freeze, stack) {
4026
+ node_id = load_varuint
4027
+ location = load_location(freeze)
4028
+ flags = load_varuint
4029
+ field_operator_loc = load_location(freeze)
4030
+ field_variable = stack.pop #: (LocalVariableReadNode | InstanceVariableReadNode | ClassVariableReadNode | GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode | ItLocalVariableReadNode)
4031
+ value = PinnedVariableNode.new(source, node_id, location, flags, field_variable, field_operator_loc)
4032
+ value.freeze if freeze
4033
+ value
4034
+ },
4035
+ -> (constant_pool, encoding, freeze, stack) {
4036
+ node_id = load_varuint
4037
+ location = load_location(freeze)
4038
+ flags = load_varuint
4039
+ field_keyword_loc = load_location(freeze)
4040
+ field_opening_loc = load_location(freeze)
4041
+ field_closing_loc = load_location(freeze)
4042
+ field_statements = stack.pop #: StatementsNode?
4043
+ value = PostExecutionNode.new(source, node_id, location, flags, field_statements, field_keyword_loc, field_opening_loc, field_closing_loc)
4044
+ value.freeze if freeze
4045
+ value
4046
+ },
4047
+ -> (constant_pool, encoding, freeze, stack) {
4048
+ node_id = load_varuint
4049
+ location = load_location(freeze)
4050
+ flags = load_varuint
4051
+ field_keyword_loc = load_location(freeze)
4052
+ field_opening_loc = load_location(freeze)
4053
+ field_closing_loc = load_location(freeze)
4054
+ field_statements = stack.pop #: StatementsNode?
4055
+ value = PreExecutionNode.new(source, node_id, location, flags, field_statements, field_keyword_loc, field_opening_loc, field_closing_loc)
4056
+ value.freeze if freeze
4057
+ value
4058
+ },
4059
+ -> (constant_pool, encoding, freeze, stack) {
4060
+ node_id = load_varuint
4061
+ location = load_location(freeze)
4062
+ flags = load_varuint
4063
+ field_locals = Array.new(load_varuint) { load_constant(constant_pool, encoding) }
4064
+ field_locals.freeze if freeze
4065
+ field_statements = stack.pop #: StatementsNode
4066
+ value = ProgramNode.new(source, node_id, location, flags, field_locals, field_statements)
4067
+ value.freeze if freeze
4068
+ value
4069
+ },
4070
+ -> (constant_pool, encoding, freeze, stack) {
4071
+ node_id = load_varuint
4072
+ location = load_location(freeze)
4073
+ flags = load_varuint
4074
+ field_operator_loc = load_location(freeze)
4075
+ field_right = stack.pop #: Prism::node?
4076
+ field_left = stack.pop #: Prism::node?
4077
+ value = RangeNode.new(source, node_id, location, flags, field_left, field_right, field_operator_loc)
4078
+ value.freeze if freeze
4079
+ value
4080
+ },
4081
+ -> (constant_pool, encoding, freeze, stack) {
4082
+ node_id = load_varuint
4083
+ location = load_location(freeze)
4084
+ flags = load_varuint
4085
+ field_numerator = load_integer
4086
+ field_denominator = load_integer
4087
+ value = RationalNode.new(source, node_id, location, flags, field_numerator, field_denominator)
4088
+ value.freeze if freeze
4089
+ value
4090
+ },
4091
+ -> (constant_pool, encoding, freeze, stack) {
4092
+ node_id = load_varuint
4093
+ location = load_location(freeze)
4094
+ flags = load_varuint
4095
+ value = RedoNode.new(source, node_id, location, flags)
4096
+ value.freeze if freeze
4097
+ value
4098
+ },
4099
+ -> (constant_pool, encoding, freeze, stack) {
4100
+ node_id = load_varuint
4101
+ location = load_location(freeze)
4102
+ flags = load_varuint
4103
+ field_opening_loc = load_location(freeze)
4104
+ field_content_loc = load_location(freeze)
4105
+ field_closing_loc = load_location(freeze)
4106
+ field_unescaped = load_string(encoding)
4107
+ value = RegularExpressionNode.new(source, node_id, location, flags, field_opening_loc, field_content_loc, field_closing_loc, field_unescaped)
4108
+ value.freeze if freeze
4109
+ value
4110
+ },
4111
+ -> (constant_pool, encoding, freeze, stack) {
4112
+ node_id = load_varuint
4113
+ location = load_location(freeze)
4114
+ flags = load_varuint
4115
+ field_name = load_constant(constant_pool, encoding)
4116
+ field_name_loc = load_location(freeze)
4117
+ value = RequiredKeywordParameterNode.new(source, node_id, location, flags, field_name, field_name_loc)
4118
+ value.freeze if freeze
4119
+ value
4120
+ },
4121
+ -> (constant_pool, encoding, freeze, stack) {
4122
+ node_id = load_varuint
4123
+ location = load_location(freeze)
4124
+ flags = load_varuint
4125
+ field_name = load_constant(constant_pool, encoding)
4126
+ value = RequiredParameterNode.new(source, node_id, location, flags, field_name)
4127
+ value.freeze if freeze
4128
+ value
4129
+ },
4130
+ -> (constant_pool, encoding, freeze, stack) {
4131
+ node_id = load_varuint
4132
+ location = load_location(freeze)
4133
+ flags = load_varuint
4134
+ field_keyword_loc = load_location(freeze)
4135
+ field_rescue_expression = stack.pop #: Prism::node
4136
+ field_expression = stack.pop #: Prism::node
4137
+ value = RescueModifierNode.new(source, node_id, location, flags, field_expression, field_keyword_loc, field_rescue_expression)
4138
+ value.freeze if freeze
4139
+ value
4140
+ },
4141
+ -> (constant_pool, encoding, freeze, stack) {
4142
+ node_id = load_varuint
4143
+ location = load_location(freeze)
4144
+ flags = load_varuint
4145
+ field_keyword_loc = load_location(freeze)
4146
+ exceptions_size = load_varuint
4147
+ field_operator_loc = load_optional_location(freeze)
4148
+ field_then_keyword_loc = load_optional_location(freeze)
4149
+ field_subsequent = stack.pop #: RescueNode?
4150
+ field_statements = stack.pop #: StatementsNode?
4151
+ field_reference = stack.pop #: (LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode)?
4152
+ field_exceptions = stack.slice!(-exceptions_size, exceptions_size) #: Array[Prism::node]
4153
+ field_exceptions.freeze if freeze
4154
+ value = RescueNode.new(source, node_id, location, flags, field_keyword_loc, field_exceptions, field_operator_loc, field_reference, field_then_keyword_loc, field_statements, field_subsequent)
4155
+ value.freeze if freeze
4156
+ value
4157
+ },
4158
+ -> (constant_pool, encoding, freeze, stack) {
4159
+ node_id = load_varuint
4160
+ location = load_location(freeze)
4161
+ flags = load_varuint
4162
+ field_name = load_optional_constant(constant_pool, encoding)
4163
+ field_name_loc = load_optional_location(freeze)
4164
+ field_operator_loc = load_location(freeze)
4165
+ value = RestParameterNode.new(source, node_id, location, flags, field_name, field_name_loc, field_operator_loc)
4166
+ value.freeze if freeze
4167
+ value
4168
+ },
4169
+ -> (constant_pool, encoding, freeze, stack) {
4170
+ node_id = load_varuint
4171
+ location = load_location(freeze)
4172
+ flags = load_varuint
4173
+ value = RetryNode.new(source, node_id, location, flags)
4174
+ value.freeze if freeze
4175
+ value
4176
+ },
4177
+ -> (constant_pool, encoding, freeze, stack) {
4178
+ node_id = load_varuint
4179
+ location = load_location(freeze)
4180
+ flags = load_varuint
4181
+ field_keyword_loc = load_location(freeze)
4182
+ field_arguments = stack.pop #: ArgumentsNode?
4183
+ value = ReturnNode.new(source, node_id, location, flags, field_keyword_loc, field_arguments)
4184
+ value.freeze if freeze
4185
+ value
4186
+ },
4187
+ -> (constant_pool, encoding, freeze, stack) {
4188
+ node_id = load_varuint
4189
+ location = load_location(freeze)
4190
+ flags = load_varuint
4191
+ value = SelfNode.new(source, node_id, location, flags)
4192
+ value.freeze if freeze
4193
+ value
4194
+ },
4195
+ -> (constant_pool, encoding, freeze, stack) {
4196
+ node_id = load_varuint
4197
+ location = load_location(freeze)
4198
+ flags = load_varuint
4199
+ field_write = stack.pop #: (ConstantWriteNode | ConstantAndWriteNode | ConstantOrWriteNode | ConstantOperatorWriteNode | ConstantPathWriteNode | ConstantPathAndWriteNode | ConstantPathOrWriteNode | ConstantPathOperatorWriteNode)
4200
+ value = ShareableConstantNode.new(source, node_id, location, flags, field_write)
4201
+ value.freeze if freeze
4202
+ value
4203
+ },
4204
+ -> (constant_pool, encoding, freeze, stack) {
4205
+ node_id = load_varuint
4206
+ location = load_location(freeze)
4207
+ flags = load_varuint
4208
+ field_locals = Array.new(load_varuint) { load_constant(constant_pool, encoding) }
4209
+ field_locals.freeze if freeze
4210
+ field_class_keyword_loc = load_location(freeze)
4211
+ field_operator_loc = load_location(freeze)
4212
+ field_end_keyword_loc = load_location(freeze)
4213
+ field_body = stack.pop #: (StatementsNode | BeginNode)?
4214
+ field_expression = stack.pop #: Prism::node
4215
+ value = SingletonClassNode.new(source, node_id, location, flags, field_locals, field_class_keyword_loc, field_operator_loc, field_expression, field_body, field_end_keyword_loc)
4216
+ value.freeze if freeze
4217
+ value
4218
+ },
4219
+ -> (constant_pool, encoding, freeze, stack) {
4220
+ node_id = load_varuint
4221
+ location = load_location(freeze)
4222
+ flags = load_varuint
4223
+ value = SourceEncodingNode.new(source, node_id, location, flags)
4224
+ value.freeze if freeze
4225
+ value
4226
+ },
4227
+ -> (constant_pool, encoding, freeze, stack) {
4228
+ node_id = load_varuint
4229
+ location = load_location(freeze)
4230
+ flags = load_varuint
4231
+ field_filepath = load_string(encoding)
4232
+ value = SourceFileNode.new(source, node_id, location, flags, field_filepath)
4233
+ value.freeze if freeze
4234
+ value
4235
+ },
4236
+ -> (constant_pool, encoding, freeze, stack) {
4237
+ node_id = load_varuint
4238
+ location = load_location(freeze)
4239
+ flags = load_varuint
4240
+ value = SourceLineNode.new(source, node_id, location, flags)
4241
+ value.freeze if freeze
4242
+ value
4243
+ },
4244
+ -> (constant_pool, encoding, freeze, stack) {
4245
+ node_id = load_varuint
4246
+ location = load_location(freeze)
4247
+ flags = load_varuint
4248
+ field_operator_loc = load_location(freeze)
4249
+ field_expression = stack.pop #: Prism::node?
4250
+ value = SplatNode.new(source, node_id, location, flags, field_operator_loc, field_expression)
4251
+ value.freeze if freeze
4252
+ value
4253
+ },
4254
+ -> (constant_pool, encoding, freeze, stack) {
4255
+ node_id = load_varuint
4256
+ location = load_location(freeze)
4257
+ flags = load_varuint
4258
+ body_size = load_varuint
4259
+ field_body = stack.slice!(-body_size, body_size) #: Array[Prism::node]
4260
+ field_body.freeze if freeze
4261
+ value = StatementsNode.new(source, node_id, location, flags, field_body)
4262
+ value.freeze if freeze
4263
+ value
4264
+ },
4265
+ -> (constant_pool, encoding, freeze, stack) {
4266
+ node_id = load_varuint
4267
+ location = load_location(freeze)
4268
+ flags = load_varuint
4269
+ field_opening_loc = load_optional_location(freeze)
4270
+ field_content_loc = load_location(freeze)
4271
+ field_closing_loc = load_optional_location(freeze)
4272
+ field_unescaped = load_string(encoding)
4273
+ value = StringNode.new(source, node_id, location, flags, field_opening_loc, field_content_loc, field_closing_loc, field_unescaped)
4274
+ value.freeze if freeze
4275
+ value
4276
+ },
4277
+ -> (constant_pool, encoding, freeze, stack) {
4278
+ node_id = load_varuint
4279
+ location = load_location(freeze)
4280
+ flags = load_varuint
4281
+ field_keyword_loc = load_location(freeze)
4282
+ field_lparen_loc = load_optional_location(freeze)
4283
+ field_rparen_loc = load_optional_location(freeze)
4284
+ field_block = stack.pop #: (BlockNode | BlockArgumentNode)?
4285
+ field_arguments = stack.pop #: ArgumentsNode?
4286
+ value = SuperNode.new(source, node_id, location, flags, field_keyword_loc, field_lparen_loc, field_arguments, field_rparen_loc, field_block)
4287
+ value.freeze if freeze
4288
+ value
4289
+ },
4290
+ -> (constant_pool, encoding, freeze, stack) {
4291
+ node_id = load_varuint
4292
+ location = load_location(freeze)
4293
+ flags = load_varuint
4294
+ field_opening_loc = load_optional_location(freeze)
4295
+ field_content_loc = load_location(freeze)
4296
+ field_closing_loc = load_optional_location(freeze)
4297
+ field_unescaped = load_string(encoding)
4298
+ value = SymbolNode.new(source, node_id, location, flags, field_opening_loc, field_content_loc, field_closing_loc, field_unescaped)
4299
+ value.freeze if freeze
4300
+ value
4301
+ },
4302
+ -> (constant_pool, encoding, freeze, stack) {
4303
+ node_id = load_varuint
4304
+ location = load_location(freeze)
4305
+ flags = load_varuint
4306
+ value = TrueNode.new(source, node_id, location, flags)
4307
+ value.freeze if freeze
4308
+ value
4309
+ },
4310
+ -> (constant_pool, encoding, freeze, stack) {
4311
+ node_id = load_varuint
4312
+ location = load_location(freeze)
4313
+ flags = load_varuint
4314
+ names_size = load_varuint
4315
+ field_keyword_loc = load_location(freeze)
4316
+ field_names = stack.slice!(-names_size, names_size) #: Array[SymbolNode | InterpolatedSymbolNode]
4317
+ field_names.freeze if freeze
4318
+ value = UndefNode.new(source, node_id, location, flags, field_names, field_keyword_loc)
4319
+ value.freeze if freeze
4320
+ value
4321
+ },
4322
+ -> (constant_pool, encoding, freeze, stack) {
4323
+ node_id = load_varuint
4324
+ location = load_location(freeze)
4325
+ flags = load_varuint
4326
+ field_unless_keyword_loc = load_location(freeze)
4327
+ field_then_keyword_loc = load_optional_location(freeze)
4328
+ field_end_keyword_loc = load_optional_location(freeze)
4329
+ field_else_clause = stack.pop #: ElseNode?
4330
+ field_statements = stack.pop #: StatementsNode?
4331
+ field_predicate = stack.pop #: Prism::node
4332
+ value = UnlessNode.new(source, node_id, location, flags, field_unless_keyword_loc, field_predicate, field_then_keyword_loc, field_statements, field_else_clause, field_end_keyword_loc)
4333
+ value.freeze if freeze
4334
+ value
4335
+ },
4336
+ -> (constant_pool, encoding, freeze, stack) {
4337
+ node_id = load_varuint
4338
+ location = load_location(freeze)
4339
+ flags = load_varuint
4340
+ field_until_keyword_loc = load_location(freeze)
4341
+ field_do_keyword_loc = load_optional_location(freeze)
4342
+ field_end_keyword_loc = load_optional_location(freeze)
4343
+ field_statements = stack.pop #: StatementsNode?
4344
+ field_predicate = stack.pop #: Prism::node
4345
+ value = UntilNode.new(source, node_id, location, flags, field_until_keyword_loc, field_do_keyword_loc, field_end_keyword_loc, field_predicate, field_statements)
4346
+ value.freeze if freeze
4347
+ value
4348
+ },
4349
+ -> (constant_pool, encoding, freeze, stack) {
4350
+ node_id = load_varuint
4351
+ location = load_location(freeze)
4352
+ flags = load_varuint
4353
+ field_when_keyword_loc = load_location(freeze)
4354
+ conditions_size = load_varuint
4355
+ field_then_keyword_loc = load_optional_location(freeze)
4356
+ field_statements = stack.pop #: StatementsNode?
4357
+ field_conditions = stack.slice!(-conditions_size, conditions_size) #: Array[Prism::node]
4358
+ field_conditions.freeze if freeze
4359
+ value = WhenNode.new(source, node_id, location, flags, field_when_keyword_loc, field_conditions, field_then_keyword_loc, field_statements)
4360
+ value.freeze if freeze
4361
+ value
4362
+ },
4363
+ -> (constant_pool, encoding, freeze, stack) {
4364
+ node_id = load_varuint
4365
+ location = load_location(freeze)
4366
+ flags = load_varuint
4367
+ field_while_keyword_loc = load_location(freeze)
4368
+ field_do_keyword_loc = load_optional_location(freeze)
4369
+ field_end_keyword_loc = load_optional_location(freeze)
4370
+ field_statements = stack.pop #: StatementsNode?
4371
+ field_predicate = stack.pop #: Prism::node
4372
+ value = WhileNode.new(source, node_id, location, flags, field_while_keyword_loc, field_do_keyword_loc, field_end_keyword_loc, field_predicate, field_statements)
4373
+ value.freeze if freeze
4374
+ value
4375
+ },
4376
+ -> (constant_pool, encoding, freeze, stack) {
4377
+ node_id = load_varuint
4378
+ location = load_location(freeze)
4379
+ flags = load_varuint
4380
+ field_opening_loc = load_location(freeze)
4381
+ field_content_loc = load_location(freeze)
4382
+ field_closing_loc = load_location(freeze)
4383
+ field_unescaped = load_string(encoding)
4384
+ value = XStringNode.new(source, node_id, location, flags, field_opening_loc, field_content_loc, field_closing_loc, field_unescaped)
4385
+ value.freeze if freeze
4386
+ value
4387
+ },
4388
+ -> (constant_pool, encoding, freeze, stack) {
4389
+ node_id = load_varuint
4390
+ location = load_location(freeze)
4391
+ flags = load_varuint
4392
+ field_keyword_loc = load_location(freeze)
4393
+ field_lparen_loc = load_optional_location(freeze)
4394
+ field_rparen_loc = load_optional_location(freeze)
4395
+ field_arguments = stack.pop #: ArgumentsNode?
4396
+ value = YieldNode.new(source, node_id, location, flags, field_keyword_loc, field_lparen_loc, field_arguments, field_rparen_loc)
4397
+ value.freeze if freeze
4398
+ value
4399
+ },
4400
+ ]
4401
+ end
4402
+ end
4403
+
4404
+ # @rbs!
4405
+ # @load_node_lambdas: Array[Proc]
4406
+ # def define_load_node_lambdas: () -> void
4407
+ end
4408
+
4409
+ # The token types that can be indexed by their enum values.
4410
+ TOKEN_TYPES = [
4411
+ nil,
4412
+ :EOF,
4413
+ :BRACE_RIGHT,
4414
+ :COMMA,
4415
+ :EMBEXPR_END,
4416
+ :KEYWORD_DO,
4417
+ :KEYWORD_ELSE,
4418
+ :KEYWORD_ELSIF,
4419
+ :KEYWORD_END,
4420
+ :KEYWORD_ENSURE,
4421
+ :KEYWORD_IN,
4422
+ :KEYWORD_RESCUE,
4423
+ :KEYWORD_THEN,
4424
+ :KEYWORD_WHEN,
4425
+ :NEWLINE,
4426
+ :NEWLINE_TERMINATOR,
4427
+ :PARENTHESIS_RIGHT,
4428
+ :PIPE,
4429
+ :SEMICOLON,
4430
+ :AMPERSAND,
4431
+ :AMPERSAND_AMPERSAND,
4432
+ :AMPERSAND_AMPERSAND_EQUAL,
4433
+ :AMPERSAND_DOT,
4434
+ :AMPERSAND_EQUAL,
4435
+ :BACKTICK,
4436
+ :BACK_REFERENCE,
4437
+ :BANG,
4438
+ :BANG_EQUAL,
4439
+ :BANG_TILDE,
4440
+ :BRACE_LEFT,
4441
+ :BRACE_LEFT_ARGUMENT,
4442
+ :BRACE_LEFT_HASH,
4443
+ :BRACKET_LEFT,
4444
+ :BRACKET_LEFT_ARRAY,
4445
+ :BRACKET_LEFT_RIGHT,
4446
+ :BRACKET_LEFT_RIGHT_EQUAL,
4447
+ :BRACKET_RIGHT,
4448
+ :CARET,
4449
+ :CARET_EQUAL,
4450
+ :CHARACTER_LITERAL,
4451
+ :CLASS_VARIABLE,
4452
+ :COLON,
4453
+ :COLON_COLON,
4454
+ :COMMENT,
4455
+ :CONSTANT,
4456
+ :DOT,
4457
+ :DOT_DOT,
4458
+ :DOT_DOT_DOT,
4459
+ :EMBDOC_BEGIN,
4460
+ :EMBDOC_END,
4461
+ :EMBDOC_LINE,
4462
+ :EMBEXPR_BEGIN,
4463
+ :EMBVAR,
4464
+ :EQUAL,
4465
+ :EQUAL_EQUAL,
4466
+ :EQUAL_EQUAL_EQUAL,
4467
+ :EQUAL_GREATER,
4468
+ :EQUAL_TILDE,
4469
+ :FLOAT,
4470
+ :FLOAT_IMAGINARY,
4471
+ :FLOAT_RATIONAL,
4472
+ :FLOAT_RATIONAL_IMAGINARY,
4473
+ :GLOBAL_VARIABLE,
4474
+ :GREATER,
4475
+ :GREATER_EQUAL,
4476
+ :GREATER_GREATER,
4477
+ :GREATER_GREATER_EQUAL,
4478
+ :HEREDOC_END,
4479
+ :HEREDOC_START,
4480
+ :IDENTIFIER,
4481
+ :IGNORED_NEWLINE,
4482
+ :INSTANCE_VARIABLE,
4483
+ :INTEGER,
4484
+ :INTEGER_IMAGINARY,
4485
+ :INTEGER_RATIONAL,
4486
+ :INTEGER_RATIONAL_IMAGINARY,
4487
+ :KEYWORD_ALIAS,
4488
+ :KEYWORD_AND,
4489
+ :KEYWORD_BEGIN,
4490
+ :KEYWORD_BEGIN_UPCASE,
4491
+ :KEYWORD_BREAK,
4492
+ :KEYWORD_CASE,
4493
+ :KEYWORD_CLASS,
4494
+ :KEYWORD_DEF,
4495
+ :KEYWORD_DEFINED,
4496
+ :KEYWORD_DO_BLOCK,
4497
+ :KEYWORD_DO_LAMBDA,
4498
+ :KEYWORD_DO_LOOP,
4499
+ :KEYWORD_END_UPCASE,
4500
+ :KEYWORD_FALSE,
4501
+ :KEYWORD_FOR,
4502
+ :KEYWORD_IF,
4503
+ :KEYWORD_IF_MODIFIER,
4504
+ :KEYWORD_MODULE,
4505
+ :KEYWORD_NEXT,
4506
+ :KEYWORD_NIL,
4507
+ :KEYWORD_NOT,
4508
+ :KEYWORD_OR,
4509
+ :KEYWORD_REDO,
4510
+ :KEYWORD_RESCUE_MODIFIER,
4511
+ :KEYWORD_RETRY,
4512
+ :KEYWORD_RETURN,
4513
+ :KEYWORD_SELF,
4514
+ :KEYWORD_SUPER,
4515
+ :KEYWORD_TRUE,
4516
+ :KEYWORD_UNDEF,
4517
+ :KEYWORD_UNLESS,
4518
+ :KEYWORD_UNLESS_MODIFIER,
4519
+ :KEYWORD_UNTIL,
4520
+ :KEYWORD_UNTIL_MODIFIER,
4521
+ :KEYWORD_WHILE,
4522
+ :KEYWORD_WHILE_MODIFIER,
4523
+ :KEYWORD_YIELD,
4524
+ :KEYWORD___ENCODING__,
4525
+ :KEYWORD___FILE__,
4526
+ :KEYWORD___LINE__,
4527
+ :LABEL,
4528
+ :LABEL_END,
4529
+ :LAMBDA_BEGIN,
4530
+ :LESS,
4531
+ :LESS_EQUAL,
4532
+ :LESS_EQUAL_GREATER,
4533
+ :LESS_LESS,
4534
+ :LESS_LESS_EQUAL,
4535
+ :METHOD_NAME,
4536
+ :MINUS,
4537
+ :MINUS_EQUAL,
4538
+ :MINUS_GREATER,
4539
+ :NUMBERED_REFERENCE,
4540
+ :PARENTHESIS_LEFT,
4541
+ :PARENTHESIS_LEFT_GROUPING,
4542
+ :PARENTHESIS_LEFT_PARENTHESES,
4543
+ :PERCENT,
4544
+ :PERCENT_EQUAL,
4545
+ :PERCENT_LOWER_I,
4546
+ :PERCENT_LOWER_W,
4547
+ :PERCENT_LOWER_X,
4548
+ :PERCENT_UPPER_I,
4549
+ :PERCENT_UPPER_W,
4550
+ :PIPE_EQUAL,
4551
+ :PIPE_PIPE,
4552
+ :PIPE_PIPE_EQUAL,
4553
+ :PLUS,
4554
+ :PLUS_EQUAL,
4555
+ :QUESTION_MARK,
4556
+ :REGEXP_BEGIN,
4557
+ :REGEXP_END,
4558
+ :SLASH,
4559
+ :SLASH_EQUAL,
4560
+ :STAR,
4561
+ :STAR_EQUAL,
4562
+ :STAR_STAR,
4563
+ :STAR_STAR_EQUAL,
4564
+ :STRING_BEGIN,
4565
+ :STRING_CONTENT,
4566
+ :STRING_END,
4567
+ :SYMBOL_BEGIN,
4568
+ :TILDE,
4569
+ :UAMPERSAND,
4570
+ :UCOLON_COLON,
4571
+ :UDOT_DOT,
4572
+ :UDOT_DOT_DOT,
4573
+ :UMINUS,
4574
+ :UMINUS_NUM,
4575
+ :UPLUS,
4576
+ :USTAR,
4577
+ :USTAR_STAR,
4578
+ :WORDS_SEP,
4579
+ :WORDS_SEP_IMPLICIT,
4580
+ :XSTRING_BEGIN,
4581
+ :__END__,
4582
+ ].freeze #: Array[Symbol?]
4583
+
4584
+ private_constant :MAJOR_VERSION, :MINOR_VERSION, :PATCH_VERSION
4585
+ private_constant :ConstantPool, :FastStringIO, :Loader, :TOKEN_TYPES
4586
+ end
4587
+
4588
+ private_constant :Serialize
4589
+ end