prism 2.0.0.rc2-x86_64-linux-gnu → 2.0.0-x86_64-linux-gnu
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -2
- data/docs/serialization.md +19 -6
- data/ext/prism/api_node.c +80 -80
- data/ext/prism/extension.c +34 -67
- data/ext/prism/extension.h +1 -1
- data/include/prism/arena.h +8 -0
- data/include/prism/arena.hpp +42 -0
- data/include/prism/ast.h +11 -1
- data/include/prism/ast.hpp +641 -0
- data/include/prism/buffer.h +8 -0
- data/include/prism/buffer.hpp +55 -0
- data/include/prism/comments.h +17 -0
- data/include/prism/compiler/branch.h +26 -0
- data/include/prism/compiler/cplusplus.hpp +16 -0
- data/include/prism/compiler/exceptions.hpp +17 -0
- data/include/prism/compiler/format.h +2 -0
- data/include/prism/compiler/lifetimebound.hpp +25 -0
- data/include/prism/constant_pool.h +25 -0
- data/include/prism/diagnostic.h +18 -0
- data/include/prism/errors_format.h +8 -0
- data/include/prism/internal/node.h +8 -4
- data/include/prism/internal/stringy.h +1 -6
- data/include/prism/json.h +8 -0
- data/include/prism/line_offset_list.h +8 -0
- data/include/prism/magic_comments.h +18 -0
- data/include/prism/node.h +55 -10
- data/include/prism/node.hpp +272 -0
- data/include/prism/node_type.hpp +38 -0
- data/include/prism/options.h +10 -1
- data/include/prism/options.hpp +43 -0
- data/include/prism/parser.h +72 -64
- data/include/prism/parser.hpp +274 -0
- data/include/prism/prettyprint.h +8 -0
- data/include/prism/serialize.h +8 -0
- data/include/prism/source.h +8 -0
- data/include/prism/stream.h +8 -0
- data/include/prism/string_query.h +8 -0
- data/include/prism/stringy.h +16 -27
- data/include/prism/stringy.hpp +31 -0
- data/include/prism/version.h +9 -1
- data/include/prism.h +0 -8
- data/include/prism.hpp +24 -0
- data/lib/prism/3.3/prism.so +0 -0
- data/lib/prism/3.4/prism.so +0 -0
- data/lib/prism/4.0/prism.so +0 -0
- data/lib/prism/serialize.rb +2549 -3281
- data/prism.gemspec +14 -1
- data/rbi/generated/prism/node.rbi +736 -0
- data/rbi/generated/prism/serialize.rbi +6 -5
- data/sig/generated/prism/node.rbs +736 -0
- data/sig/generated/prism/serialize.rbs +7 -5
- data/src/comments.c +2 -2
- data/src/diagnostic.c +8 -0
- data/src/node.c +216 -368
- data/src/options.c +7 -13
- data/src/parser.c +52 -48
- data/src/prism.c +175 -194
- data/src/regexp.c +0 -1
- data/src/serialize.c +2300 -1950
- data/src/source.c +8 -2
- data/src/stringy.c +3 -33
- metadata +14 -1
data/src/serialize.c
CHANGED
|
@@ -19,8 +19,10 @@ typedef int pm_serialize_unused_t;
|
|
|
19
19
|
|
|
20
20
|
#else
|
|
21
21
|
|
|
22
|
+
#include "prism/compiler/branch.h"
|
|
22
23
|
#include "prism/compiler/inline.h"
|
|
23
24
|
|
|
25
|
+
#include "prism/internal/allocator.h"
|
|
24
26
|
#include "prism/internal/buffer.h"
|
|
25
27
|
#include "prism/internal/comments.h"
|
|
26
28
|
#include "prism/internal/diagnostic.h"
|
|
@@ -35,7 +37,9 @@ typedef int pm_serialize_unused_t;
|
|
|
35
37
|
#include "prism/line_offset_list.h"
|
|
36
38
|
|
|
37
39
|
#include <assert.h>
|
|
40
|
+
#include <stdbool.h>
|
|
38
41
|
#include <stdio.h>
|
|
42
|
+
#include <stdlib.h>
|
|
39
43
|
#include <string.h>
|
|
40
44
|
|
|
41
45
|
static PRISM_INLINE uint32_t
|
|
@@ -77,1958 +81,2304 @@ pm_serialize_integer(const pm_integer_t *integer, pm_buffer_t *buffer) {
|
|
|
77
81
|
}
|
|
78
82
|
}
|
|
79
83
|
|
|
84
|
+
/**
|
|
85
|
+
* The kinds of entries on the serialization stack.
|
|
86
|
+
*/
|
|
87
|
+
typedef enum {
|
|
88
|
+
/** A node to serialize, or NULL for an absent optional node. */
|
|
89
|
+
PM_SERIALIZE_ENTRY_NODE,
|
|
90
|
+
|
|
91
|
+
/** Write the lazy marker and placeholders for its skip and length. */
|
|
92
|
+
PM_SERIALIZE_ENTRY_LAZY_HEADER,
|
|
93
|
+
|
|
94
|
+
/** Patch the skip, now that the lazy subtree is about to be written. */
|
|
95
|
+
PM_SERIALIZE_ENTRY_LAZY_START,
|
|
96
|
+
|
|
97
|
+
/** Patch the length, now that the lazy subtree has been written. */
|
|
98
|
+
PM_SERIALIZE_ENTRY_LAZY_END
|
|
99
|
+
} pm_serialize_entry_kind_t;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* An entry on the serialization stack.
|
|
103
|
+
*/
|
|
104
|
+
typedef struct {
|
|
105
|
+
/** The node to serialize, for NODE entries. */
|
|
106
|
+
const pm_node_t *node;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* For NODE entries, the offset of the placeholders that follow the node's
|
|
110
|
+
* lazy marker. For LAZY_* entries, the index of the NODE entry that owns
|
|
111
|
+
* them, which stays valid because that entry is beneath them.
|
|
112
|
+
*/
|
|
113
|
+
size_t offset;
|
|
114
|
+
|
|
115
|
+
/** The kind of this entry. */
|
|
116
|
+
pm_serialize_entry_kind_t kind;
|
|
117
|
+
|
|
118
|
+
/** Whether the children of this node have already been pushed. */
|
|
119
|
+
bool visited;
|
|
120
|
+
} pm_serialize_entry_t;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* The explicit stack used to walk the tree, so that serializing deeply nested
|
|
124
|
+
* trees does not depend on the size of the C stack.
|
|
125
|
+
*/
|
|
126
|
+
typedef struct {
|
|
127
|
+
/** The entries on the stack. */
|
|
128
|
+
pm_serialize_entry_t *entries;
|
|
129
|
+
|
|
130
|
+
/** The number of entries on the stack. */
|
|
131
|
+
size_t size;
|
|
132
|
+
|
|
133
|
+
/** The number of entries that fit in the allocated memory. */
|
|
134
|
+
size_t capacity;
|
|
135
|
+
} pm_serialize_stack_t;
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Push an entry onto the serialization stack. This may reallocate the stack,
|
|
139
|
+
* which invalidates any pointers into it.
|
|
140
|
+
*/
|
|
80
141
|
static void
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
// it is not part of the AST
|
|
90
|
-
case PM_SCOPE_NODE:
|
|
91
|
-
return;
|
|
92
|
-
case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
|
|
93
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
94
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_alias_global_variable_node_t *)node)->new_name, buffer);
|
|
95
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_alias_global_variable_node_t *)node)->old_name, buffer);
|
|
96
|
-
pm_serialize_location(&((pm_alias_global_variable_node_t *)node)->keyword_loc, buffer);
|
|
97
|
-
break;
|
|
98
|
-
}
|
|
99
|
-
case PM_ALIAS_METHOD_NODE: {
|
|
100
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
101
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_alias_method_node_t *)node)->new_name, buffer);
|
|
102
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_alias_method_node_t *)node)->old_name, buffer);
|
|
103
|
-
pm_serialize_location(&((pm_alias_method_node_t *)node)->keyword_loc, buffer);
|
|
104
|
-
break;
|
|
105
|
-
}
|
|
106
|
-
case PM_ALTERNATION_PATTERN_NODE: {
|
|
107
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
108
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_alternation_pattern_node_t *)node)->left, buffer);
|
|
109
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_alternation_pattern_node_t *)node)->right, buffer);
|
|
110
|
-
pm_serialize_location(&((pm_alternation_pattern_node_t *)node)->operator_loc, buffer);
|
|
111
|
-
break;
|
|
112
|
-
}
|
|
113
|
-
case PM_AND_NODE: {
|
|
114
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
115
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_and_node_t *)node)->left, buffer);
|
|
116
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_and_node_t *)node)->right, buffer);
|
|
117
|
-
pm_serialize_location(&((pm_and_node_t *)node)->operator_loc, buffer);
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
case PM_ARGUMENTS_NODE: {
|
|
121
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
122
|
-
uint32_t arguments_size = pm_sizet_to_u32(((pm_arguments_node_t *)node)->arguments.size);
|
|
123
|
-
pm_buffer_append_varuint(buffer, arguments_size);
|
|
124
|
-
for (uint32_t index = 0; index < arguments_size; index++) {
|
|
125
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_arguments_node_t *)node)->arguments.nodes[index], buffer);
|
|
126
|
-
}
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
case PM_ARRAY_NODE: {
|
|
130
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
131
|
-
uint32_t elements_size = pm_sizet_to_u32(((pm_array_node_t *)node)->elements.size);
|
|
132
|
-
pm_buffer_append_varuint(buffer, elements_size);
|
|
133
|
-
for (uint32_t index = 0; index < elements_size; index++) {
|
|
134
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_array_node_t *)node)->elements.nodes[index], buffer);
|
|
135
|
-
}
|
|
136
|
-
if (((pm_array_node_t *)node)->opening_loc.length == 0) {
|
|
137
|
-
pm_buffer_append_byte(buffer, 0);
|
|
138
|
-
} else {
|
|
139
|
-
pm_buffer_append_byte(buffer, 1);
|
|
140
|
-
pm_serialize_location(&((pm_array_node_t *)node)->opening_loc, buffer);
|
|
141
|
-
}
|
|
142
|
-
if (((pm_array_node_t *)node)->closing_loc.length == 0) {
|
|
143
|
-
pm_buffer_append_byte(buffer, 0);
|
|
144
|
-
} else {
|
|
145
|
-
pm_buffer_append_byte(buffer, 1);
|
|
146
|
-
pm_serialize_location(&((pm_array_node_t *)node)->closing_loc, buffer);
|
|
147
|
-
}
|
|
148
|
-
break;
|
|
149
|
-
}
|
|
150
|
-
case PM_ARRAY_PATTERN_NODE: {
|
|
151
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
152
|
-
if (((pm_array_pattern_node_t *)node)->constant == NULL) {
|
|
153
|
-
pm_buffer_append_byte(buffer, 0);
|
|
154
|
-
} else {
|
|
155
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_array_pattern_node_t *)node)->constant, buffer);
|
|
156
|
-
}
|
|
157
|
-
uint32_t requireds_size = pm_sizet_to_u32(((pm_array_pattern_node_t *)node)->requireds.size);
|
|
158
|
-
pm_buffer_append_varuint(buffer, requireds_size);
|
|
159
|
-
for (uint32_t index = 0; index < requireds_size; index++) {
|
|
160
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_array_pattern_node_t *)node)->requireds.nodes[index], buffer);
|
|
161
|
-
}
|
|
162
|
-
if (((pm_array_pattern_node_t *)node)->rest == NULL) {
|
|
163
|
-
pm_buffer_append_byte(buffer, 0);
|
|
164
|
-
} else {
|
|
165
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_array_pattern_node_t *)node)->rest, buffer);
|
|
166
|
-
}
|
|
167
|
-
uint32_t posts_size = pm_sizet_to_u32(((pm_array_pattern_node_t *)node)->posts.size);
|
|
168
|
-
pm_buffer_append_varuint(buffer, posts_size);
|
|
169
|
-
for (uint32_t index = 0; index < posts_size; index++) {
|
|
170
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_array_pattern_node_t *)node)->posts.nodes[index], buffer);
|
|
171
|
-
}
|
|
172
|
-
if (((pm_array_pattern_node_t *)node)->opening_loc.length == 0) {
|
|
173
|
-
pm_buffer_append_byte(buffer, 0);
|
|
174
|
-
} else {
|
|
175
|
-
pm_buffer_append_byte(buffer, 1);
|
|
176
|
-
pm_serialize_location(&((pm_array_pattern_node_t *)node)->opening_loc, buffer);
|
|
177
|
-
}
|
|
178
|
-
if (((pm_array_pattern_node_t *)node)->closing_loc.length == 0) {
|
|
179
|
-
pm_buffer_append_byte(buffer, 0);
|
|
180
|
-
} else {
|
|
181
|
-
pm_buffer_append_byte(buffer, 1);
|
|
182
|
-
pm_serialize_location(&((pm_array_pattern_node_t *)node)->closing_loc, buffer);
|
|
183
|
-
}
|
|
184
|
-
break;
|
|
185
|
-
}
|
|
186
|
-
case PM_ASSOC_NODE: {
|
|
187
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
188
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_assoc_node_t *)node)->key, buffer);
|
|
189
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_assoc_node_t *)node)->value, buffer);
|
|
190
|
-
if (((pm_assoc_node_t *)node)->operator_loc.length == 0) {
|
|
191
|
-
pm_buffer_append_byte(buffer, 0);
|
|
192
|
-
} else {
|
|
193
|
-
pm_buffer_append_byte(buffer, 1);
|
|
194
|
-
pm_serialize_location(&((pm_assoc_node_t *)node)->operator_loc, buffer);
|
|
195
|
-
}
|
|
196
|
-
break;
|
|
197
|
-
}
|
|
198
|
-
case PM_ASSOC_SPLAT_NODE: {
|
|
199
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
200
|
-
if (((pm_assoc_splat_node_t *)node)->value == NULL) {
|
|
201
|
-
pm_buffer_append_byte(buffer, 0);
|
|
202
|
-
} else {
|
|
203
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_assoc_splat_node_t *)node)->value, buffer);
|
|
204
|
-
}
|
|
205
|
-
pm_serialize_location(&((pm_assoc_splat_node_t *)node)->operator_loc, buffer);
|
|
206
|
-
break;
|
|
207
|
-
}
|
|
208
|
-
case PM_BACK_REFERENCE_READ_NODE: {
|
|
209
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
210
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_back_reference_read_node_t *)node)->name));
|
|
211
|
-
break;
|
|
212
|
-
}
|
|
213
|
-
case PM_BEGIN_NODE: {
|
|
214
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
215
|
-
if (((pm_begin_node_t *)node)->begin_keyword_loc.length == 0) {
|
|
216
|
-
pm_buffer_append_byte(buffer, 0);
|
|
217
|
-
} else {
|
|
218
|
-
pm_buffer_append_byte(buffer, 1);
|
|
219
|
-
pm_serialize_location(&((pm_begin_node_t *)node)->begin_keyword_loc, buffer);
|
|
220
|
-
}
|
|
221
|
-
if (((pm_begin_node_t *)node)->statements == NULL) {
|
|
222
|
-
pm_buffer_append_byte(buffer, 0);
|
|
223
|
-
} else {
|
|
224
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_begin_node_t *)node)->statements, buffer);
|
|
225
|
-
}
|
|
226
|
-
if (((pm_begin_node_t *)node)->rescue_clause == NULL) {
|
|
227
|
-
pm_buffer_append_byte(buffer, 0);
|
|
228
|
-
} else {
|
|
229
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_begin_node_t *)node)->rescue_clause, buffer);
|
|
230
|
-
}
|
|
231
|
-
if (((pm_begin_node_t *)node)->else_clause == NULL) {
|
|
232
|
-
pm_buffer_append_byte(buffer, 0);
|
|
233
|
-
} else {
|
|
234
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_begin_node_t *)node)->else_clause, buffer);
|
|
235
|
-
}
|
|
236
|
-
if (((pm_begin_node_t *)node)->ensure_clause == NULL) {
|
|
237
|
-
pm_buffer_append_byte(buffer, 0);
|
|
238
|
-
} else {
|
|
239
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_begin_node_t *)node)->ensure_clause, buffer);
|
|
240
|
-
}
|
|
241
|
-
if (((pm_begin_node_t *)node)->end_keyword_loc.length == 0) {
|
|
242
|
-
pm_buffer_append_byte(buffer, 0);
|
|
243
|
-
} else {
|
|
244
|
-
pm_buffer_append_byte(buffer, 1);
|
|
245
|
-
pm_serialize_location(&((pm_begin_node_t *)node)->end_keyword_loc, buffer);
|
|
246
|
-
}
|
|
247
|
-
break;
|
|
248
|
-
}
|
|
249
|
-
case PM_BLOCK_ARGUMENT_NODE: {
|
|
250
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
251
|
-
if (((pm_block_argument_node_t *)node)->expression == NULL) {
|
|
252
|
-
pm_buffer_append_byte(buffer, 0);
|
|
253
|
-
} else {
|
|
254
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_block_argument_node_t *)node)->expression, buffer);
|
|
255
|
-
}
|
|
256
|
-
pm_serialize_location(&((pm_block_argument_node_t *)node)->operator_loc, buffer);
|
|
257
|
-
break;
|
|
258
|
-
}
|
|
259
|
-
case PM_BLOCK_LOCAL_VARIABLE_NODE: {
|
|
260
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
261
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_block_local_variable_node_t *)node)->name));
|
|
262
|
-
break;
|
|
263
|
-
}
|
|
264
|
-
case PM_BLOCK_NODE: {
|
|
265
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
266
|
-
uint32_t locals_size = pm_sizet_to_u32(((pm_block_node_t *)node)->locals.size);
|
|
267
|
-
pm_buffer_append_varuint(buffer, locals_size);
|
|
268
|
-
for (uint32_t index = 0; index < locals_size; index++) {
|
|
269
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_block_node_t *)node)->locals.ids[index]));
|
|
270
|
-
}
|
|
271
|
-
if (((pm_block_node_t *)node)->parameters == NULL) {
|
|
272
|
-
pm_buffer_append_byte(buffer, 0);
|
|
273
|
-
} else {
|
|
274
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_block_node_t *)node)->parameters, buffer);
|
|
275
|
-
}
|
|
276
|
-
if (((pm_block_node_t *)node)->body == NULL) {
|
|
277
|
-
pm_buffer_append_byte(buffer, 0);
|
|
278
|
-
} else {
|
|
279
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_block_node_t *)node)->body, buffer);
|
|
280
|
-
}
|
|
281
|
-
pm_serialize_location(&((pm_block_node_t *)node)->opening_loc, buffer);
|
|
282
|
-
pm_serialize_location(&((pm_block_node_t *)node)->closing_loc, buffer);
|
|
283
|
-
break;
|
|
284
|
-
}
|
|
285
|
-
case PM_BLOCK_PARAMETER_NODE: {
|
|
286
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
287
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_block_parameter_node_t *)node)->name));
|
|
288
|
-
if (((pm_block_parameter_node_t *)node)->name_loc.length == 0) {
|
|
289
|
-
pm_buffer_append_byte(buffer, 0);
|
|
290
|
-
} else {
|
|
291
|
-
pm_buffer_append_byte(buffer, 1);
|
|
292
|
-
pm_serialize_location(&((pm_block_parameter_node_t *)node)->name_loc, buffer);
|
|
293
|
-
}
|
|
294
|
-
pm_serialize_location(&((pm_block_parameter_node_t *)node)->operator_loc, buffer);
|
|
295
|
-
break;
|
|
296
|
-
}
|
|
297
|
-
case PM_BLOCK_PARAMETERS_NODE: {
|
|
298
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
299
|
-
if (((pm_block_parameters_node_t *)node)->parameters == NULL) {
|
|
300
|
-
pm_buffer_append_byte(buffer, 0);
|
|
301
|
-
} else {
|
|
302
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_block_parameters_node_t *)node)->parameters, buffer);
|
|
303
|
-
}
|
|
304
|
-
uint32_t locals_size = pm_sizet_to_u32(((pm_block_parameters_node_t *)node)->locals.size);
|
|
305
|
-
pm_buffer_append_varuint(buffer, locals_size);
|
|
306
|
-
for (uint32_t index = 0; index < locals_size; index++) {
|
|
307
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_block_parameters_node_t *)node)->locals.nodes[index], buffer);
|
|
308
|
-
}
|
|
309
|
-
if (((pm_block_parameters_node_t *)node)->opening_loc.length == 0) {
|
|
310
|
-
pm_buffer_append_byte(buffer, 0);
|
|
311
|
-
} else {
|
|
312
|
-
pm_buffer_append_byte(buffer, 1);
|
|
313
|
-
pm_serialize_location(&((pm_block_parameters_node_t *)node)->opening_loc, buffer);
|
|
314
|
-
}
|
|
315
|
-
if (((pm_block_parameters_node_t *)node)->closing_loc.length == 0) {
|
|
316
|
-
pm_buffer_append_byte(buffer, 0);
|
|
317
|
-
} else {
|
|
318
|
-
pm_buffer_append_byte(buffer, 1);
|
|
319
|
-
pm_serialize_location(&((pm_block_parameters_node_t *)node)->closing_loc, buffer);
|
|
320
|
-
}
|
|
321
|
-
break;
|
|
322
|
-
}
|
|
323
|
-
case PM_BREAK_NODE: {
|
|
324
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
325
|
-
if (((pm_break_node_t *)node)->arguments == NULL) {
|
|
326
|
-
pm_buffer_append_byte(buffer, 0);
|
|
327
|
-
} else {
|
|
328
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_break_node_t *)node)->arguments, buffer);
|
|
329
|
-
}
|
|
330
|
-
pm_serialize_location(&((pm_break_node_t *)node)->keyword_loc, buffer);
|
|
331
|
-
break;
|
|
332
|
-
}
|
|
333
|
-
case PM_CALL_AND_WRITE_NODE: {
|
|
334
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
335
|
-
if (((pm_call_and_write_node_t *)node)->receiver == NULL) {
|
|
336
|
-
pm_buffer_append_byte(buffer, 0);
|
|
337
|
-
} else {
|
|
338
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_call_and_write_node_t *)node)->receiver, buffer);
|
|
339
|
-
}
|
|
340
|
-
if (((pm_call_and_write_node_t *)node)->call_operator_loc.length == 0) {
|
|
341
|
-
pm_buffer_append_byte(buffer, 0);
|
|
342
|
-
} else {
|
|
343
|
-
pm_buffer_append_byte(buffer, 1);
|
|
344
|
-
pm_serialize_location(&((pm_call_and_write_node_t *)node)->call_operator_loc, buffer);
|
|
345
|
-
}
|
|
346
|
-
if (((pm_call_and_write_node_t *)node)->message_loc.length == 0) {
|
|
347
|
-
pm_buffer_append_byte(buffer, 0);
|
|
348
|
-
} else {
|
|
349
|
-
pm_buffer_append_byte(buffer, 1);
|
|
350
|
-
pm_serialize_location(&((pm_call_and_write_node_t *)node)->message_loc, buffer);
|
|
351
|
-
}
|
|
352
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_and_write_node_t *)node)->read_name));
|
|
353
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_and_write_node_t *)node)->write_name));
|
|
354
|
-
pm_serialize_location(&((pm_call_and_write_node_t *)node)->operator_loc, buffer);
|
|
355
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_call_and_write_node_t *)node)->value, buffer);
|
|
356
|
-
break;
|
|
357
|
-
}
|
|
358
|
-
case PM_CALL_NODE: {
|
|
359
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
360
|
-
if (((pm_call_node_t *)node)->receiver == NULL) {
|
|
361
|
-
pm_buffer_append_byte(buffer, 0);
|
|
362
|
-
} else {
|
|
363
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_call_node_t *)node)->receiver, buffer);
|
|
364
|
-
}
|
|
365
|
-
if (((pm_call_node_t *)node)->call_operator_loc.length == 0) {
|
|
366
|
-
pm_buffer_append_byte(buffer, 0);
|
|
367
|
-
} else {
|
|
368
|
-
pm_buffer_append_byte(buffer, 1);
|
|
369
|
-
pm_serialize_location(&((pm_call_node_t *)node)->call_operator_loc, buffer);
|
|
370
|
-
}
|
|
371
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_node_t *)node)->name));
|
|
372
|
-
if (((pm_call_node_t *)node)->message_loc.length == 0) {
|
|
373
|
-
pm_buffer_append_byte(buffer, 0);
|
|
374
|
-
} else {
|
|
375
|
-
pm_buffer_append_byte(buffer, 1);
|
|
376
|
-
pm_serialize_location(&((pm_call_node_t *)node)->message_loc, buffer);
|
|
377
|
-
}
|
|
378
|
-
if (((pm_call_node_t *)node)->opening_loc.length == 0) {
|
|
379
|
-
pm_buffer_append_byte(buffer, 0);
|
|
380
|
-
} else {
|
|
381
|
-
pm_buffer_append_byte(buffer, 1);
|
|
382
|
-
pm_serialize_location(&((pm_call_node_t *)node)->opening_loc, buffer);
|
|
383
|
-
}
|
|
384
|
-
if (((pm_call_node_t *)node)->arguments == NULL) {
|
|
385
|
-
pm_buffer_append_byte(buffer, 0);
|
|
386
|
-
} else {
|
|
387
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_call_node_t *)node)->arguments, buffer);
|
|
388
|
-
}
|
|
389
|
-
if (((pm_call_node_t *)node)->closing_loc.length == 0) {
|
|
390
|
-
pm_buffer_append_byte(buffer, 0);
|
|
391
|
-
} else {
|
|
392
|
-
pm_buffer_append_byte(buffer, 1);
|
|
393
|
-
pm_serialize_location(&((pm_call_node_t *)node)->closing_loc, buffer);
|
|
394
|
-
}
|
|
395
|
-
if (((pm_call_node_t *)node)->equal_loc.length == 0) {
|
|
396
|
-
pm_buffer_append_byte(buffer, 0);
|
|
397
|
-
} else {
|
|
398
|
-
pm_buffer_append_byte(buffer, 1);
|
|
399
|
-
pm_serialize_location(&((pm_call_node_t *)node)->equal_loc, buffer);
|
|
400
|
-
}
|
|
401
|
-
if (((pm_call_node_t *)node)->block == NULL) {
|
|
402
|
-
pm_buffer_append_byte(buffer, 0);
|
|
403
|
-
} else {
|
|
404
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_call_node_t *)node)->block, buffer);
|
|
405
|
-
}
|
|
406
|
-
break;
|
|
407
|
-
}
|
|
408
|
-
case PM_CALL_OPERATOR_WRITE_NODE: {
|
|
409
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
410
|
-
if (((pm_call_operator_write_node_t *)node)->receiver == NULL) {
|
|
411
|
-
pm_buffer_append_byte(buffer, 0);
|
|
412
|
-
} else {
|
|
413
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_call_operator_write_node_t *)node)->receiver, buffer);
|
|
414
|
-
}
|
|
415
|
-
if (((pm_call_operator_write_node_t *)node)->call_operator_loc.length == 0) {
|
|
416
|
-
pm_buffer_append_byte(buffer, 0);
|
|
417
|
-
} else {
|
|
418
|
-
pm_buffer_append_byte(buffer, 1);
|
|
419
|
-
pm_serialize_location(&((pm_call_operator_write_node_t *)node)->call_operator_loc, buffer);
|
|
420
|
-
}
|
|
421
|
-
if (((pm_call_operator_write_node_t *)node)->message_loc.length == 0) {
|
|
422
|
-
pm_buffer_append_byte(buffer, 0);
|
|
423
|
-
} else {
|
|
424
|
-
pm_buffer_append_byte(buffer, 1);
|
|
425
|
-
pm_serialize_location(&((pm_call_operator_write_node_t *)node)->message_loc, buffer);
|
|
426
|
-
}
|
|
427
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_operator_write_node_t *)node)->read_name));
|
|
428
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_operator_write_node_t *)node)->write_name));
|
|
429
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_operator_write_node_t *)node)->binary_operator));
|
|
430
|
-
pm_serialize_location(&((pm_call_operator_write_node_t *)node)->binary_operator_loc, buffer);
|
|
431
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_call_operator_write_node_t *)node)->value, buffer);
|
|
432
|
-
break;
|
|
433
|
-
}
|
|
434
|
-
case PM_CALL_OR_WRITE_NODE: {
|
|
435
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
436
|
-
if (((pm_call_or_write_node_t *)node)->receiver == NULL) {
|
|
437
|
-
pm_buffer_append_byte(buffer, 0);
|
|
438
|
-
} else {
|
|
439
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_call_or_write_node_t *)node)->receiver, buffer);
|
|
440
|
-
}
|
|
441
|
-
if (((pm_call_or_write_node_t *)node)->call_operator_loc.length == 0) {
|
|
442
|
-
pm_buffer_append_byte(buffer, 0);
|
|
443
|
-
} else {
|
|
444
|
-
pm_buffer_append_byte(buffer, 1);
|
|
445
|
-
pm_serialize_location(&((pm_call_or_write_node_t *)node)->call_operator_loc, buffer);
|
|
446
|
-
}
|
|
447
|
-
if (((pm_call_or_write_node_t *)node)->message_loc.length == 0) {
|
|
448
|
-
pm_buffer_append_byte(buffer, 0);
|
|
449
|
-
} else {
|
|
450
|
-
pm_buffer_append_byte(buffer, 1);
|
|
451
|
-
pm_serialize_location(&((pm_call_or_write_node_t *)node)->message_loc, buffer);
|
|
452
|
-
}
|
|
453
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_or_write_node_t *)node)->read_name));
|
|
454
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_or_write_node_t *)node)->write_name));
|
|
455
|
-
pm_serialize_location(&((pm_call_or_write_node_t *)node)->operator_loc, buffer);
|
|
456
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_call_or_write_node_t *)node)->value, buffer);
|
|
457
|
-
break;
|
|
458
|
-
}
|
|
459
|
-
case PM_CALL_TARGET_NODE: {
|
|
460
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
461
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_call_target_node_t *)node)->receiver, buffer);
|
|
462
|
-
pm_serialize_location(&((pm_call_target_node_t *)node)->call_operator_loc, buffer);
|
|
463
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_call_target_node_t *)node)->name));
|
|
464
|
-
pm_serialize_location(&((pm_call_target_node_t *)node)->message_loc, buffer);
|
|
465
|
-
break;
|
|
466
|
-
}
|
|
467
|
-
case PM_CAPTURE_PATTERN_NODE: {
|
|
468
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
469
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_capture_pattern_node_t *)node)->value, buffer);
|
|
470
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_capture_pattern_node_t *)node)->target, buffer);
|
|
471
|
-
pm_serialize_location(&((pm_capture_pattern_node_t *)node)->operator_loc, buffer);
|
|
472
|
-
break;
|
|
473
|
-
}
|
|
474
|
-
case PM_CASE_MATCH_NODE: {
|
|
475
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
476
|
-
if (((pm_case_match_node_t *)node)->predicate == NULL) {
|
|
477
|
-
pm_buffer_append_byte(buffer, 0);
|
|
478
|
-
} else {
|
|
479
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_case_match_node_t *)node)->predicate, buffer);
|
|
480
|
-
}
|
|
481
|
-
uint32_t conditions_size = pm_sizet_to_u32(((pm_case_match_node_t *)node)->conditions.size);
|
|
482
|
-
pm_buffer_append_varuint(buffer, conditions_size);
|
|
483
|
-
for (uint32_t index = 0; index < conditions_size; index++) {
|
|
484
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_case_match_node_t *)node)->conditions.nodes[index], buffer);
|
|
485
|
-
}
|
|
486
|
-
if (((pm_case_match_node_t *)node)->else_clause == NULL) {
|
|
487
|
-
pm_buffer_append_byte(buffer, 0);
|
|
488
|
-
} else {
|
|
489
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_case_match_node_t *)node)->else_clause, buffer);
|
|
490
|
-
}
|
|
491
|
-
pm_serialize_location(&((pm_case_match_node_t *)node)->case_keyword_loc, buffer);
|
|
492
|
-
pm_serialize_location(&((pm_case_match_node_t *)node)->end_keyword_loc, buffer);
|
|
493
|
-
break;
|
|
494
|
-
}
|
|
495
|
-
case PM_CASE_NODE: {
|
|
496
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
497
|
-
if (((pm_case_node_t *)node)->predicate == NULL) {
|
|
498
|
-
pm_buffer_append_byte(buffer, 0);
|
|
499
|
-
} else {
|
|
500
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_case_node_t *)node)->predicate, buffer);
|
|
501
|
-
}
|
|
502
|
-
uint32_t conditions_size = pm_sizet_to_u32(((pm_case_node_t *)node)->conditions.size);
|
|
503
|
-
pm_buffer_append_varuint(buffer, conditions_size);
|
|
504
|
-
for (uint32_t index = 0; index < conditions_size; index++) {
|
|
505
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_case_node_t *)node)->conditions.nodes[index], buffer);
|
|
506
|
-
}
|
|
507
|
-
if (((pm_case_node_t *)node)->else_clause == NULL) {
|
|
508
|
-
pm_buffer_append_byte(buffer, 0);
|
|
509
|
-
} else {
|
|
510
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_case_node_t *)node)->else_clause, buffer);
|
|
511
|
-
}
|
|
512
|
-
pm_serialize_location(&((pm_case_node_t *)node)->case_keyword_loc, buffer);
|
|
513
|
-
pm_serialize_location(&((pm_case_node_t *)node)->end_keyword_loc, buffer);
|
|
514
|
-
break;
|
|
515
|
-
}
|
|
516
|
-
case PM_CLASS_NODE: {
|
|
517
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
518
|
-
uint32_t locals_size = pm_sizet_to_u32(((pm_class_node_t *)node)->locals.size);
|
|
519
|
-
pm_buffer_append_varuint(buffer, locals_size);
|
|
520
|
-
for (uint32_t index = 0; index < locals_size; index++) {
|
|
521
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_node_t *)node)->locals.ids[index]));
|
|
522
|
-
}
|
|
523
|
-
pm_serialize_location(&((pm_class_node_t *)node)->class_keyword_loc, buffer);
|
|
524
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_class_node_t *)node)->constant_path, buffer);
|
|
525
|
-
if (((pm_class_node_t *)node)->inheritance_operator_loc.length == 0) {
|
|
526
|
-
pm_buffer_append_byte(buffer, 0);
|
|
527
|
-
} else {
|
|
528
|
-
pm_buffer_append_byte(buffer, 1);
|
|
529
|
-
pm_serialize_location(&((pm_class_node_t *)node)->inheritance_operator_loc, buffer);
|
|
530
|
-
}
|
|
531
|
-
if (((pm_class_node_t *)node)->superclass == NULL) {
|
|
532
|
-
pm_buffer_append_byte(buffer, 0);
|
|
533
|
-
} else {
|
|
534
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_class_node_t *)node)->superclass, buffer);
|
|
535
|
-
}
|
|
536
|
-
if (((pm_class_node_t *)node)->body == NULL) {
|
|
537
|
-
pm_buffer_append_byte(buffer, 0);
|
|
538
|
-
} else {
|
|
539
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_class_node_t *)node)->body, buffer);
|
|
540
|
-
}
|
|
541
|
-
pm_serialize_location(&((pm_class_node_t *)node)->end_keyword_loc, buffer);
|
|
542
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_node_t *)node)->name));
|
|
543
|
-
break;
|
|
544
|
-
}
|
|
545
|
-
case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
|
|
546
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
547
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_and_write_node_t *)node)->name));
|
|
548
|
-
pm_serialize_location(&((pm_class_variable_and_write_node_t *)node)->name_loc, buffer);
|
|
549
|
-
pm_serialize_location(&((pm_class_variable_and_write_node_t *)node)->operator_loc, buffer);
|
|
550
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_class_variable_and_write_node_t *)node)->value, buffer);
|
|
551
|
-
break;
|
|
552
|
-
}
|
|
553
|
-
case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
554
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
555
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_operator_write_node_t *)node)->name));
|
|
556
|
-
pm_serialize_location(&((pm_class_variable_operator_write_node_t *)node)->name_loc, buffer);
|
|
557
|
-
pm_serialize_location(&((pm_class_variable_operator_write_node_t *)node)->binary_operator_loc, buffer);
|
|
558
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_class_variable_operator_write_node_t *)node)->value, buffer);
|
|
559
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_operator_write_node_t *)node)->binary_operator));
|
|
560
|
-
break;
|
|
561
|
-
}
|
|
562
|
-
case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
|
|
563
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
564
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_or_write_node_t *)node)->name));
|
|
565
|
-
pm_serialize_location(&((pm_class_variable_or_write_node_t *)node)->name_loc, buffer);
|
|
566
|
-
pm_serialize_location(&((pm_class_variable_or_write_node_t *)node)->operator_loc, buffer);
|
|
567
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_class_variable_or_write_node_t *)node)->value, buffer);
|
|
568
|
-
break;
|
|
569
|
-
}
|
|
570
|
-
case PM_CLASS_VARIABLE_READ_NODE: {
|
|
571
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
572
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_read_node_t *)node)->name));
|
|
573
|
-
break;
|
|
574
|
-
}
|
|
575
|
-
case PM_CLASS_VARIABLE_TARGET_NODE: {
|
|
576
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
577
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_target_node_t *)node)->name));
|
|
578
|
-
break;
|
|
579
|
-
}
|
|
580
|
-
case PM_CLASS_VARIABLE_WRITE_NODE: {
|
|
581
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
582
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_class_variable_write_node_t *)node)->name));
|
|
583
|
-
pm_serialize_location(&((pm_class_variable_write_node_t *)node)->name_loc, buffer);
|
|
584
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_class_variable_write_node_t *)node)->value, buffer);
|
|
585
|
-
pm_serialize_location(&((pm_class_variable_write_node_t *)node)->operator_loc, buffer);
|
|
586
|
-
break;
|
|
587
|
-
}
|
|
588
|
-
case PM_CONSTANT_AND_WRITE_NODE: {
|
|
589
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
590
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_and_write_node_t *)node)->name));
|
|
591
|
-
pm_serialize_location(&((pm_constant_and_write_node_t *)node)->name_loc, buffer);
|
|
592
|
-
pm_serialize_location(&((pm_constant_and_write_node_t *)node)->operator_loc, buffer);
|
|
593
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_constant_and_write_node_t *)node)->value, buffer);
|
|
594
|
-
break;
|
|
595
|
-
}
|
|
596
|
-
case PM_CONSTANT_OPERATOR_WRITE_NODE: {
|
|
597
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
598
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_operator_write_node_t *)node)->name));
|
|
599
|
-
pm_serialize_location(&((pm_constant_operator_write_node_t *)node)->name_loc, buffer);
|
|
600
|
-
pm_serialize_location(&((pm_constant_operator_write_node_t *)node)->binary_operator_loc, buffer);
|
|
601
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_constant_operator_write_node_t *)node)->value, buffer);
|
|
602
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_operator_write_node_t *)node)->binary_operator));
|
|
603
|
-
break;
|
|
604
|
-
}
|
|
605
|
-
case PM_CONSTANT_OR_WRITE_NODE: {
|
|
606
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
607
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_or_write_node_t *)node)->name));
|
|
608
|
-
pm_serialize_location(&((pm_constant_or_write_node_t *)node)->name_loc, buffer);
|
|
609
|
-
pm_serialize_location(&((pm_constant_or_write_node_t *)node)->operator_loc, buffer);
|
|
610
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_constant_or_write_node_t *)node)->value, buffer);
|
|
611
|
-
break;
|
|
612
|
-
}
|
|
613
|
-
case PM_CONSTANT_PATH_AND_WRITE_NODE: {
|
|
614
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
615
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_and_write_node_t *)node)->target, buffer);
|
|
616
|
-
pm_serialize_location(&((pm_constant_path_and_write_node_t *)node)->operator_loc, buffer);
|
|
617
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_and_write_node_t *)node)->value, buffer);
|
|
618
|
-
break;
|
|
619
|
-
}
|
|
620
|
-
case PM_CONSTANT_PATH_NODE: {
|
|
621
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
622
|
-
if (((pm_constant_path_node_t *)node)->parent == NULL) {
|
|
623
|
-
pm_buffer_append_byte(buffer, 0);
|
|
624
|
-
} else {
|
|
625
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_node_t *)node)->parent, buffer);
|
|
626
|
-
}
|
|
627
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_path_node_t *)node)->name));
|
|
628
|
-
pm_serialize_location(&((pm_constant_path_node_t *)node)->delimiter_loc, buffer);
|
|
629
|
-
pm_serialize_location(&((pm_constant_path_node_t *)node)->name_loc, buffer);
|
|
630
|
-
break;
|
|
631
|
-
}
|
|
632
|
-
case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
|
|
633
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
634
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_operator_write_node_t *)node)->target, buffer);
|
|
635
|
-
pm_serialize_location(&((pm_constant_path_operator_write_node_t *)node)->binary_operator_loc, buffer);
|
|
636
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_operator_write_node_t *)node)->value, buffer);
|
|
637
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_path_operator_write_node_t *)node)->binary_operator));
|
|
638
|
-
break;
|
|
639
|
-
}
|
|
640
|
-
case PM_CONSTANT_PATH_OR_WRITE_NODE: {
|
|
641
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
642
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_or_write_node_t *)node)->target, buffer);
|
|
643
|
-
pm_serialize_location(&((pm_constant_path_or_write_node_t *)node)->operator_loc, buffer);
|
|
644
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_or_write_node_t *)node)->value, buffer);
|
|
645
|
-
break;
|
|
646
|
-
}
|
|
647
|
-
case PM_CONSTANT_PATH_TARGET_NODE: {
|
|
648
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
649
|
-
if (((pm_constant_path_target_node_t *)node)->parent == NULL) {
|
|
650
|
-
pm_buffer_append_byte(buffer, 0);
|
|
651
|
-
} else {
|
|
652
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_target_node_t *)node)->parent, buffer);
|
|
653
|
-
}
|
|
654
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_path_target_node_t *)node)->name));
|
|
655
|
-
pm_serialize_location(&((pm_constant_path_target_node_t *)node)->delimiter_loc, buffer);
|
|
656
|
-
pm_serialize_location(&((pm_constant_path_target_node_t *)node)->name_loc, buffer);
|
|
657
|
-
break;
|
|
658
|
-
}
|
|
659
|
-
case PM_CONSTANT_PATH_WRITE_NODE: {
|
|
660
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
661
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_write_node_t *)node)->target, buffer);
|
|
662
|
-
pm_serialize_location(&((pm_constant_path_write_node_t *)node)->operator_loc, buffer);
|
|
663
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_constant_path_write_node_t *)node)->value, buffer);
|
|
664
|
-
break;
|
|
665
|
-
}
|
|
666
|
-
case PM_CONSTANT_READ_NODE: {
|
|
667
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
668
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_read_node_t *)node)->name));
|
|
669
|
-
break;
|
|
670
|
-
}
|
|
671
|
-
case PM_CONSTANT_TARGET_NODE: {
|
|
672
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
673
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_target_node_t *)node)->name));
|
|
674
|
-
break;
|
|
675
|
-
}
|
|
676
|
-
case PM_CONSTANT_WRITE_NODE: {
|
|
677
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
678
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_constant_write_node_t *)node)->name));
|
|
679
|
-
pm_serialize_location(&((pm_constant_write_node_t *)node)->name_loc, buffer);
|
|
680
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_constant_write_node_t *)node)->value, buffer);
|
|
681
|
-
pm_serialize_location(&((pm_constant_write_node_t *)node)->operator_loc, buffer);
|
|
682
|
-
break;
|
|
683
|
-
}
|
|
684
|
-
case PM_DEF_NODE: {
|
|
685
|
-
// serialize length
|
|
686
|
-
// encoding of location u32s make us need to save this offset.
|
|
687
|
-
size_t length_offset = buffer->length;
|
|
688
|
-
pm_buffer_append_string(buffer, "\0\0\0\0", 4); /* consume 4 bytes, updated below */
|
|
689
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
690
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_def_node_t *)node)->name));
|
|
691
|
-
pm_serialize_location(&((pm_def_node_t *)node)->name_loc, buffer);
|
|
692
|
-
if (((pm_def_node_t *)node)->receiver == NULL) {
|
|
693
|
-
pm_buffer_append_byte(buffer, 0);
|
|
694
|
-
} else {
|
|
695
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_def_node_t *)node)->receiver, buffer);
|
|
696
|
-
}
|
|
697
|
-
if (((pm_def_node_t *)node)->parameters == NULL) {
|
|
698
|
-
pm_buffer_append_byte(buffer, 0);
|
|
699
|
-
} else {
|
|
700
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_def_node_t *)node)->parameters, buffer);
|
|
701
|
-
}
|
|
702
|
-
if (((pm_def_node_t *)node)->body == NULL) {
|
|
703
|
-
pm_buffer_append_byte(buffer, 0);
|
|
704
|
-
} else {
|
|
705
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_def_node_t *)node)->body, buffer);
|
|
706
|
-
}
|
|
707
|
-
uint32_t locals_size = pm_sizet_to_u32(((pm_def_node_t *)node)->locals.size);
|
|
708
|
-
pm_buffer_append_varuint(buffer, locals_size);
|
|
709
|
-
for (uint32_t index = 0; index < locals_size; index++) {
|
|
710
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_def_node_t *)node)->locals.ids[index]));
|
|
711
|
-
}
|
|
712
|
-
pm_serialize_location(&((pm_def_node_t *)node)->def_keyword_loc, buffer);
|
|
713
|
-
if (((pm_def_node_t *)node)->operator_loc.length == 0) {
|
|
714
|
-
pm_buffer_append_byte(buffer, 0);
|
|
715
|
-
} else {
|
|
716
|
-
pm_buffer_append_byte(buffer, 1);
|
|
717
|
-
pm_serialize_location(&((pm_def_node_t *)node)->operator_loc, buffer);
|
|
718
|
-
}
|
|
719
|
-
if (((pm_def_node_t *)node)->lparen_loc.length == 0) {
|
|
720
|
-
pm_buffer_append_byte(buffer, 0);
|
|
721
|
-
} else {
|
|
722
|
-
pm_buffer_append_byte(buffer, 1);
|
|
723
|
-
pm_serialize_location(&((pm_def_node_t *)node)->lparen_loc, buffer);
|
|
724
|
-
}
|
|
725
|
-
if (((pm_def_node_t *)node)->rparen_loc.length == 0) {
|
|
726
|
-
pm_buffer_append_byte(buffer, 0);
|
|
727
|
-
} else {
|
|
728
|
-
pm_buffer_append_byte(buffer, 1);
|
|
729
|
-
pm_serialize_location(&((pm_def_node_t *)node)->rparen_loc, buffer);
|
|
730
|
-
}
|
|
731
|
-
if (((pm_def_node_t *)node)->equal_loc.length == 0) {
|
|
732
|
-
pm_buffer_append_byte(buffer, 0);
|
|
733
|
-
} else {
|
|
734
|
-
pm_buffer_append_byte(buffer, 1);
|
|
735
|
-
pm_serialize_location(&((pm_def_node_t *)node)->equal_loc, buffer);
|
|
736
|
-
}
|
|
737
|
-
if (((pm_def_node_t *)node)->end_keyword_loc.length == 0) {
|
|
738
|
-
pm_buffer_append_byte(buffer, 0);
|
|
739
|
-
} else {
|
|
740
|
-
pm_buffer_append_byte(buffer, 1);
|
|
741
|
-
pm_serialize_location(&((pm_def_node_t *)node)->end_keyword_loc, buffer);
|
|
742
|
-
}
|
|
743
|
-
// serialize length
|
|
744
|
-
uint32_t length = pm_sizet_to_u32(buffer->length - length_offset);
|
|
745
|
-
memcpy(buffer->value + length_offset, &length, sizeof(uint32_t));
|
|
746
|
-
break;
|
|
747
|
-
}
|
|
748
|
-
case PM_DEFINED_NODE: {
|
|
749
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
750
|
-
if (((pm_defined_node_t *)node)->lparen_loc.length == 0) {
|
|
751
|
-
pm_buffer_append_byte(buffer, 0);
|
|
752
|
-
} else {
|
|
753
|
-
pm_buffer_append_byte(buffer, 1);
|
|
754
|
-
pm_serialize_location(&((pm_defined_node_t *)node)->lparen_loc, buffer);
|
|
755
|
-
}
|
|
756
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_defined_node_t *)node)->value, buffer);
|
|
757
|
-
if (((pm_defined_node_t *)node)->rparen_loc.length == 0) {
|
|
758
|
-
pm_buffer_append_byte(buffer, 0);
|
|
759
|
-
} else {
|
|
760
|
-
pm_buffer_append_byte(buffer, 1);
|
|
761
|
-
pm_serialize_location(&((pm_defined_node_t *)node)->rparen_loc, buffer);
|
|
762
|
-
}
|
|
763
|
-
pm_serialize_location(&((pm_defined_node_t *)node)->keyword_loc, buffer);
|
|
764
|
-
break;
|
|
765
|
-
}
|
|
766
|
-
case PM_ELSE_NODE: {
|
|
767
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
768
|
-
pm_serialize_location(&((pm_else_node_t *)node)->else_keyword_loc, buffer);
|
|
769
|
-
if (((pm_else_node_t *)node)->statements == NULL) {
|
|
770
|
-
pm_buffer_append_byte(buffer, 0);
|
|
771
|
-
} else {
|
|
772
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_else_node_t *)node)->statements, buffer);
|
|
773
|
-
}
|
|
774
|
-
if (((pm_else_node_t *)node)->end_keyword_loc.length == 0) {
|
|
775
|
-
pm_buffer_append_byte(buffer, 0);
|
|
776
|
-
} else {
|
|
777
|
-
pm_buffer_append_byte(buffer, 1);
|
|
778
|
-
pm_serialize_location(&((pm_else_node_t *)node)->end_keyword_loc, buffer);
|
|
779
|
-
}
|
|
780
|
-
break;
|
|
781
|
-
}
|
|
782
|
-
case PM_EMBEDDED_STATEMENTS_NODE: {
|
|
783
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
784
|
-
pm_serialize_location(&((pm_embedded_statements_node_t *)node)->opening_loc, buffer);
|
|
785
|
-
if (((pm_embedded_statements_node_t *)node)->statements == NULL) {
|
|
786
|
-
pm_buffer_append_byte(buffer, 0);
|
|
787
|
-
} else {
|
|
788
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_embedded_statements_node_t *)node)->statements, buffer);
|
|
789
|
-
}
|
|
790
|
-
pm_serialize_location(&((pm_embedded_statements_node_t *)node)->closing_loc, buffer);
|
|
791
|
-
break;
|
|
792
|
-
}
|
|
793
|
-
case PM_EMBEDDED_VARIABLE_NODE: {
|
|
794
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
795
|
-
pm_serialize_location(&((pm_embedded_variable_node_t *)node)->operator_loc, buffer);
|
|
796
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_embedded_variable_node_t *)node)->variable, buffer);
|
|
797
|
-
break;
|
|
798
|
-
}
|
|
799
|
-
case PM_ENSURE_NODE: {
|
|
800
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
801
|
-
pm_serialize_location(&((pm_ensure_node_t *)node)->ensure_keyword_loc, buffer);
|
|
802
|
-
if (((pm_ensure_node_t *)node)->statements == NULL) {
|
|
803
|
-
pm_buffer_append_byte(buffer, 0);
|
|
804
|
-
} else {
|
|
805
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_ensure_node_t *)node)->statements, buffer);
|
|
806
|
-
}
|
|
807
|
-
pm_serialize_location(&((pm_ensure_node_t *)node)->end_keyword_loc, buffer);
|
|
808
|
-
break;
|
|
809
|
-
}
|
|
810
|
-
case PM_ERROR_RECOVERY_NODE: {
|
|
811
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
812
|
-
if (((pm_error_recovery_node_t *)node)->unexpected == NULL) {
|
|
813
|
-
pm_buffer_append_byte(buffer, 0);
|
|
814
|
-
} else {
|
|
815
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_error_recovery_node_t *)node)->unexpected, buffer);
|
|
816
|
-
}
|
|
817
|
-
break;
|
|
818
|
-
}
|
|
819
|
-
case PM_FALSE_NODE: {
|
|
820
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
821
|
-
break;
|
|
822
|
-
}
|
|
823
|
-
case PM_FIND_PATTERN_NODE: {
|
|
824
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
825
|
-
if (((pm_find_pattern_node_t *)node)->constant == NULL) {
|
|
826
|
-
pm_buffer_append_byte(buffer, 0);
|
|
827
|
-
} else {
|
|
828
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_find_pattern_node_t *)node)->constant, buffer);
|
|
829
|
-
}
|
|
830
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_find_pattern_node_t *)node)->left, buffer);
|
|
831
|
-
uint32_t requireds_size = pm_sizet_to_u32(((pm_find_pattern_node_t *)node)->requireds.size);
|
|
832
|
-
pm_buffer_append_varuint(buffer, requireds_size);
|
|
833
|
-
for (uint32_t index = 0; index < requireds_size; index++) {
|
|
834
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_find_pattern_node_t *)node)->requireds.nodes[index], buffer);
|
|
835
|
-
}
|
|
836
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_find_pattern_node_t *)node)->right, buffer);
|
|
837
|
-
if (((pm_find_pattern_node_t *)node)->opening_loc.length == 0) {
|
|
838
|
-
pm_buffer_append_byte(buffer, 0);
|
|
839
|
-
} else {
|
|
840
|
-
pm_buffer_append_byte(buffer, 1);
|
|
841
|
-
pm_serialize_location(&((pm_find_pattern_node_t *)node)->opening_loc, buffer);
|
|
842
|
-
}
|
|
843
|
-
if (((pm_find_pattern_node_t *)node)->closing_loc.length == 0) {
|
|
844
|
-
pm_buffer_append_byte(buffer, 0);
|
|
845
|
-
} else {
|
|
846
|
-
pm_buffer_append_byte(buffer, 1);
|
|
847
|
-
pm_serialize_location(&((pm_find_pattern_node_t *)node)->closing_loc, buffer);
|
|
848
|
-
}
|
|
849
|
-
break;
|
|
850
|
-
}
|
|
851
|
-
case PM_FLIP_FLOP_NODE: {
|
|
852
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
853
|
-
if (((pm_flip_flop_node_t *)node)->left == NULL) {
|
|
854
|
-
pm_buffer_append_byte(buffer, 0);
|
|
855
|
-
} else {
|
|
856
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_flip_flop_node_t *)node)->left, buffer);
|
|
857
|
-
}
|
|
858
|
-
if (((pm_flip_flop_node_t *)node)->right == NULL) {
|
|
859
|
-
pm_buffer_append_byte(buffer, 0);
|
|
860
|
-
} else {
|
|
861
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_flip_flop_node_t *)node)->right, buffer);
|
|
862
|
-
}
|
|
863
|
-
pm_serialize_location(&((pm_flip_flop_node_t *)node)->operator_loc, buffer);
|
|
864
|
-
break;
|
|
865
|
-
}
|
|
866
|
-
case PM_FLOAT_NODE: {
|
|
867
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
868
|
-
pm_buffer_append_double(buffer, ((pm_float_node_t *)node)->value);
|
|
869
|
-
break;
|
|
870
|
-
}
|
|
871
|
-
case PM_FOR_NODE: {
|
|
872
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
873
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_for_node_t *)node)->index, buffer);
|
|
874
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_for_node_t *)node)->collection, buffer);
|
|
875
|
-
if (((pm_for_node_t *)node)->statements == NULL) {
|
|
876
|
-
pm_buffer_append_byte(buffer, 0);
|
|
877
|
-
} else {
|
|
878
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_for_node_t *)node)->statements, buffer);
|
|
879
|
-
}
|
|
880
|
-
pm_serialize_location(&((pm_for_node_t *)node)->for_keyword_loc, buffer);
|
|
881
|
-
pm_serialize_location(&((pm_for_node_t *)node)->in_keyword_loc, buffer);
|
|
882
|
-
if (((pm_for_node_t *)node)->do_keyword_loc.length == 0) {
|
|
883
|
-
pm_buffer_append_byte(buffer, 0);
|
|
884
|
-
} else {
|
|
885
|
-
pm_buffer_append_byte(buffer, 1);
|
|
886
|
-
pm_serialize_location(&((pm_for_node_t *)node)->do_keyword_loc, buffer);
|
|
887
|
-
}
|
|
888
|
-
pm_serialize_location(&((pm_for_node_t *)node)->end_keyword_loc, buffer);
|
|
889
|
-
break;
|
|
890
|
-
}
|
|
891
|
-
case PM_FORWARDING_ARGUMENTS_NODE: {
|
|
892
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
893
|
-
break;
|
|
894
|
-
}
|
|
895
|
-
case PM_FORWARDING_PARAMETER_NODE: {
|
|
896
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
897
|
-
break;
|
|
898
|
-
}
|
|
899
|
-
case PM_FORWARDING_SUPER_NODE: {
|
|
900
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
901
|
-
pm_serialize_location(&((pm_forwarding_super_node_t *)node)->keyword_loc, buffer);
|
|
902
|
-
if (((pm_forwarding_super_node_t *)node)->block == NULL) {
|
|
903
|
-
pm_buffer_append_byte(buffer, 0);
|
|
904
|
-
} else {
|
|
905
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_forwarding_super_node_t *)node)->block, buffer);
|
|
906
|
-
}
|
|
907
|
-
break;
|
|
908
|
-
}
|
|
909
|
-
case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
|
|
910
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
911
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_and_write_node_t *)node)->name));
|
|
912
|
-
pm_serialize_location(&((pm_global_variable_and_write_node_t *)node)->name_loc, buffer);
|
|
913
|
-
pm_serialize_location(&((pm_global_variable_and_write_node_t *)node)->operator_loc, buffer);
|
|
914
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_global_variable_and_write_node_t *)node)->value, buffer);
|
|
915
|
-
break;
|
|
916
|
-
}
|
|
917
|
-
case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
918
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
919
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_operator_write_node_t *)node)->name));
|
|
920
|
-
pm_serialize_location(&((pm_global_variable_operator_write_node_t *)node)->name_loc, buffer);
|
|
921
|
-
pm_serialize_location(&((pm_global_variable_operator_write_node_t *)node)->binary_operator_loc, buffer);
|
|
922
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_global_variable_operator_write_node_t *)node)->value, buffer);
|
|
923
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_operator_write_node_t *)node)->binary_operator));
|
|
924
|
-
break;
|
|
925
|
-
}
|
|
926
|
-
case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
|
|
927
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
928
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_or_write_node_t *)node)->name));
|
|
929
|
-
pm_serialize_location(&((pm_global_variable_or_write_node_t *)node)->name_loc, buffer);
|
|
930
|
-
pm_serialize_location(&((pm_global_variable_or_write_node_t *)node)->operator_loc, buffer);
|
|
931
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_global_variable_or_write_node_t *)node)->value, buffer);
|
|
932
|
-
break;
|
|
933
|
-
}
|
|
934
|
-
case PM_GLOBAL_VARIABLE_READ_NODE: {
|
|
935
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
936
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_read_node_t *)node)->name));
|
|
937
|
-
break;
|
|
938
|
-
}
|
|
939
|
-
case PM_GLOBAL_VARIABLE_TARGET_NODE: {
|
|
940
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
941
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_target_node_t *)node)->name));
|
|
942
|
-
break;
|
|
943
|
-
}
|
|
944
|
-
case PM_GLOBAL_VARIABLE_WRITE_NODE: {
|
|
945
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
946
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_global_variable_write_node_t *)node)->name));
|
|
947
|
-
pm_serialize_location(&((pm_global_variable_write_node_t *)node)->name_loc, buffer);
|
|
948
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_global_variable_write_node_t *)node)->value, buffer);
|
|
949
|
-
pm_serialize_location(&((pm_global_variable_write_node_t *)node)->operator_loc, buffer);
|
|
950
|
-
break;
|
|
951
|
-
}
|
|
952
|
-
case PM_HASH_NODE: {
|
|
953
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
954
|
-
pm_serialize_location(&((pm_hash_node_t *)node)->opening_loc, buffer);
|
|
955
|
-
uint32_t elements_size = pm_sizet_to_u32(((pm_hash_node_t *)node)->elements.size);
|
|
956
|
-
pm_buffer_append_varuint(buffer, elements_size);
|
|
957
|
-
for (uint32_t index = 0; index < elements_size; index++) {
|
|
958
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_hash_node_t *)node)->elements.nodes[index], buffer);
|
|
959
|
-
}
|
|
960
|
-
pm_serialize_location(&((pm_hash_node_t *)node)->closing_loc, buffer);
|
|
961
|
-
break;
|
|
962
|
-
}
|
|
963
|
-
case PM_HASH_PATTERN_NODE: {
|
|
964
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
965
|
-
if (((pm_hash_pattern_node_t *)node)->constant == NULL) {
|
|
966
|
-
pm_buffer_append_byte(buffer, 0);
|
|
967
|
-
} else {
|
|
968
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_hash_pattern_node_t *)node)->constant, buffer);
|
|
969
|
-
}
|
|
970
|
-
uint32_t elements_size = pm_sizet_to_u32(((pm_hash_pattern_node_t *)node)->elements.size);
|
|
971
|
-
pm_buffer_append_varuint(buffer, elements_size);
|
|
972
|
-
for (uint32_t index = 0; index < elements_size; index++) {
|
|
973
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_hash_pattern_node_t *)node)->elements.nodes[index], buffer);
|
|
974
|
-
}
|
|
975
|
-
if (((pm_hash_pattern_node_t *)node)->rest == NULL) {
|
|
976
|
-
pm_buffer_append_byte(buffer, 0);
|
|
977
|
-
} else {
|
|
978
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_hash_pattern_node_t *)node)->rest, buffer);
|
|
979
|
-
}
|
|
980
|
-
if (((pm_hash_pattern_node_t *)node)->opening_loc.length == 0) {
|
|
981
|
-
pm_buffer_append_byte(buffer, 0);
|
|
982
|
-
} else {
|
|
983
|
-
pm_buffer_append_byte(buffer, 1);
|
|
984
|
-
pm_serialize_location(&((pm_hash_pattern_node_t *)node)->opening_loc, buffer);
|
|
985
|
-
}
|
|
986
|
-
if (((pm_hash_pattern_node_t *)node)->closing_loc.length == 0) {
|
|
987
|
-
pm_buffer_append_byte(buffer, 0);
|
|
988
|
-
} else {
|
|
989
|
-
pm_buffer_append_byte(buffer, 1);
|
|
990
|
-
pm_serialize_location(&((pm_hash_pattern_node_t *)node)->closing_loc, buffer);
|
|
991
|
-
}
|
|
992
|
-
break;
|
|
993
|
-
}
|
|
994
|
-
case PM_IF_NODE: {
|
|
995
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
996
|
-
if (((pm_if_node_t *)node)->if_keyword_loc.length == 0) {
|
|
997
|
-
pm_buffer_append_byte(buffer, 0);
|
|
998
|
-
} else {
|
|
999
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1000
|
-
pm_serialize_location(&((pm_if_node_t *)node)->if_keyword_loc, buffer);
|
|
1001
|
-
}
|
|
1002
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_if_node_t *)node)->predicate, buffer);
|
|
1003
|
-
if (((pm_if_node_t *)node)->then_keyword_loc.length == 0) {
|
|
1004
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1005
|
-
} else {
|
|
1006
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1007
|
-
pm_serialize_location(&((pm_if_node_t *)node)->then_keyword_loc, buffer);
|
|
1008
|
-
}
|
|
1009
|
-
if (((pm_if_node_t *)node)->statements == NULL) {
|
|
1010
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1011
|
-
} else {
|
|
1012
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_if_node_t *)node)->statements, buffer);
|
|
1013
|
-
}
|
|
1014
|
-
if (((pm_if_node_t *)node)->subsequent == NULL) {
|
|
1015
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1016
|
-
} else {
|
|
1017
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_if_node_t *)node)->subsequent, buffer);
|
|
1018
|
-
}
|
|
1019
|
-
if (((pm_if_node_t *)node)->end_keyword_loc.length == 0) {
|
|
1020
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1021
|
-
} else {
|
|
1022
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1023
|
-
pm_serialize_location(&((pm_if_node_t *)node)->end_keyword_loc, buffer);
|
|
1024
|
-
}
|
|
1025
|
-
break;
|
|
1026
|
-
}
|
|
1027
|
-
case PM_IMAGINARY_NODE: {
|
|
1028
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1029
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_imaginary_node_t *)node)->numeric, buffer);
|
|
1030
|
-
break;
|
|
1031
|
-
}
|
|
1032
|
-
case PM_IMPLICIT_NODE: {
|
|
1033
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1034
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_implicit_node_t *)node)->value, buffer);
|
|
1035
|
-
break;
|
|
1036
|
-
}
|
|
1037
|
-
case PM_IMPLICIT_REST_NODE: {
|
|
1038
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1039
|
-
break;
|
|
1040
|
-
}
|
|
1041
|
-
case PM_IN_NODE: {
|
|
1042
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1043
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_in_node_t *)node)->pattern, buffer);
|
|
1044
|
-
if (((pm_in_node_t *)node)->statements == NULL) {
|
|
1045
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1046
|
-
} else {
|
|
1047
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_in_node_t *)node)->statements, buffer);
|
|
1048
|
-
}
|
|
1049
|
-
pm_serialize_location(&((pm_in_node_t *)node)->in_keyword_loc, buffer);
|
|
1050
|
-
if (((pm_in_node_t *)node)->then_keyword_loc.length == 0) {
|
|
1051
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1052
|
-
} else {
|
|
1053
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1054
|
-
pm_serialize_location(&((pm_in_node_t *)node)->then_keyword_loc, buffer);
|
|
1055
|
-
}
|
|
1056
|
-
break;
|
|
1057
|
-
}
|
|
1058
|
-
case PM_INDEX_AND_WRITE_NODE: {
|
|
1059
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1060
|
-
if (((pm_index_and_write_node_t *)node)->receiver == NULL) {
|
|
1061
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1062
|
-
} else {
|
|
1063
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_index_and_write_node_t *)node)->receiver, buffer);
|
|
1064
|
-
}
|
|
1065
|
-
if (((pm_index_and_write_node_t *)node)->call_operator_loc.length == 0) {
|
|
1066
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1067
|
-
} else {
|
|
1068
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1069
|
-
pm_serialize_location(&((pm_index_and_write_node_t *)node)->call_operator_loc, buffer);
|
|
1070
|
-
}
|
|
1071
|
-
pm_serialize_location(&((pm_index_and_write_node_t *)node)->opening_loc, buffer);
|
|
1072
|
-
if (((pm_index_and_write_node_t *)node)->arguments == NULL) {
|
|
1073
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1074
|
-
} else {
|
|
1075
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_index_and_write_node_t *)node)->arguments, buffer);
|
|
1076
|
-
}
|
|
1077
|
-
pm_serialize_location(&((pm_index_and_write_node_t *)node)->closing_loc, buffer);
|
|
1078
|
-
if (((pm_index_and_write_node_t *)node)->block == NULL) {
|
|
1079
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1080
|
-
} else {
|
|
1081
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_index_and_write_node_t *)node)->block, buffer);
|
|
1082
|
-
}
|
|
1083
|
-
pm_serialize_location(&((pm_index_and_write_node_t *)node)->operator_loc, buffer);
|
|
1084
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_index_and_write_node_t *)node)->value, buffer);
|
|
1085
|
-
break;
|
|
1086
|
-
}
|
|
1087
|
-
case PM_INDEX_OPERATOR_WRITE_NODE: {
|
|
1088
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1089
|
-
if (((pm_index_operator_write_node_t *)node)->receiver == NULL) {
|
|
1090
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1091
|
-
} else {
|
|
1092
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_index_operator_write_node_t *)node)->receiver, buffer);
|
|
1093
|
-
}
|
|
1094
|
-
if (((pm_index_operator_write_node_t *)node)->call_operator_loc.length == 0) {
|
|
1095
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1096
|
-
} else {
|
|
1097
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1098
|
-
pm_serialize_location(&((pm_index_operator_write_node_t *)node)->call_operator_loc, buffer);
|
|
1099
|
-
}
|
|
1100
|
-
pm_serialize_location(&((pm_index_operator_write_node_t *)node)->opening_loc, buffer);
|
|
1101
|
-
if (((pm_index_operator_write_node_t *)node)->arguments == NULL) {
|
|
1102
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1103
|
-
} else {
|
|
1104
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_index_operator_write_node_t *)node)->arguments, buffer);
|
|
1105
|
-
}
|
|
1106
|
-
pm_serialize_location(&((pm_index_operator_write_node_t *)node)->closing_loc, buffer);
|
|
1107
|
-
if (((pm_index_operator_write_node_t *)node)->block == NULL) {
|
|
1108
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1109
|
-
} else {
|
|
1110
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_index_operator_write_node_t *)node)->block, buffer);
|
|
1111
|
-
}
|
|
1112
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_index_operator_write_node_t *)node)->binary_operator));
|
|
1113
|
-
pm_serialize_location(&((pm_index_operator_write_node_t *)node)->binary_operator_loc, buffer);
|
|
1114
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_index_operator_write_node_t *)node)->value, buffer);
|
|
1115
|
-
break;
|
|
1116
|
-
}
|
|
1117
|
-
case PM_INDEX_OR_WRITE_NODE: {
|
|
1118
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1119
|
-
if (((pm_index_or_write_node_t *)node)->receiver == NULL) {
|
|
1120
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1121
|
-
} else {
|
|
1122
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_index_or_write_node_t *)node)->receiver, buffer);
|
|
1123
|
-
}
|
|
1124
|
-
if (((pm_index_or_write_node_t *)node)->call_operator_loc.length == 0) {
|
|
1125
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1126
|
-
} else {
|
|
1127
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1128
|
-
pm_serialize_location(&((pm_index_or_write_node_t *)node)->call_operator_loc, buffer);
|
|
1129
|
-
}
|
|
1130
|
-
pm_serialize_location(&((pm_index_or_write_node_t *)node)->opening_loc, buffer);
|
|
1131
|
-
if (((pm_index_or_write_node_t *)node)->arguments == NULL) {
|
|
1132
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1133
|
-
} else {
|
|
1134
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_index_or_write_node_t *)node)->arguments, buffer);
|
|
1135
|
-
}
|
|
1136
|
-
pm_serialize_location(&((pm_index_or_write_node_t *)node)->closing_loc, buffer);
|
|
1137
|
-
if (((pm_index_or_write_node_t *)node)->block == NULL) {
|
|
1138
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1139
|
-
} else {
|
|
1140
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_index_or_write_node_t *)node)->block, buffer);
|
|
1141
|
-
}
|
|
1142
|
-
pm_serialize_location(&((pm_index_or_write_node_t *)node)->operator_loc, buffer);
|
|
1143
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_index_or_write_node_t *)node)->value, buffer);
|
|
1144
|
-
break;
|
|
1145
|
-
}
|
|
1146
|
-
case PM_INDEX_TARGET_NODE: {
|
|
1147
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1148
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_index_target_node_t *)node)->receiver, buffer);
|
|
1149
|
-
pm_serialize_location(&((pm_index_target_node_t *)node)->opening_loc, buffer);
|
|
1150
|
-
if (((pm_index_target_node_t *)node)->arguments == NULL) {
|
|
1151
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1152
|
-
} else {
|
|
1153
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_index_target_node_t *)node)->arguments, buffer);
|
|
1154
|
-
}
|
|
1155
|
-
pm_serialize_location(&((pm_index_target_node_t *)node)->closing_loc, buffer);
|
|
1156
|
-
if (((pm_index_target_node_t *)node)->block == NULL) {
|
|
1157
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1158
|
-
} else {
|
|
1159
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_index_target_node_t *)node)->block, buffer);
|
|
1160
|
-
}
|
|
1161
|
-
break;
|
|
1162
|
-
}
|
|
1163
|
-
case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
|
|
1164
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1165
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_and_write_node_t *)node)->name));
|
|
1166
|
-
pm_serialize_location(&((pm_instance_variable_and_write_node_t *)node)->name_loc, buffer);
|
|
1167
|
-
pm_serialize_location(&((pm_instance_variable_and_write_node_t *)node)->operator_loc, buffer);
|
|
1168
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_instance_variable_and_write_node_t *)node)->value, buffer);
|
|
1169
|
-
break;
|
|
1170
|
-
}
|
|
1171
|
-
case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
1172
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1173
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_operator_write_node_t *)node)->name));
|
|
1174
|
-
pm_serialize_location(&((pm_instance_variable_operator_write_node_t *)node)->name_loc, buffer);
|
|
1175
|
-
pm_serialize_location(&((pm_instance_variable_operator_write_node_t *)node)->binary_operator_loc, buffer);
|
|
1176
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_instance_variable_operator_write_node_t *)node)->value, buffer);
|
|
1177
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_operator_write_node_t *)node)->binary_operator));
|
|
1178
|
-
break;
|
|
1179
|
-
}
|
|
1180
|
-
case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
|
|
1181
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1182
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_or_write_node_t *)node)->name));
|
|
1183
|
-
pm_serialize_location(&((pm_instance_variable_or_write_node_t *)node)->name_loc, buffer);
|
|
1184
|
-
pm_serialize_location(&((pm_instance_variable_or_write_node_t *)node)->operator_loc, buffer);
|
|
1185
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_instance_variable_or_write_node_t *)node)->value, buffer);
|
|
1186
|
-
break;
|
|
1187
|
-
}
|
|
1188
|
-
case PM_INSTANCE_VARIABLE_READ_NODE: {
|
|
1189
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1190
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_read_node_t *)node)->name));
|
|
1191
|
-
break;
|
|
1192
|
-
}
|
|
1193
|
-
case PM_INSTANCE_VARIABLE_TARGET_NODE: {
|
|
1194
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1195
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_target_node_t *)node)->name));
|
|
1196
|
-
break;
|
|
1197
|
-
}
|
|
1198
|
-
case PM_INSTANCE_VARIABLE_WRITE_NODE: {
|
|
1199
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1200
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_instance_variable_write_node_t *)node)->name));
|
|
1201
|
-
pm_serialize_location(&((pm_instance_variable_write_node_t *)node)->name_loc, buffer);
|
|
1202
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_instance_variable_write_node_t *)node)->value, buffer);
|
|
1203
|
-
pm_serialize_location(&((pm_instance_variable_write_node_t *)node)->operator_loc, buffer);
|
|
1204
|
-
break;
|
|
1205
|
-
}
|
|
1206
|
-
case PM_INTEGER_NODE: {
|
|
1207
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1208
|
-
pm_serialize_integer(&((pm_integer_node_t *)node)->value, buffer);
|
|
1209
|
-
break;
|
|
1210
|
-
}
|
|
1211
|
-
case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
|
|
1212
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1213
|
-
pm_serialize_location(&((pm_interpolated_match_last_line_node_t *)node)->opening_loc, buffer);
|
|
1214
|
-
uint32_t parts_size = pm_sizet_to_u32(((pm_interpolated_match_last_line_node_t *)node)->parts.size);
|
|
1215
|
-
pm_buffer_append_varuint(buffer, parts_size);
|
|
1216
|
-
for (uint32_t index = 0; index < parts_size; index++) {
|
|
1217
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_interpolated_match_last_line_node_t *)node)->parts.nodes[index], buffer);
|
|
1218
|
-
}
|
|
1219
|
-
pm_serialize_location(&((pm_interpolated_match_last_line_node_t *)node)->closing_loc, buffer);
|
|
1220
|
-
break;
|
|
1221
|
-
}
|
|
1222
|
-
case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
|
|
1223
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1224
|
-
pm_serialize_location(&((pm_interpolated_regular_expression_node_t *)node)->opening_loc, buffer);
|
|
1225
|
-
uint32_t parts_size = pm_sizet_to_u32(((pm_interpolated_regular_expression_node_t *)node)->parts.size);
|
|
1226
|
-
pm_buffer_append_varuint(buffer, parts_size);
|
|
1227
|
-
for (uint32_t index = 0; index < parts_size; index++) {
|
|
1228
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_interpolated_regular_expression_node_t *)node)->parts.nodes[index], buffer);
|
|
1229
|
-
}
|
|
1230
|
-
pm_serialize_location(&((pm_interpolated_regular_expression_node_t *)node)->closing_loc, buffer);
|
|
1231
|
-
break;
|
|
1232
|
-
}
|
|
1233
|
-
case PM_INTERPOLATED_STRING_NODE: {
|
|
1234
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1235
|
-
if (((pm_interpolated_string_node_t *)node)->opening_loc.length == 0) {
|
|
1236
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1237
|
-
} else {
|
|
1238
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1239
|
-
pm_serialize_location(&((pm_interpolated_string_node_t *)node)->opening_loc, buffer);
|
|
1240
|
-
}
|
|
1241
|
-
uint32_t parts_size = pm_sizet_to_u32(((pm_interpolated_string_node_t *)node)->parts.size);
|
|
1242
|
-
pm_buffer_append_varuint(buffer, parts_size);
|
|
1243
|
-
for (uint32_t index = 0; index < parts_size; index++) {
|
|
1244
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_interpolated_string_node_t *)node)->parts.nodes[index], buffer);
|
|
1245
|
-
}
|
|
1246
|
-
if (((pm_interpolated_string_node_t *)node)->closing_loc.length == 0) {
|
|
1247
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1248
|
-
} else {
|
|
1249
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1250
|
-
pm_serialize_location(&((pm_interpolated_string_node_t *)node)->closing_loc, buffer);
|
|
1251
|
-
}
|
|
1252
|
-
break;
|
|
1253
|
-
}
|
|
1254
|
-
case PM_INTERPOLATED_SYMBOL_NODE: {
|
|
1255
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1256
|
-
if (((pm_interpolated_symbol_node_t *)node)->opening_loc.length == 0) {
|
|
1257
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1258
|
-
} else {
|
|
1259
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1260
|
-
pm_serialize_location(&((pm_interpolated_symbol_node_t *)node)->opening_loc, buffer);
|
|
1261
|
-
}
|
|
1262
|
-
uint32_t parts_size = pm_sizet_to_u32(((pm_interpolated_symbol_node_t *)node)->parts.size);
|
|
1263
|
-
pm_buffer_append_varuint(buffer, parts_size);
|
|
1264
|
-
for (uint32_t index = 0; index < parts_size; index++) {
|
|
1265
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_interpolated_symbol_node_t *)node)->parts.nodes[index], buffer);
|
|
1266
|
-
}
|
|
1267
|
-
if (((pm_interpolated_symbol_node_t *)node)->closing_loc.length == 0) {
|
|
1268
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1269
|
-
} else {
|
|
1270
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1271
|
-
pm_serialize_location(&((pm_interpolated_symbol_node_t *)node)->closing_loc, buffer);
|
|
1272
|
-
}
|
|
1273
|
-
break;
|
|
1274
|
-
}
|
|
1275
|
-
case PM_INTERPOLATED_X_STRING_NODE: {
|
|
1276
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1277
|
-
pm_serialize_location(&((pm_interpolated_x_string_node_t *)node)->opening_loc, buffer);
|
|
1278
|
-
uint32_t parts_size = pm_sizet_to_u32(((pm_interpolated_x_string_node_t *)node)->parts.size);
|
|
1279
|
-
pm_buffer_append_varuint(buffer, parts_size);
|
|
1280
|
-
for (uint32_t index = 0; index < parts_size; index++) {
|
|
1281
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_interpolated_x_string_node_t *)node)->parts.nodes[index], buffer);
|
|
1282
|
-
}
|
|
1283
|
-
pm_serialize_location(&((pm_interpolated_x_string_node_t *)node)->closing_loc, buffer);
|
|
1284
|
-
break;
|
|
1285
|
-
}
|
|
1286
|
-
case PM_IT_LOCAL_VARIABLE_READ_NODE: {
|
|
1287
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1288
|
-
break;
|
|
1289
|
-
}
|
|
1290
|
-
case PM_IT_PARAMETERS_NODE: {
|
|
1291
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1292
|
-
break;
|
|
1293
|
-
}
|
|
1294
|
-
case PM_KEYWORD_HASH_NODE: {
|
|
1295
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1296
|
-
uint32_t elements_size = pm_sizet_to_u32(((pm_keyword_hash_node_t *)node)->elements.size);
|
|
1297
|
-
pm_buffer_append_varuint(buffer, elements_size);
|
|
1298
|
-
for (uint32_t index = 0; index < elements_size; index++) {
|
|
1299
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_keyword_hash_node_t *)node)->elements.nodes[index], buffer);
|
|
1300
|
-
}
|
|
1301
|
-
break;
|
|
1302
|
-
}
|
|
1303
|
-
case PM_KEYWORD_REST_PARAMETER_NODE: {
|
|
1304
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1305
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_keyword_rest_parameter_node_t *)node)->name));
|
|
1306
|
-
if (((pm_keyword_rest_parameter_node_t *)node)->name_loc.length == 0) {
|
|
1307
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1308
|
-
} else {
|
|
1309
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1310
|
-
pm_serialize_location(&((pm_keyword_rest_parameter_node_t *)node)->name_loc, buffer);
|
|
1311
|
-
}
|
|
1312
|
-
pm_serialize_location(&((pm_keyword_rest_parameter_node_t *)node)->operator_loc, buffer);
|
|
1313
|
-
break;
|
|
1314
|
-
}
|
|
1315
|
-
case PM_LAMBDA_NODE: {
|
|
1316
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1317
|
-
uint32_t locals_size = pm_sizet_to_u32(((pm_lambda_node_t *)node)->locals.size);
|
|
1318
|
-
pm_buffer_append_varuint(buffer, locals_size);
|
|
1319
|
-
for (uint32_t index = 0; index < locals_size; index++) {
|
|
1320
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_lambda_node_t *)node)->locals.ids[index]));
|
|
1321
|
-
}
|
|
1322
|
-
pm_serialize_location(&((pm_lambda_node_t *)node)->operator_loc, buffer);
|
|
1323
|
-
pm_serialize_location(&((pm_lambda_node_t *)node)->opening_loc, buffer);
|
|
1324
|
-
pm_serialize_location(&((pm_lambda_node_t *)node)->closing_loc, buffer);
|
|
1325
|
-
if (((pm_lambda_node_t *)node)->parameters == NULL) {
|
|
1326
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1327
|
-
} else {
|
|
1328
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_lambda_node_t *)node)->parameters, buffer);
|
|
1329
|
-
}
|
|
1330
|
-
if (((pm_lambda_node_t *)node)->body == NULL) {
|
|
1331
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1332
|
-
} else {
|
|
1333
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_lambda_node_t *)node)->body, buffer);
|
|
1334
|
-
}
|
|
1335
|
-
break;
|
|
1336
|
-
}
|
|
1337
|
-
case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
|
|
1338
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1339
|
-
pm_serialize_location(&((pm_local_variable_and_write_node_t *)node)->name_loc, buffer);
|
|
1340
|
-
pm_serialize_location(&((pm_local_variable_and_write_node_t *)node)->operator_loc, buffer);
|
|
1341
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_local_variable_and_write_node_t *)node)->value, buffer);
|
|
1342
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_and_write_node_t *)node)->name));
|
|
1343
|
-
pm_buffer_append_varuint(buffer, ((pm_local_variable_and_write_node_t *)node)->depth);
|
|
1344
|
-
break;
|
|
1345
|
-
}
|
|
1346
|
-
case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
1347
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1348
|
-
pm_serialize_location(&((pm_local_variable_operator_write_node_t *)node)->name_loc, buffer);
|
|
1349
|
-
pm_serialize_location(&((pm_local_variable_operator_write_node_t *)node)->binary_operator_loc, buffer);
|
|
1350
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_local_variable_operator_write_node_t *)node)->value, buffer);
|
|
1351
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_operator_write_node_t *)node)->name));
|
|
1352
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_operator_write_node_t *)node)->binary_operator));
|
|
1353
|
-
pm_buffer_append_varuint(buffer, ((pm_local_variable_operator_write_node_t *)node)->depth);
|
|
1354
|
-
break;
|
|
1355
|
-
}
|
|
1356
|
-
case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
|
|
1357
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1358
|
-
pm_serialize_location(&((pm_local_variable_or_write_node_t *)node)->name_loc, buffer);
|
|
1359
|
-
pm_serialize_location(&((pm_local_variable_or_write_node_t *)node)->operator_loc, buffer);
|
|
1360
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_local_variable_or_write_node_t *)node)->value, buffer);
|
|
1361
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_or_write_node_t *)node)->name));
|
|
1362
|
-
pm_buffer_append_varuint(buffer, ((pm_local_variable_or_write_node_t *)node)->depth);
|
|
1363
|
-
break;
|
|
1364
|
-
}
|
|
1365
|
-
case PM_LOCAL_VARIABLE_READ_NODE: {
|
|
1366
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1367
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_read_node_t *)node)->name));
|
|
1368
|
-
pm_buffer_append_varuint(buffer, ((pm_local_variable_read_node_t *)node)->depth);
|
|
1369
|
-
break;
|
|
1370
|
-
}
|
|
1371
|
-
case PM_LOCAL_VARIABLE_TARGET_NODE: {
|
|
1372
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1373
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_target_node_t *)node)->name));
|
|
1374
|
-
pm_buffer_append_varuint(buffer, ((pm_local_variable_target_node_t *)node)->depth);
|
|
1375
|
-
break;
|
|
1376
|
-
}
|
|
1377
|
-
case PM_LOCAL_VARIABLE_WRITE_NODE: {
|
|
1378
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1379
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_local_variable_write_node_t *)node)->name));
|
|
1380
|
-
pm_buffer_append_varuint(buffer, ((pm_local_variable_write_node_t *)node)->depth);
|
|
1381
|
-
pm_serialize_location(&((pm_local_variable_write_node_t *)node)->name_loc, buffer);
|
|
1382
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_local_variable_write_node_t *)node)->value, buffer);
|
|
1383
|
-
pm_serialize_location(&((pm_local_variable_write_node_t *)node)->operator_loc, buffer);
|
|
1384
|
-
break;
|
|
1385
|
-
}
|
|
1386
|
-
case PM_MATCH_LAST_LINE_NODE: {
|
|
1387
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1388
|
-
pm_serialize_location(&((pm_match_last_line_node_t *)node)->opening_loc, buffer);
|
|
1389
|
-
pm_serialize_location(&((pm_match_last_line_node_t *)node)->content_loc, buffer);
|
|
1390
|
-
pm_serialize_location(&((pm_match_last_line_node_t *)node)->closing_loc, buffer);
|
|
1391
|
-
pm_serialize_string(&((pm_match_last_line_node_t *)node)->unescaped, buffer);
|
|
1392
|
-
break;
|
|
1393
|
-
}
|
|
1394
|
-
case PM_MATCH_PREDICATE_NODE: {
|
|
1395
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1396
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_match_predicate_node_t *)node)->value, buffer);
|
|
1397
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_match_predicate_node_t *)node)->pattern, buffer);
|
|
1398
|
-
pm_serialize_location(&((pm_match_predicate_node_t *)node)->keyword_loc, buffer);
|
|
1399
|
-
break;
|
|
1400
|
-
}
|
|
1401
|
-
case PM_MATCH_REQUIRED_NODE: {
|
|
1402
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1403
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_match_required_node_t *)node)->value, buffer);
|
|
1404
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_match_required_node_t *)node)->pattern, buffer);
|
|
1405
|
-
pm_serialize_location(&((pm_match_required_node_t *)node)->operator_loc, buffer);
|
|
1406
|
-
break;
|
|
1407
|
-
}
|
|
1408
|
-
case PM_MATCH_WRITE_NODE: {
|
|
1409
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1410
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_match_write_node_t *)node)->call, buffer);
|
|
1411
|
-
uint32_t targets_size = pm_sizet_to_u32(((pm_match_write_node_t *)node)->targets.size);
|
|
1412
|
-
pm_buffer_append_varuint(buffer, targets_size);
|
|
1413
|
-
for (uint32_t index = 0; index < targets_size; index++) {
|
|
1414
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_match_write_node_t *)node)->targets.nodes[index], buffer);
|
|
1415
|
-
}
|
|
1416
|
-
break;
|
|
1417
|
-
}
|
|
1418
|
-
case PM_MODULE_NODE: {
|
|
1419
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1420
|
-
uint32_t locals_size = pm_sizet_to_u32(((pm_module_node_t *)node)->locals.size);
|
|
1421
|
-
pm_buffer_append_varuint(buffer, locals_size);
|
|
1422
|
-
for (uint32_t index = 0; index < locals_size; index++) {
|
|
1423
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_module_node_t *)node)->locals.ids[index]));
|
|
1424
|
-
}
|
|
1425
|
-
pm_serialize_location(&((pm_module_node_t *)node)->module_keyword_loc, buffer);
|
|
1426
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_module_node_t *)node)->constant_path, buffer);
|
|
1427
|
-
if (((pm_module_node_t *)node)->body == NULL) {
|
|
1428
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1429
|
-
} else {
|
|
1430
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_module_node_t *)node)->body, buffer);
|
|
1431
|
-
}
|
|
1432
|
-
pm_serialize_location(&((pm_module_node_t *)node)->end_keyword_loc, buffer);
|
|
1433
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_module_node_t *)node)->name));
|
|
1434
|
-
break;
|
|
1435
|
-
}
|
|
1436
|
-
case PM_MULTI_TARGET_NODE: {
|
|
1437
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1438
|
-
uint32_t lefts_size = pm_sizet_to_u32(((pm_multi_target_node_t *)node)->lefts.size);
|
|
1439
|
-
pm_buffer_append_varuint(buffer, lefts_size);
|
|
1440
|
-
for (uint32_t index = 0; index < lefts_size; index++) {
|
|
1441
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_multi_target_node_t *)node)->lefts.nodes[index], buffer);
|
|
1442
|
-
}
|
|
1443
|
-
if (((pm_multi_target_node_t *)node)->rest == NULL) {
|
|
1444
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1445
|
-
} else {
|
|
1446
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_multi_target_node_t *)node)->rest, buffer);
|
|
1447
|
-
}
|
|
1448
|
-
uint32_t rights_size = pm_sizet_to_u32(((pm_multi_target_node_t *)node)->rights.size);
|
|
1449
|
-
pm_buffer_append_varuint(buffer, rights_size);
|
|
1450
|
-
for (uint32_t index = 0; index < rights_size; index++) {
|
|
1451
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_multi_target_node_t *)node)->rights.nodes[index], buffer);
|
|
1452
|
-
}
|
|
1453
|
-
if (((pm_multi_target_node_t *)node)->lparen_loc.length == 0) {
|
|
1454
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1455
|
-
} else {
|
|
1456
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1457
|
-
pm_serialize_location(&((pm_multi_target_node_t *)node)->lparen_loc, buffer);
|
|
1458
|
-
}
|
|
1459
|
-
if (((pm_multi_target_node_t *)node)->rparen_loc.length == 0) {
|
|
1460
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1461
|
-
} else {
|
|
1462
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1463
|
-
pm_serialize_location(&((pm_multi_target_node_t *)node)->rparen_loc, buffer);
|
|
1464
|
-
}
|
|
1465
|
-
break;
|
|
1466
|
-
}
|
|
1467
|
-
case PM_MULTI_WRITE_NODE: {
|
|
1468
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1469
|
-
uint32_t lefts_size = pm_sizet_to_u32(((pm_multi_write_node_t *)node)->lefts.size);
|
|
1470
|
-
pm_buffer_append_varuint(buffer, lefts_size);
|
|
1471
|
-
for (uint32_t index = 0; index < lefts_size; index++) {
|
|
1472
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_multi_write_node_t *)node)->lefts.nodes[index], buffer);
|
|
1473
|
-
}
|
|
1474
|
-
if (((pm_multi_write_node_t *)node)->rest == NULL) {
|
|
1475
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1476
|
-
} else {
|
|
1477
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_multi_write_node_t *)node)->rest, buffer);
|
|
1478
|
-
}
|
|
1479
|
-
uint32_t rights_size = pm_sizet_to_u32(((pm_multi_write_node_t *)node)->rights.size);
|
|
1480
|
-
pm_buffer_append_varuint(buffer, rights_size);
|
|
1481
|
-
for (uint32_t index = 0; index < rights_size; index++) {
|
|
1482
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_multi_write_node_t *)node)->rights.nodes[index], buffer);
|
|
1483
|
-
}
|
|
1484
|
-
if (((pm_multi_write_node_t *)node)->lparen_loc.length == 0) {
|
|
1485
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1486
|
-
} else {
|
|
1487
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1488
|
-
pm_serialize_location(&((pm_multi_write_node_t *)node)->lparen_loc, buffer);
|
|
1489
|
-
}
|
|
1490
|
-
if (((pm_multi_write_node_t *)node)->rparen_loc.length == 0) {
|
|
1491
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1492
|
-
} else {
|
|
1493
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1494
|
-
pm_serialize_location(&((pm_multi_write_node_t *)node)->rparen_loc, buffer);
|
|
1495
|
-
}
|
|
1496
|
-
pm_serialize_location(&((pm_multi_write_node_t *)node)->operator_loc, buffer);
|
|
1497
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_multi_write_node_t *)node)->value, buffer);
|
|
1498
|
-
break;
|
|
1499
|
-
}
|
|
1500
|
-
case PM_NEXT_NODE: {
|
|
1501
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1502
|
-
if (((pm_next_node_t *)node)->arguments == NULL) {
|
|
1503
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1504
|
-
} else {
|
|
1505
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_next_node_t *)node)->arguments, buffer);
|
|
1506
|
-
}
|
|
1507
|
-
pm_serialize_location(&((pm_next_node_t *)node)->keyword_loc, buffer);
|
|
1508
|
-
break;
|
|
1509
|
-
}
|
|
1510
|
-
case PM_NIL_NODE: {
|
|
1511
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1512
|
-
break;
|
|
1513
|
-
}
|
|
1514
|
-
case PM_NO_BLOCK_PARAMETER_NODE: {
|
|
1515
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1516
|
-
pm_serialize_location(&((pm_no_block_parameter_node_t *)node)->operator_loc, buffer);
|
|
1517
|
-
pm_serialize_location(&((pm_no_block_parameter_node_t *)node)->keyword_loc, buffer);
|
|
1518
|
-
break;
|
|
1519
|
-
}
|
|
1520
|
-
case PM_NO_KEYWORDS_PARAMETER_NODE: {
|
|
1521
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1522
|
-
pm_serialize_location(&((pm_no_keywords_parameter_node_t *)node)->operator_loc, buffer);
|
|
1523
|
-
pm_serialize_location(&((pm_no_keywords_parameter_node_t *)node)->keyword_loc, buffer);
|
|
1524
|
-
break;
|
|
1525
|
-
}
|
|
1526
|
-
case PM_NUMBERED_PARAMETERS_NODE: {
|
|
1527
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1528
|
-
pm_buffer_append_byte(buffer, ((pm_numbered_parameters_node_t *)node)->maximum);
|
|
1529
|
-
break;
|
|
1530
|
-
}
|
|
1531
|
-
case PM_NUMBERED_REFERENCE_READ_NODE: {
|
|
1532
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1533
|
-
pm_buffer_append_varuint(buffer, ((pm_numbered_reference_read_node_t *)node)->number);
|
|
1534
|
-
break;
|
|
1535
|
-
}
|
|
1536
|
-
case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
|
|
1537
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1538
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_optional_keyword_parameter_node_t *)node)->name));
|
|
1539
|
-
pm_serialize_location(&((pm_optional_keyword_parameter_node_t *)node)->name_loc, buffer);
|
|
1540
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_optional_keyword_parameter_node_t *)node)->value, buffer);
|
|
1541
|
-
break;
|
|
1542
|
-
}
|
|
1543
|
-
case PM_OPTIONAL_PARAMETER_NODE: {
|
|
1544
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1545
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_optional_parameter_node_t *)node)->name));
|
|
1546
|
-
pm_serialize_location(&((pm_optional_parameter_node_t *)node)->name_loc, buffer);
|
|
1547
|
-
pm_serialize_location(&((pm_optional_parameter_node_t *)node)->operator_loc, buffer);
|
|
1548
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_optional_parameter_node_t *)node)->value, buffer);
|
|
1549
|
-
break;
|
|
1550
|
-
}
|
|
1551
|
-
case PM_OR_NODE: {
|
|
1552
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1553
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_or_node_t *)node)->left, buffer);
|
|
1554
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_or_node_t *)node)->right, buffer);
|
|
1555
|
-
pm_serialize_location(&((pm_or_node_t *)node)->operator_loc, buffer);
|
|
1556
|
-
break;
|
|
1557
|
-
}
|
|
1558
|
-
case PM_PARAMETERS_NODE: {
|
|
1559
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1560
|
-
uint32_t requireds_size = pm_sizet_to_u32(((pm_parameters_node_t *)node)->requireds.size);
|
|
1561
|
-
pm_buffer_append_varuint(buffer, requireds_size);
|
|
1562
|
-
for (uint32_t index = 0; index < requireds_size; index++) {
|
|
1563
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_parameters_node_t *)node)->requireds.nodes[index], buffer);
|
|
1564
|
-
}
|
|
1565
|
-
uint32_t optionals_size = pm_sizet_to_u32(((pm_parameters_node_t *)node)->optionals.size);
|
|
1566
|
-
pm_buffer_append_varuint(buffer, optionals_size);
|
|
1567
|
-
for (uint32_t index = 0; index < optionals_size; index++) {
|
|
1568
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_parameters_node_t *)node)->optionals.nodes[index], buffer);
|
|
1569
|
-
}
|
|
1570
|
-
if (((pm_parameters_node_t *)node)->rest == NULL) {
|
|
1571
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1572
|
-
} else {
|
|
1573
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_parameters_node_t *)node)->rest, buffer);
|
|
1574
|
-
}
|
|
1575
|
-
uint32_t posts_size = pm_sizet_to_u32(((pm_parameters_node_t *)node)->posts.size);
|
|
1576
|
-
pm_buffer_append_varuint(buffer, posts_size);
|
|
1577
|
-
for (uint32_t index = 0; index < posts_size; index++) {
|
|
1578
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_parameters_node_t *)node)->posts.nodes[index], buffer);
|
|
1579
|
-
}
|
|
1580
|
-
uint32_t keywords_size = pm_sizet_to_u32(((pm_parameters_node_t *)node)->keywords.size);
|
|
1581
|
-
pm_buffer_append_varuint(buffer, keywords_size);
|
|
1582
|
-
for (uint32_t index = 0; index < keywords_size; index++) {
|
|
1583
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_parameters_node_t *)node)->keywords.nodes[index], buffer);
|
|
1584
|
-
}
|
|
1585
|
-
if (((pm_parameters_node_t *)node)->keyword_rest == NULL) {
|
|
1586
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1587
|
-
} else {
|
|
1588
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_parameters_node_t *)node)->keyword_rest, buffer);
|
|
1589
|
-
}
|
|
1590
|
-
if (((pm_parameters_node_t *)node)->block == NULL) {
|
|
1591
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1592
|
-
} else {
|
|
1593
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_parameters_node_t *)node)->block, buffer);
|
|
1594
|
-
}
|
|
1595
|
-
break;
|
|
1596
|
-
}
|
|
1597
|
-
case PM_PARENTHESES_NODE: {
|
|
1598
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1599
|
-
if (((pm_parentheses_node_t *)node)->body == NULL) {
|
|
1600
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1601
|
-
} else {
|
|
1602
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_parentheses_node_t *)node)->body, buffer);
|
|
1603
|
-
}
|
|
1604
|
-
pm_serialize_location(&((pm_parentheses_node_t *)node)->opening_loc, buffer);
|
|
1605
|
-
pm_serialize_location(&((pm_parentheses_node_t *)node)->closing_loc, buffer);
|
|
1606
|
-
break;
|
|
1607
|
-
}
|
|
1608
|
-
case PM_PINNED_EXPRESSION_NODE: {
|
|
1609
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1610
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_pinned_expression_node_t *)node)->expression, buffer);
|
|
1611
|
-
pm_serialize_location(&((pm_pinned_expression_node_t *)node)->operator_loc, buffer);
|
|
1612
|
-
pm_serialize_location(&((pm_pinned_expression_node_t *)node)->lparen_loc, buffer);
|
|
1613
|
-
pm_serialize_location(&((pm_pinned_expression_node_t *)node)->rparen_loc, buffer);
|
|
1614
|
-
break;
|
|
1615
|
-
}
|
|
1616
|
-
case PM_PINNED_VARIABLE_NODE: {
|
|
1617
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1618
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_pinned_variable_node_t *)node)->variable, buffer);
|
|
1619
|
-
pm_serialize_location(&((pm_pinned_variable_node_t *)node)->operator_loc, buffer);
|
|
1620
|
-
break;
|
|
1621
|
-
}
|
|
1622
|
-
case PM_POST_EXECUTION_NODE: {
|
|
1623
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1624
|
-
if (((pm_post_execution_node_t *)node)->statements == NULL) {
|
|
1625
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1626
|
-
} else {
|
|
1627
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_post_execution_node_t *)node)->statements, buffer);
|
|
1628
|
-
}
|
|
1629
|
-
pm_serialize_location(&((pm_post_execution_node_t *)node)->keyword_loc, buffer);
|
|
1630
|
-
pm_serialize_location(&((pm_post_execution_node_t *)node)->opening_loc, buffer);
|
|
1631
|
-
pm_serialize_location(&((pm_post_execution_node_t *)node)->closing_loc, buffer);
|
|
1632
|
-
break;
|
|
1633
|
-
}
|
|
1634
|
-
case PM_PRE_EXECUTION_NODE: {
|
|
1635
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1636
|
-
if (((pm_pre_execution_node_t *)node)->statements == NULL) {
|
|
1637
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1638
|
-
} else {
|
|
1639
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_pre_execution_node_t *)node)->statements, buffer);
|
|
1640
|
-
}
|
|
1641
|
-
pm_serialize_location(&((pm_pre_execution_node_t *)node)->keyword_loc, buffer);
|
|
1642
|
-
pm_serialize_location(&((pm_pre_execution_node_t *)node)->opening_loc, buffer);
|
|
1643
|
-
pm_serialize_location(&((pm_pre_execution_node_t *)node)->closing_loc, buffer);
|
|
1644
|
-
break;
|
|
1645
|
-
}
|
|
1646
|
-
case PM_PROGRAM_NODE: {
|
|
1647
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1648
|
-
uint32_t locals_size = pm_sizet_to_u32(((pm_program_node_t *)node)->locals.size);
|
|
1649
|
-
pm_buffer_append_varuint(buffer, locals_size);
|
|
1650
|
-
for (uint32_t index = 0; index < locals_size; index++) {
|
|
1651
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_program_node_t *)node)->locals.ids[index]));
|
|
1652
|
-
}
|
|
1653
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_program_node_t *)node)->statements, buffer);
|
|
1654
|
-
break;
|
|
1655
|
-
}
|
|
1656
|
-
case PM_RANGE_NODE: {
|
|
1657
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1658
|
-
if (((pm_range_node_t *)node)->left == NULL) {
|
|
1659
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1660
|
-
} else {
|
|
1661
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_range_node_t *)node)->left, buffer);
|
|
1662
|
-
}
|
|
1663
|
-
if (((pm_range_node_t *)node)->right == NULL) {
|
|
1664
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1665
|
-
} else {
|
|
1666
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_range_node_t *)node)->right, buffer);
|
|
1667
|
-
}
|
|
1668
|
-
pm_serialize_location(&((pm_range_node_t *)node)->operator_loc, buffer);
|
|
1669
|
-
break;
|
|
1670
|
-
}
|
|
1671
|
-
case PM_RATIONAL_NODE: {
|
|
1672
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1673
|
-
pm_serialize_integer(&((pm_rational_node_t *)node)->numerator, buffer);
|
|
1674
|
-
pm_serialize_integer(&((pm_rational_node_t *)node)->denominator, buffer);
|
|
1675
|
-
break;
|
|
1676
|
-
}
|
|
1677
|
-
case PM_REDO_NODE: {
|
|
1678
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1679
|
-
break;
|
|
1680
|
-
}
|
|
1681
|
-
case PM_REGULAR_EXPRESSION_NODE: {
|
|
1682
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1683
|
-
pm_serialize_location(&((pm_regular_expression_node_t *)node)->opening_loc, buffer);
|
|
1684
|
-
pm_serialize_location(&((pm_regular_expression_node_t *)node)->content_loc, buffer);
|
|
1685
|
-
pm_serialize_location(&((pm_regular_expression_node_t *)node)->closing_loc, buffer);
|
|
1686
|
-
pm_serialize_string(&((pm_regular_expression_node_t *)node)->unescaped, buffer);
|
|
1687
|
-
break;
|
|
1688
|
-
}
|
|
1689
|
-
case PM_REQUIRED_KEYWORD_PARAMETER_NODE: {
|
|
1690
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1691
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_required_keyword_parameter_node_t *)node)->name));
|
|
1692
|
-
pm_serialize_location(&((pm_required_keyword_parameter_node_t *)node)->name_loc, buffer);
|
|
1693
|
-
break;
|
|
1694
|
-
}
|
|
1695
|
-
case PM_REQUIRED_PARAMETER_NODE: {
|
|
1696
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1697
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_required_parameter_node_t *)node)->name));
|
|
1698
|
-
break;
|
|
1699
|
-
}
|
|
1700
|
-
case PM_RESCUE_MODIFIER_NODE: {
|
|
1701
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1702
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_rescue_modifier_node_t *)node)->expression, buffer);
|
|
1703
|
-
pm_serialize_location(&((pm_rescue_modifier_node_t *)node)->keyword_loc, buffer);
|
|
1704
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_rescue_modifier_node_t *)node)->rescue_expression, buffer);
|
|
1705
|
-
break;
|
|
1706
|
-
}
|
|
1707
|
-
case PM_RESCUE_NODE: {
|
|
1708
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1709
|
-
pm_serialize_location(&((pm_rescue_node_t *)node)->keyword_loc, buffer);
|
|
1710
|
-
uint32_t exceptions_size = pm_sizet_to_u32(((pm_rescue_node_t *)node)->exceptions.size);
|
|
1711
|
-
pm_buffer_append_varuint(buffer, exceptions_size);
|
|
1712
|
-
for (uint32_t index = 0; index < exceptions_size; index++) {
|
|
1713
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_rescue_node_t *)node)->exceptions.nodes[index], buffer);
|
|
1714
|
-
}
|
|
1715
|
-
if (((pm_rescue_node_t *)node)->operator_loc.length == 0) {
|
|
1716
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1717
|
-
} else {
|
|
1718
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1719
|
-
pm_serialize_location(&((pm_rescue_node_t *)node)->operator_loc, buffer);
|
|
1720
|
-
}
|
|
1721
|
-
if (((pm_rescue_node_t *)node)->reference == NULL) {
|
|
1722
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1723
|
-
} else {
|
|
1724
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_rescue_node_t *)node)->reference, buffer);
|
|
1725
|
-
}
|
|
1726
|
-
if (((pm_rescue_node_t *)node)->then_keyword_loc.length == 0) {
|
|
1727
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1728
|
-
} else {
|
|
1729
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1730
|
-
pm_serialize_location(&((pm_rescue_node_t *)node)->then_keyword_loc, buffer);
|
|
1731
|
-
}
|
|
1732
|
-
if (((pm_rescue_node_t *)node)->statements == NULL) {
|
|
1733
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1734
|
-
} else {
|
|
1735
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_rescue_node_t *)node)->statements, buffer);
|
|
1736
|
-
}
|
|
1737
|
-
if (((pm_rescue_node_t *)node)->subsequent == NULL) {
|
|
1738
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1739
|
-
} else {
|
|
1740
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_rescue_node_t *)node)->subsequent, buffer);
|
|
1741
|
-
}
|
|
1742
|
-
break;
|
|
1743
|
-
}
|
|
1744
|
-
case PM_REST_PARAMETER_NODE: {
|
|
1745
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1746
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_rest_parameter_node_t *)node)->name));
|
|
1747
|
-
if (((pm_rest_parameter_node_t *)node)->name_loc.length == 0) {
|
|
1748
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1749
|
-
} else {
|
|
1750
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1751
|
-
pm_serialize_location(&((pm_rest_parameter_node_t *)node)->name_loc, buffer);
|
|
1752
|
-
}
|
|
1753
|
-
pm_serialize_location(&((pm_rest_parameter_node_t *)node)->operator_loc, buffer);
|
|
1754
|
-
break;
|
|
1755
|
-
}
|
|
1756
|
-
case PM_RETRY_NODE: {
|
|
1757
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1758
|
-
break;
|
|
1759
|
-
}
|
|
1760
|
-
case PM_RETURN_NODE: {
|
|
1761
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1762
|
-
pm_serialize_location(&((pm_return_node_t *)node)->keyword_loc, buffer);
|
|
1763
|
-
if (((pm_return_node_t *)node)->arguments == NULL) {
|
|
1764
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1765
|
-
} else {
|
|
1766
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_return_node_t *)node)->arguments, buffer);
|
|
1767
|
-
}
|
|
1768
|
-
break;
|
|
1769
|
-
}
|
|
1770
|
-
case PM_SELF_NODE: {
|
|
1771
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1772
|
-
break;
|
|
1773
|
-
}
|
|
1774
|
-
case PM_SHAREABLE_CONSTANT_NODE: {
|
|
1775
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1776
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_shareable_constant_node_t *)node)->write, buffer);
|
|
1777
|
-
break;
|
|
1778
|
-
}
|
|
1779
|
-
case PM_SINGLETON_CLASS_NODE: {
|
|
1780
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1781
|
-
uint32_t locals_size = pm_sizet_to_u32(((pm_singleton_class_node_t *)node)->locals.size);
|
|
1782
|
-
pm_buffer_append_varuint(buffer, locals_size);
|
|
1783
|
-
for (uint32_t index = 0; index < locals_size; index++) {
|
|
1784
|
-
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(((pm_singleton_class_node_t *)node)->locals.ids[index]));
|
|
1785
|
-
}
|
|
1786
|
-
pm_serialize_location(&((pm_singleton_class_node_t *)node)->class_keyword_loc, buffer);
|
|
1787
|
-
pm_serialize_location(&((pm_singleton_class_node_t *)node)->operator_loc, buffer);
|
|
1788
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_singleton_class_node_t *)node)->expression, buffer);
|
|
1789
|
-
if (((pm_singleton_class_node_t *)node)->body == NULL) {
|
|
1790
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1791
|
-
} else {
|
|
1792
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_singleton_class_node_t *)node)->body, buffer);
|
|
1793
|
-
}
|
|
1794
|
-
pm_serialize_location(&((pm_singleton_class_node_t *)node)->end_keyword_loc, buffer);
|
|
1795
|
-
break;
|
|
1796
|
-
}
|
|
1797
|
-
case PM_SOURCE_ENCODING_NODE: {
|
|
1798
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1799
|
-
break;
|
|
1800
|
-
}
|
|
1801
|
-
case PM_SOURCE_FILE_NODE: {
|
|
1802
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1803
|
-
pm_serialize_string(&((pm_source_file_node_t *)node)->filepath, buffer);
|
|
1804
|
-
break;
|
|
1805
|
-
}
|
|
1806
|
-
case PM_SOURCE_LINE_NODE: {
|
|
1807
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1808
|
-
break;
|
|
1809
|
-
}
|
|
1810
|
-
case PM_SPLAT_NODE: {
|
|
1811
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1812
|
-
pm_serialize_location(&((pm_splat_node_t *)node)->operator_loc, buffer);
|
|
1813
|
-
if (((pm_splat_node_t *)node)->expression == NULL) {
|
|
1814
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1815
|
-
} else {
|
|
1816
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_splat_node_t *)node)->expression, buffer);
|
|
1817
|
-
}
|
|
1818
|
-
break;
|
|
1819
|
-
}
|
|
1820
|
-
case PM_STATEMENTS_NODE: {
|
|
1821
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1822
|
-
uint32_t body_size = pm_sizet_to_u32(((pm_statements_node_t *)node)->body.size);
|
|
1823
|
-
pm_buffer_append_varuint(buffer, body_size);
|
|
1824
|
-
for (uint32_t index = 0; index < body_size; index++) {
|
|
1825
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_statements_node_t *)node)->body.nodes[index], buffer);
|
|
1826
|
-
}
|
|
1827
|
-
break;
|
|
1828
|
-
}
|
|
1829
|
-
case PM_STRING_NODE: {
|
|
1830
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1831
|
-
if (((pm_string_node_t *)node)->opening_loc.length == 0) {
|
|
1832
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1833
|
-
} else {
|
|
1834
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1835
|
-
pm_serialize_location(&((pm_string_node_t *)node)->opening_loc, buffer);
|
|
1836
|
-
}
|
|
1837
|
-
pm_serialize_location(&((pm_string_node_t *)node)->content_loc, buffer);
|
|
1838
|
-
if (((pm_string_node_t *)node)->closing_loc.length == 0) {
|
|
1839
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1840
|
-
} else {
|
|
1841
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1842
|
-
pm_serialize_location(&((pm_string_node_t *)node)->closing_loc, buffer);
|
|
1843
|
-
}
|
|
1844
|
-
pm_serialize_string(&((pm_string_node_t *)node)->unescaped, buffer);
|
|
1845
|
-
break;
|
|
1846
|
-
}
|
|
1847
|
-
case PM_SUPER_NODE: {
|
|
1848
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1849
|
-
pm_serialize_location(&((pm_super_node_t *)node)->keyword_loc, buffer);
|
|
1850
|
-
if (((pm_super_node_t *)node)->lparen_loc.length == 0) {
|
|
1851
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1852
|
-
} else {
|
|
1853
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1854
|
-
pm_serialize_location(&((pm_super_node_t *)node)->lparen_loc, buffer);
|
|
1855
|
-
}
|
|
1856
|
-
if (((pm_super_node_t *)node)->arguments == NULL) {
|
|
1857
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1858
|
-
} else {
|
|
1859
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_super_node_t *)node)->arguments, buffer);
|
|
1860
|
-
}
|
|
1861
|
-
if (((pm_super_node_t *)node)->rparen_loc.length == 0) {
|
|
1862
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1863
|
-
} else {
|
|
1864
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1865
|
-
pm_serialize_location(&((pm_super_node_t *)node)->rparen_loc, buffer);
|
|
1866
|
-
}
|
|
1867
|
-
if (((pm_super_node_t *)node)->block == NULL) {
|
|
1868
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1869
|
-
} else {
|
|
1870
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_super_node_t *)node)->block, buffer);
|
|
1871
|
-
}
|
|
1872
|
-
break;
|
|
1873
|
-
}
|
|
1874
|
-
case PM_SYMBOL_NODE: {
|
|
1875
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1876
|
-
if (((pm_symbol_node_t *)node)->opening_loc.length == 0) {
|
|
1877
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1878
|
-
} else {
|
|
1879
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1880
|
-
pm_serialize_location(&((pm_symbol_node_t *)node)->opening_loc, buffer);
|
|
1881
|
-
}
|
|
1882
|
-
pm_serialize_location(&((pm_symbol_node_t *)node)->content_loc, buffer);
|
|
1883
|
-
if (((pm_symbol_node_t *)node)->closing_loc.length == 0) {
|
|
1884
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1885
|
-
} else {
|
|
1886
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1887
|
-
pm_serialize_location(&((pm_symbol_node_t *)node)->closing_loc, buffer);
|
|
1888
|
-
}
|
|
1889
|
-
pm_serialize_string(&((pm_symbol_node_t *)node)->unescaped, buffer);
|
|
1890
|
-
break;
|
|
1891
|
-
}
|
|
1892
|
-
case PM_TRUE_NODE: {
|
|
1893
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1894
|
-
break;
|
|
1895
|
-
}
|
|
1896
|
-
case PM_UNDEF_NODE: {
|
|
1897
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1898
|
-
uint32_t names_size = pm_sizet_to_u32(((pm_undef_node_t *)node)->names.size);
|
|
1899
|
-
pm_buffer_append_varuint(buffer, names_size);
|
|
1900
|
-
for (uint32_t index = 0; index < names_size; index++) {
|
|
1901
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_undef_node_t *)node)->names.nodes[index], buffer);
|
|
1902
|
-
}
|
|
1903
|
-
pm_serialize_location(&((pm_undef_node_t *)node)->keyword_loc, buffer);
|
|
1904
|
-
break;
|
|
1905
|
-
}
|
|
1906
|
-
case PM_UNLESS_NODE: {
|
|
1907
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1908
|
-
pm_serialize_location(&((pm_unless_node_t *)node)->unless_keyword_loc, buffer);
|
|
1909
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_unless_node_t *)node)->predicate, buffer);
|
|
1910
|
-
if (((pm_unless_node_t *)node)->then_keyword_loc.length == 0) {
|
|
1911
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1912
|
-
} else {
|
|
1913
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1914
|
-
pm_serialize_location(&((pm_unless_node_t *)node)->then_keyword_loc, buffer);
|
|
1915
|
-
}
|
|
1916
|
-
if (((pm_unless_node_t *)node)->statements == NULL) {
|
|
1917
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1918
|
-
} else {
|
|
1919
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_unless_node_t *)node)->statements, buffer);
|
|
1920
|
-
}
|
|
1921
|
-
if (((pm_unless_node_t *)node)->else_clause == NULL) {
|
|
1922
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1923
|
-
} else {
|
|
1924
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_unless_node_t *)node)->else_clause, buffer);
|
|
1925
|
-
}
|
|
1926
|
-
if (((pm_unless_node_t *)node)->end_keyword_loc.length == 0) {
|
|
1927
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1928
|
-
} else {
|
|
1929
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1930
|
-
pm_serialize_location(&((pm_unless_node_t *)node)->end_keyword_loc, buffer);
|
|
1931
|
-
}
|
|
1932
|
-
break;
|
|
1933
|
-
}
|
|
1934
|
-
case PM_UNTIL_NODE: {
|
|
1935
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1936
|
-
pm_serialize_location(&((pm_until_node_t *)node)->until_keyword_loc, buffer);
|
|
1937
|
-
if (((pm_until_node_t *)node)->do_keyword_loc.length == 0) {
|
|
1938
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1939
|
-
} else {
|
|
1940
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1941
|
-
pm_serialize_location(&((pm_until_node_t *)node)->do_keyword_loc, buffer);
|
|
1942
|
-
}
|
|
1943
|
-
if (((pm_until_node_t *)node)->end_keyword_loc.length == 0) {
|
|
1944
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1945
|
-
} else {
|
|
1946
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1947
|
-
pm_serialize_location(&((pm_until_node_t *)node)->end_keyword_loc, buffer);
|
|
1948
|
-
}
|
|
1949
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_until_node_t *)node)->predicate, buffer);
|
|
1950
|
-
if (((pm_until_node_t *)node)->statements == NULL) {
|
|
1951
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1952
|
-
} else {
|
|
1953
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_until_node_t *)node)->statements, buffer);
|
|
1954
|
-
}
|
|
1955
|
-
break;
|
|
1956
|
-
}
|
|
1957
|
-
case PM_WHEN_NODE: {
|
|
1958
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1959
|
-
pm_serialize_location(&((pm_when_node_t *)node)->when_keyword_loc, buffer);
|
|
1960
|
-
uint32_t conditions_size = pm_sizet_to_u32(((pm_when_node_t *)node)->conditions.size);
|
|
1961
|
-
pm_buffer_append_varuint(buffer, conditions_size);
|
|
1962
|
-
for (uint32_t index = 0; index < conditions_size; index++) {
|
|
1963
|
-
pm_serialize_node(parser, (pm_node_t *) ((pm_when_node_t *)node)->conditions.nodes[index], buffer);
|
|
1964
|
-
}
|
|
1965
|
-
if (((pm_when_node_t *)node)->then_keyword_loc.length == 0) {
|
|
1966
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1967
|
-
} else {
|
|
1968
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1969
|
-
pm_serialize_location(&((pm_when_node_t *)node)->then_keyword_loc, buffer);
|
|
1970
|
-
}
|
|
1971
|
-
if (((pm_when_node_t *)node)->statements == NULL) {
|
|
1972
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1973
|
-
} else {
|
|
1974
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_when_node_t *)node)->statements, buffer);
|
|
1975
|
-
}
|
|
1976
|
-
break;
|
|
1977
|
-
}
|
|
1978
|
-
case PM_WHILE_NODE: {
|
|
1979
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1980
|
-
pm_serialize_location(&((pm_while_node_t *)node)->while_keyword_loc, buffer);
|
|
1981
|
-
if (((pm_while_node_t *)node)->do_keyword_loc.length == 0) {
|
|
1982
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1983
|
-
} else {
|
|
1984
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1985
|
-
pm_serialize_location(&((pm_while_node_t *)node)->do_keyword_loc, buffer);
|
|
1986
|
-
}
|
|
1987
|
-
if (((pm_while_node_t *)node)->end_keyword_loc.length == 0) {
|
|
1988
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1989
|
-
} else {
|
|
1990
|
-
pm_buffer_append_byte(buffer, 1);
|
|
1991
|
-
pm_serialize_location(&((pm_while_node_t *)node)->end_keyword_loc, buffer);
|
|
1992
|
-
}
|
|
1993
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_while_node_t *)node)->predicate, buffer);
|
|
1994
|
-
if (((pm_while_node_t *)node)->statements == NULL) {
|
|
1995
|
-
pm_buffer_append_byte(buffer, 0);
|
|
1996
|
-
} else {
|
|
1997
|
-
pm_serialize_node(parser, (pm_node_t *)((pm_while_node_t *)node)->statements, buffer);
|
|
1998
|
-
}
|
|
1999
|
-
break;
|
|
2000
|
-
}
|
|
2001
|
-
case PM_X_STRING_NODE: {
|
|
2002
|
-
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2003
|
-
pm_serialize_location(&((pm_x_string_node_t *)node)->opening_loc, buffer);
|
|
2004
|
-
pm_serialize_location(&((pm_x_string_node_t *)node)->content_loc, buffer);
|
|
2005
|
-
pm_serialize_location(&((pm_x_string_node_t *)node)->closing_loc, buffer);
|
|
2006
|
-
pm_serialize_string(&((pm_x_string_node_t *)node)->unescaped, buffer);
|
|
2007
|
-
break;
|
|
142
|
+
pm_serialize_stack_push(pm_serialize_stack_t *stack, pm_serialize_entry_kind_t kind, const pm_node_t *node, size_t offset) {
|
|
143
|
+
if (PRISM_UNLIKELY(stack->size == stack->capacity)) {
|
|
144
|
+
size_t capacity = stack->capacity == 0 ? 64 : stack->capacity * 2;
|
|
145
|
+
pm_serialize_entry_t *entries = (pm_serialize_entry_t *) xrealloc_sized(stack->entries, capacity * sizeof(pm_serialize_entry_t), stack->capacity * sizeof(pm_serialize_entry_t));
|
|
146
|
+
|
|
147
|
+
if (PRISM_UNLIKELY(entries == NULL)) {
|
|
148
|
+
fprintf(stderr, "prism: out of memory; aborting\n");
|
|
149
|
+
abort();
|
|
2008
150
|
}
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
151
|
+
|
|
152
|
+
stack->entries = entries;
|
|
153
|
+
stack->capacity = capacity;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
stack->entries[stack->size++] = (pm_serialize_entry_t) { .node = node, .offset = offset, .kind = kind, .visited = false };
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Serialize the tree rooted at the given node in post-order: the subtrees of a
|
|
161
|
+
* node's child fields are written in field order, followed by the node's own
|
|
162
|
+
* record. A loader can therefore build every node from a stack of already
|
|
163
|
+
* built children without recursing.
|
|
164
|
+
*
|
|
165
|
+
* The child subtrees of a node with a lazy field are preceded by the lazy
|
|
166
|
+
* marker, the byte length of the subtrees before the lazy field's subtree, and
|
|
167
|
+
* the byte length of the lazy field's subtree, so that a loader can skip it.
|
|
168
|
+
*/
|
|
169
|
+
static void
|
|
170
|
+
pm_serialize_node(pm_node_t *root, pm_buffer_t *buffer) {
|
|
171
|
+
pm_serialize_stack_t stack = { 0 };
|
|
172
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, root, 0);
|
|
173
|
+
|
|
174
|
+
while (stack.size > 0) {
|
|
175
|
+
pm_serialize_entry_t *entry = &stack.entries[--stack.size];
|
|
176
|
+
|
|
177
|
+
switch (entry->kind) {
|
|
178
|
+
case PM_SERIALIZE_ENTRY_LAZY_HEADER: {
|
|
179
|
+
pm_buffer_append_byte(buffer, 255);
|
|
180
|
+
stack.entries[entry->offset].offset = buffer->length;
|
|
181
|
+
pm_buffer_append_zeroes(buffer, 8);
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
case PM_SERIALIZE_ENTRY_LAZY_START: {
|
|
185
|
+
size_t offset = stack.entries[entry->offset].offset;
|
|
186
|
+
uint32_t skip = pm_sizet_to_u32(buffer->length - offset - 8);
|
|
187
|
+
memcpy(buffer->value + offset, &skip, sizeof(uint32_t));
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
case PM_SERIALIZE_ENTRY_LAZY_END: {
|
|
191
|
+
size_t offset = stack.entries[entry->offset].offset;
|
|
192
|
+
uint32_t skip;
|
|
193
|
+
memcpy(&skip, buffer->value + offset, sizeof(uint32_t));
|
|
194
|
+
|
|
195
|
+
uint32_t length = pm_sizet_to_u32(buffer->length - offset - 8 - skip);
|
|
196
|
+
memcpy(buffer->value + offset + 4, &length, sizeof(uint32_t));
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
case PM_SERIALIZE_ENTRY_NODE:
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
const pm_node_t *node = entry->node;
|
|
204
|
+
|
|
205
|
+
if (node == NULL) {
|
|
206
|
+
pm_buffer_append_byte(buffer, 0);
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
if (!entry->visited) {
|
|
211
|
+
/* Leave the node on the stack beneath its children, which are
|
|
212
|
+
* pushed in reverse field order so that they are popped, and
|
|
213
|
+
* therefore written, in field order. A node without children is
|
|
214
|
+
* written straight away instead. */
|
|
215
|
+
entry->visited = true;
|
|
216
|
+
size_t index = stack.size++;
|
|
217
|
+
|
|
218
|
+
switch (PM_NODE_TYPE(node)) {
|
|
219
|
+
case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
|
|
220
|
+
const pm_alias_global_variable_node_t *cast = (const pm_alias_global_variable_node_t *) node;
|
|
221
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->old_name, 0);
|
|
222
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->new_name, 0);
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
case PM_ALIAS_METHOD_NODE: {
|
|
226
|
+
const pm_alias_method_node_t *cast = (const pm_alias_method_node_t *) node;
|
|
227
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->old_name, 0);
|
|
228
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->new_name, 0);
|
|
229
|
+
break;
|
|
230
|
+
}
|
|
231
|
+
case PM_ALTERNATION_PATTERN_NODE: {
|
|
232
|
+
const pm_alternation_pattern_node_t *cast = (const pm_alternation_pattern_node_t *) node;
|
|
233
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->right, 0);
|
|
234
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->left, 0);
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
case PM_AND_NODE: {
|
|
238
|
+
const pm_and_node_t *cast = (const pm_and_node_t *) node;
|
|
239
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->right, 0);
|
|
240
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->left, 0);
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
case PM_ARGUMENTS_NODE: {
|
|
244
|
+
const pm_arguments_node_t *cast = (const pm_arguments_node_t *) node;
|
|
245
|
+
for (size_t list_index = cast->arguments.size; list_index > 0; list_index--) {
|
|
246
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->arguments.nodes[list_index - 1], 0);
|
|
247
|
+
}
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
250
|
+
case PM_ARRAY_NODE: {
|
|
251
|
+
const pm_array_node_t *cast = (const pm_array_node_t *) node;
|
|
252
|
+
for (size_t list_index = cast->elements.size; list_index > 0; list_index--) {
|
|
253
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->elements.nodes[list_index - 1], 0);
|
|
254
|
+
}
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
case PM_ARRAY_PATTERN_NODE: {
|
|
258
|
+
const pm_array_pattern_node_t *cast = (const pm_array_pattern_node_t *) node;
|
|
259
|
+
for (size_t list_index = cast->posts.size; list_index > 0; list_index--) {
|
|
260
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->posts.nodes[list_index - 1], 0);
|
|
261
|
+
}
|
|
262
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->rest, 0);
|
|
263
|
+
for (size_t list_index = cast->requireds.size; list_index > 0; list_index--) {
|
|
264
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->requireds.nodes[list_index - 1], 0);
|
|
265
|
+
}
|
|
266
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->constant, 0);
|
|
267
|
+
break;
|
|
268
|
+
}
|
|
269
|
+
case PM_ASSOC_NODE: {
|
|
270
|
+
const pm_assoc_node_t *cast = (const pm_assoc_node_t *) node;
|
|
271
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
272
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->key, 0);
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
case PM_ASSOC_SPLAT_NODE: {
|
|
276
|
+
const pm_assoc_splat_node_t *cast = (const pm_assoc_splat_node_t *) node;
|
|
277
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
case PM_BEGIN_NODE: {
|
|
281
|
+
const pm_begin_node_t *cast = (const pm_begin_node_t *) node;
|
|
282
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->ensure_clause, 0);
|
|
283
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->else_clause, 0);
|
|
284
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->rescue_clause, 0);
|
|
285
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->statements, 0);
|
|
286
|
+
break;
|
|
287
|
+
}
|
|
288
|
+
case PM_BLOCK_ARGUMENT_NODE: {
|
|
289
|
+
const pm_block_argument_node_t *cast = (const pm_block_argument_node_t *) node;
|
|
290
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->expression, 0);
|
|
291
|
+
break;
|
|
292
|
+
}
|
|
293
|
+
case PM_BLOCK_NODE: {
|
|
294
|
+
const pm_block_node_t *cast = (const pm_block_node_t *) node;
|
|
295
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->body, 0);
|
|
296
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->parameters, 0);
|
|
297
|
+
break;
|
|
298
|
+
}
|
|
299
|
+
case PM_BLOCK_PARAMETERS_NODE: {
|
|
300
|
+
const pm_block_parameters_node_t *cast = (const pm_block_parameters_node_t *) node;
|
|
301
|
+
for (size_t list_index = cast->locals.size; list_index > 0; list_index--) {
|
|
302
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->locals.nodes[list_index - 1], 0);
|
|
303
|
+
}
|
|
304
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->parameters, 0);
|
|
305
|
+
break;
|
|
306
|
+
}
|
|
307
|
+
case PM_BREAK_NODE: {
|
|
308
|
+
const pm_break_node_t *cast = (const pm_break_node_t *) node;
|
|
309
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->arguments, 0);
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
312
|
+
case PM_CALL_AND_WRITE_NODE: {
|
|
313
|
+
const pm_call_and_write_node_t *cast = (const pm_call_and_write_node_t *) node;
|
|
314
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
315
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->receiver, 0);
|
|
316
|
+
break;
|
|
317
|
+
}
|
|
318
|
+
case PM_CALL_NODE: {
|
|
319
|
+
const pm_call_node_t *cast = (const pm_call_node_t *) node;
|
|
320
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->block, 0);
|
|
321
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->arguments, 0);
|
|
322
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->receiver, 0);
|
|
323
|
+
break;
|
|
324
|
+
}
|
|
325
|
+
case PM_CALL_OPERATOR_WRITE_NODE: {
|
|
326
|
+
const pm_call_operator_write_node_t *cast = (const pm_call_operator_write_node_t *) node;
|
|
327
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
328
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->receiver, 0);
|
|
329
|
+
break;
|
|
330
|
+
}
|
|
331
|
+
case PM_CALL_OR_WRITE_NODE: {
|
|
332
|
+
const pm_call_or_write_node_t *cast = (const pm_call_or_write_node_t *) node;
|
|
333
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
334
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->receiver, 0);
|
|
335
|
+
break;
|
|
336
|
+
}
|
|
337
|
+
case PM_CALL_TARGET_NODE: {
|
|
338
|
+
const pm_call_target_node_t *cast = (const pm_call_target_node_t *) node;
|
|
339
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->receiver, 0);
|
|
340
|
+
break;
|
|
341
|
+
}
|
|
342
|
+
case PM_CAPTURE_PATTERN_NODE: {
|
|
343
|
+
const pm_capture_pattern_node_t *cast = (const pm_capture_pattern_node_t *) node;
|
|
344
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->target, 0);
|
|
345
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
346
|
+
break;
|
|
347
|
+
}
|
|
348
|
+
case PM_CASE_MATCH_NODE: {
|
|
349
|
+
const pm_case_match_node_t *cast = (const pm_case_match_node_t *) node;
|
|
350
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->else_clause, 0);
|
|
351
|
+
for (size_t list_index = cast->conditions.size; list_index > 0; list_index--) {
|
|
352
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->conditions.nodes[list_index - 1], 0);
|
|
353
|
+
}
|
|
354
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->predicate, 0);
|
|
355
|
+
break;
|
|
356
|
+
}
|
|
357
|
+
case PM_CASE_NODE: {
|
|
358
|
+
const pm_case_node_t *cast = (const pm_case_node_t *) node;
|
|
359
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->else_clause, 0);
|
|
360
|
+
for (size_t list_index = cast->conditions.size; list_index > 0; list_index--) {
|
|
361
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->conditions.nodes[list_index - 1], 0);
|
|
362
|
+
}
|
|
363
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->predicate, 0);
|
|
364
|
+
break;
|
|
365
|
+
}
|
|
366
|
+
case PM_CLASS_NODE: {
|
|
367
|
+
const pm_class_node_t *cast = (const pm_class_node_t *) node;
|
|
368
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->body, 0);
|
|
369
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->superclass, 0);
|
|
370
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->constant_path, 0);
|
|
371
|
+
break;
|
|
372
|
+
}
|
|
373
|
+
case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
|
|
374
|
+
const pm_class_variable_and_write_node_t *cast = (const pm_class_variable_and_write_node_t *) node;
|
|
375
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
376
|
+
break;
|
|
377
|
+
}
|
|
378
|
+
case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
379
|
+
const pm_class_variable_operator_write_node_t *cast = (const pm_class_variable_operator_write_node_t *) node;
|
|
380
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
381
|
+
break;
|
|
382
|
+
}
|
|
383
|
+
case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
|
|
384
|
+
const pm_class_variable_or_write_node_t *cast = (const pm_class_variable_or_write_node_t *) node;
|
|
385
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
386
|
+
break;
|
|
387
|
+
}
|
|
388
|
+
case PM_CLASS_VARIABLE_WRITE_NODE: {
|
|
389
|
+
const pm_class_variable_write_node_t *cast = (const pm_class_variable_write_node_t *) node;
|
|
390
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
391
|
+
break;
|
|
392
|
+
}
|
|
393
|
+
case PM_CONSTANT_AND_WRITE_NODE: {
|
|
394
|
+
const pm_constant_and_write_node_t *cast = (const pm_constant_and_write_node_t *) node;
|
|
395
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
396
|
+
break;
|
|
397
|
+
}
|
|
398
|
+
case PM_CONSTANT_OPERATOR_WRITE_NODE: {
|
|
399
|
+
const pm_constant_operator_write_node_t *cast = (const pm_constant_operator_write_node_t *) node;
|
|
400
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
401
|
+
break;
|
|
402
|
+
}
|
|
403
|
+
case PM_CONSTANT_OR_WRITE_NODE: {
|
|
404
|
+
const pm_constant_or_write_node_t *cast = (const pm_constant_or_write_node_t *) node;
|
|
405
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
406
|
+
break;
|
|
407
|
+
}
|
|
408
|
+
case PM_CONSTANT_PATH_AND_WRITE_NODE: {
|
|
409
|
+
const pm_constant_path_and_write_node_t *cast = (const pm_constant_path_and_write_node_t *) node;
|
|
410
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
411
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->target, 0);
|
|
412
|
+
break;
|
|
413
|
+
}
|
|
414
|
+
case PM_CONSTANT_PATH_NODE: {
|
|
415
|
+
const pm_constant_path_node_t *cast = (const pm_constant_path_node_t *) node;
|
|
416
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->parent, 0);
|
|
417
|
+
break;
|
|
418
|
+
}
|
|
419
|
+
case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
|
|
420
|
+
const pm_constant_path_operator_write_node_t *cast = (const pm_constant_path_operator_write_node_t *) node;
|
|
421
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
422
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->target, 0);
|
|
423
|
+
break;
|
|
424
|
+
}
|
|
425
|
+
case PM_CONSTANT_PATH_OR_WRITE_NODE: {
|
|
426
|
+
const pm_constant_path_or_write_node_t *cast = (const pm_constant_path_or_write_node_t *) node;
|
|
427
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
428
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->target, 0);
|
|
429
|
+
break;
|
|
430
|
+
}
|
|
431
|
+
case PM_CONSTANT_PATH_TARGET_NODE: {
|
|
432
|
+
const pm_constant_path_target_node_t *cast = (const pm_constant_path_target_node_t *) node;
|
|
433
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->parent, 0);
|
|
434
|
+
break;
|
|
435
|
+
}
|
|
436
|
+
case PM_CONSTANT_PATH_WRITE_NODE: {
|
|
437
|
+
const pm_constant_path_write_node_t *cast = (const pm_constant_path_write_node_t *) node;
|
|
438
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
439
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->target, 0);
|
|
440
|
+
break;
|
|
441
|
+
}
|
|
442
|
+
case PM_CONSTANT_WRITE_NODE: {
|
|
443
|
+
const pm_constant_write_node_t *cast = (const pm_constant_write_node_t *) node;
|
|
444
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
445
|
+
break;
|
|
446
|
+
}
|
|
447
|
+
case PM_DEF_NODE: {
|
|
448
|
+
const pm_def_node_t *cast = (const pm_def_node_t *) node;
|
|
449
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_LAZY_END, NULL, index);
|
|
450
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->body, 0);
|
|
451
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_LAZY_START, NULL, index);
|
|
452
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->parameters, 0);
|
|
453
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->receiver, 0);
|
|
454
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_LAZY_HEADER, NULL, index);
|
|
455
|
+
break;
|
|
456
|
+
}
|
|
457
|
+
case PM_DEFINED_NODE: {
|
|
458
|
+
const pm_defined_node_t *cast = (const pm_defined_node_t *) node;
|
|
459
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
460
|
+
break;
|
|
461
|
+
}
|
|
462
|
+
case PM_ELSE_NODE: {
|
|
463
|
+
const pm_else_node_t *cast = (const pm_else_node_t *) node;
|
|
464
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->statements, 0);
|
|
465
|
+
break;
|
|
466
|
+
}
|
|
467
|
+
case PM_EMBEDDED_STATEMENTS_NODE: {
|
|
468
|
+
const pm_embedded_statements_node_t *cast = (const pm_embedded_statements_node_t *) node;
|
|
469
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->statements, 0);
|
|
470
|
+
break;
|
|
471
|
+
}
|
|
472
|
+
case PM_EMBEDDED_VARIABLE_NODE: {
|
|
473
|
+
const pm_embedded_variable_node_t *cast = (const pm_embedded_variable_node_t *) node;
|
|
474
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->variable, 0);
|
|
475
|
+
break;
|
|
476
|
+
}
|
|
477
|
+
case PM_ENSURE_NODE: {
|
|
478
|
+
const pm_ensure_node_t *cast = (const pm_ensure_node_t *) node;
|
|
479
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->statements, 0);
|
|
480
|
+
break;
|
|
481
|
+
}
|
|
482
|
+
case PM_ERROR_RECOVERY_NODE: {
|
|
483
|
+
const pm_error_recovery_node_t *cast = (const pm_error_recovery_node_t *) node;
|
|
484
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->unexpected, 0);
|
|
485
|
+
break;
|
|
486
|
+
}
|
|
487
|
+
case PM_FIND_PATTERN_NODE: {
|
|
488
|
+
const pm_find_pattern_node_t *cast = (const pm_find_pattern_node_t *) node;
|
|
489
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->right, 0);
|
|
490
|
+
for (size_t list_index = cast->requireds.size; list_index > 0; list_index--) {
|
|
491
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->requireds.nodes[list_index - 1], 0);
|
|
492
|
+
}
|
|
493
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->left, 0);
|
|
494
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->constant, 0);
|
|
495
|
+
break;
|
|
496
|
+
}
|
|
497
|
+
case PM_FLIP_FLOP_NODE: {
|
|
498
|
+
const pm_flip_flop_node_t *cast = (const pm_flip_flop_node_t *) node;
|
|
499
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->right, 0);
|
|
500
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->left, 0);
|
|
501
|
+
break;
|
|
502
|
+
}
|
|
503
|
+
case PM_FOR_NODE: {
|
|
504
|
+
const pm_for_node_t *cast = (const pm_for_node_t *) node;
|
|
505
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->statements, 0);
|
|
506
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->collection, 0);
|
|
507
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->index, 0);
|
|
508
|
+
break;
|
|
509
|
+
}
|
|
510
|
+
case PM_FORWARDING_SUPER_NODE: {
|
|
511
|
+
const pm_forwarding_super_node_t *cast = (const pm_forwarding_super_node_t *) node;
|
|
512
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->block, 0);
|
|
513
|
+
break;
|
|
514
|
+
}
|
|
515
|
+
case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
|
|
516
|
+
const pm_global_variable_and_write_node_t *cast = (const pm_global_variable_and_write_node_t *) node;
|
|
517
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
518
|
+
break;
|
|
519
|
+
}
|
|
520
|
+
case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
521
|
+
const pm_global_variable_operator_write_node_t *cast = (const pm_global_variable_operator_write_node_t *) node;
|
|
522
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
523
|
+
break;
|
|
524
|
+
}
|
|
525
|
+
case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
|
|
526
|
+
const pm_global_variable_or_write_node_t *cast = (const pm_global_variable_or_write_node_t *) node;
|
|
527
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
528
|
+
break;
|
|
529
|
+
}
|
|
530
|
+
case PM_GLOBAL_VARIABLE_WRITE_NODE: {
|
|
531
|
+
const pm_global_variable_write_node_t *cast = (const pm_global_variable_write_node_t *) node;
|
|
532
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
533
|
+
break;
|
|
534
|
+
}
|
|
535
|
+
case PM_HASH_NODE: {
|
|
536
|
+
const pm_hash_node_t *cast = (const pm_hash_node_t *) node;
|
|
537
|
+
for (size_t list_index = cast->elements.size; list_index > 0; list_index--) {
|
|
538
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->elements.nodes[list_index - 1], 0);
|
|
539
|
+
}
|
|
540
|
+
break;
|
|
541
|
+
}
|
|
542
|
+
case PM_HASH_PATTERN_NODE: {
|
|
543
|
+
const pm_hash_pattern_node_t *cast = (const pm_hash_pattern_node_t *) node;
|
|
544
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->rest, 0);
|
|
545
|
+
for (size_t list_index = cast->elements.size; list_index > 0; list_index--) {
|
|
546
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->elements.nodes[list_index - 1], 0);
|
|
547
|
+
}
|
|
548
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->constant, 0);
|
|
549
|
+
break;
|
|
550
|
+
}
|
|
551
|
+
case PM_IF_NODE: {
|
|
552
|
+
const pm_if_node_t *cast = (const pm_if_node_t *) node;
|
|
553
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->subsequent, 0);
|
|
554
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->statements, 0);
|
|
555
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->predicate, 0);
|
|
556
|
+
break;
|
|
557
|
+
}
|
|
558
|
+
case PM_IMAGINARY_NODE: {
|
|
559
|
+
const pm_imaginary_node_t *cast = (const pm_imaginary_node_t *) node;
|
|
560
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->numeric, 0);
|
|
561
|
+
break;
|
|
562
|
+
}
|
|
563
|
+
case PM_IMPLICIT_NODE: {
|
|
564
|
+
const pm_implicit_node_t *cast = (const pm_implicit_node_t *) node;
|
|
565
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
566
|
+
break;
|
|
567
|
+
}
|
|
568
|
+
case PM_IN_NODE: {
|
|
569
|
+
const pm_in_node_t *cast = (const pm_in_node_t *) node;
|
|
570
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->statements, 0);
|
|
571
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->pattern, 0);
|
|
572
|
+
break;
|
|
573
|
+
}
|
|
574
|
+
case PM_INDEX_AND_WRITE_NODE: {
|
|
575
|
+
const pm_index_and_write_node_t *cast = (const pm_index_and_write_node_t *) node;
|
|
576
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
577
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->block, 0);
|
|
578
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->arguments, 0);
|
|
579
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->receiver, 0);
|
|
580
|
+
break;
|
|
581
|
+
}
|
|
582
|
+
case PM_INDEX_OPERATOR_WRITE_NODE: {
|
|
583
|
+
const pm_index_operator_write_node_t *cast = (const pm_index_operator_write_node_t *) node;
|
|
584
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
585
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->block, 0);
|
|
586
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->arguments, 0);
|
|
587
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->receiver, 0);
|
|
588
|
+
break;
|
|
589
|
+
}
|
|
590
|
+
case PM_INDEX_OR_WRITE_NODE: {
|
|
591
|
+
const pm_index_or_write_node_t *cast = (const pm_index_or_write_node_t *) node;
|
|
592
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
593
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->block, 0);
|
|
594
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->arguments, 0);
|
|
595
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->receiver, 0);
|
|
596
|
+
break;
|
|
597
|
+
}
|
|
598
|
+
case PM_INDEX_TARGET_NODE: {
|
|
599
|
+
const pm_index_target_node_t *cast = (const pm_index_target_node_t *) node;
|
|
600
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->block, 0);
|
|
601
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->arguments, 0);
|
|
602
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->receiver, 0);
|
|
603
|
+
break;
|
|
604
|
+
}
|
|
605
|
+
case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
|
|
606
|
+
const pm_instance_variable_and_write_node_t *cast = (const pm_instance_variable_and_write_node_t *) node;
|
|
607
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
608
|
+
break;
|
|
609
|
+
}
|
|
610
|
+
case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
611
|
+
const pm_instance_variable_operator_write_node_t *cast = (const pm_instance_variable_operator_write_node_t *) node;
|
|
612
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
613
|
+
break;
|
|
614
|
+
}
|
|
615
|
+
case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
|
|
616
|
+
const pm_instance_variable_or_write_node_t *cast = (const pm_instance_variable_or_write_node_t *) node;
|
|
617
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
618
|
+
break;
|
|
619
|
+
}
|
|
620
|
+
case PM_INSTANCE_VARIABLE_WRITE_NODE: {
|
|
621
|
+
const pm_instance_variable_write_node_t *cast = (const pm_instance_variable_write_node_t *) node;
|
|
622
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
623
|
+
break;
|
|
624
|
+
}
|
|
625
|
+
case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
|
|
626
|
+
const pm_interpolated_match_last_line_node_t *cast = (const pm_interpolated_match_last_line_node_t *) node;
|
|
627
|
+
for (size_t list_index = cast->parts.size; list_index > 0; list_index--) {
|
|
628
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->parts.nodes[list_index - 1], 0);
|
|
629
|
+
}
|
|
630
|
+
break;
|
|
631
|
+
}
|
|
632
|
+
case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
|
|
633
|
+
const pm_interpolated_regular_expression_node_t *cast = (const pm_interpolated_regular_expression_node_t *) node;
|
|
634
|
+
for (size_t list_index = cast->parts.size; list_index > 0; list_index--) {
|
|
635
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->parts.nodes[list_index - 1], 0);
|
|
636
|
+
}
|
|
637
|
+
break;
|
|
638
|
+
}
|
|
639
|
+
case PM_INTERPOLATED_STRING_NODE: {
|
|
640
|
+
const pm_interpolated_string_node_t *cast = (const pm_interpolated_string_node_t *) node;
|
|
641
|
+
for (size_t list_index = cast->parts.size; list_index > 0; list_index--) {
|
|
642
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->parts.nodes[list_index - 1], 0);
|
|
643
|
+
}
|
|
644
|
+
break;
|
|
645
|
+
}
|
|
646
|
+
case PM_INTERPOLATED_SYMBOL_NODE: {
|
|
647
|
+
const pm_interpolated_symbol_node_t *cast = (const pm_interpolated_symbol_node_t *) node;
|
|
648
|
+
for (size_t list_index = cast->parts.size; list_index > 0; list_index--) {
|
|
649
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->parts.nodes[list_index - 1], 0);
|
|
650
|
+
}
|
|
651
|
+
break;
|
|
652
|
+
}
|
|
653
|
+
case PM_INTERPOLATED_X_STRING_NODE: {
|
|
654
|
+
const pm_interpolated_x_string_node_t *cast = (const pm_interpolated_x_string_node_t *) node;
|
|
655
|
+
for (size_t list_index = cast->parts.size; list_index > 0; list_index--) {
|
|
656
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->parts.nodes[list_index - 1], 0);
|
|
657
|
+
}
|
|
658
|
+
break;
|
|
659
|
+
}
|
|
660
|
+
case PM_KEYWORD_HASH_NODE: {
|
|
661
|
+
const pm_keyword_hash_node_t *cast = (const pm_keyword_hash_node_t *) node;
|
|
662
|
+
for (size_t list_index = cast->elements.size; list_index > 0; list_index--) {
|
|
663
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->elements.nodes[list_index - 1], 0);
|
|
664
|
+
}
|
|
665
|
+
break;
|
|
666
|
+
}
|
|
667
|
+
case PM_LAMBDA_NODE: {
|
|
668
|
+
const pm_lambda_node_t *cast = (const pm_lambda_node_t *) node;
|
|
669
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->body, 0);
|
|
670
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->parameters, 0);
|
|
671
|
+
break;
|
|
672
|
+
}
|
|
673
|
+
case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
|
|
674
|
+
const pm_local_variable_and_write_node_t *cast = (const pm_local_variable_and_write_node_t *) node;
|
|
675
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
676
|
+
break;
|
|
677
|
+
}
|
|
678
|
+
case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
679
|
+
const pm_local_variable_operator_write_node_t *cast = (const pm_local_variable_operator_write_node_t *) node;
|
|
680
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
681
|
+
break;
|
|
682
|
+
}
|
|
683
|
+
case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
|
|
684
|
+
const pm_local_variable_or_write_node_t *cast = (const pm_local_variable_or_write_node_t *) node;
|
|
685
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
686
|
+
break;
|
|
687
|
+
}
|
|
688
|
+
case PM_LOCAL_VARIABLE_WRITE_NODE: {
|
|
689
|
+
const pm_local_variable_write_node_t *cast = (const pm_local_variable_write_node_t *) node;
|
|
690
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
691
|
+
break;
|
|
692
|
+
}
|
|
693
|
+
case PM_MATCH_PREDICATE_NODE: {
|
|
694
|
+
const pm_match_predicate_node_t *cast = (const pm_match_predicate_node_t *) node;
|
|
695
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->pattern, 0);
|
|
696
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
697
|
+
break;
|
|
698
|
+
}
|
|
699
|
+
case PM_MATCH_REQUIRED_NODE: {
|
|
700
|
+
const pm_match_required_node_t *cast = (const pm_match_required_node_t *) node;
|
|
701
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->pattern, 0);
|
|
702
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
703
|
+
break;
|
|
704
|
+
}
|
|
705
|
+
case PM_MATCH_WRITE_NODE: {
|
|
706
|
+
const pm_match_write_node_t *cast = (const pm_match_write_node_t *) node;
|
|
707
|
+
for (size_t list_index = cast->targets.size; list_index > 0; list_index--) {
|
|
708
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->targets.nodes[list_index - 1], 0);
|
|
709
|
+
}
|
|
710
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->call, 0);
|
|
711
|
+
break;
|
|
712
|
+
}
|
|
713
|
+
case PM_MODULE_NODE: {
|
|
714
|
+
const pm_module_node_t *cast = (const pm_module_node_t *) node;
|
|
715
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->body, 0);
|
|
716
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->constant_path, 0);
|
|
717
|
+
break;
|
|
718
|
+
}
|
|
719
|
+
case PM_MULTI_TARGET_NODE: {
|
|
720
|
+
const pm_multi_target_node_t *cast = (const pm_multi_target_node_t *) node;
|
|
721
|
+
for (size_t list_index = cast->rights.size; list_index > 0; list_index--) {
|
|
722
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->rights.nodes[list_index - 1], 0);
|
|
723
|
+
}
|
|
724
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->rest, 0);
|
|
725
|
+
for (size_t list_index = cast->lefts.size; list_index > 0; list_index--) {
|
|
726
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->lefts.nodes[list_index - 1], 0);
|
|
727
|
+
}
|
|
728
|
+
break;
|
|
729
|
+
}
|
|
730
|
+
case PM_MULTI_WRITE_NODE: {
|
|
731
|
+
const pm_multi_write_node_t *cast = (const pm_multi_write_node_t *) node;
|
|
732
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
733
|
+
for (size_t list_index = cast->rights.size; list_index > 0; list_index--) {
|
|
734
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->rights.nodes[list_index - 1], 0);
|
|
735
|
+
}
|
|
736
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->rest, 0);
|
|
737
|
+
for (size_t list_index = cast->lefts.size; list_index > 0; list_index--) {
|
|
738
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->lefts.nodes[list_index - 1], 0);
|
|
739
|
+
}
|
|
740
|
+
break;
|
|
741
|
+
}
|
|
742
|
+
case PM_NEXT_NODE: {
|
|
743
|
+
const pm_next_node_t *cast = (const pm_next_node_t *) node;
|
|
744
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->arguments, 0);
|
|
745
|
+
break;
|
|
746
|
+
}
|
|
747
|
+
case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
|
|
748
|
+
const pm_optional_keyword_parameter_node_t *cast = (const pm_optional_keyword_parameter_node_t *) node;
|
|
749
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
750
|
+
break;
|
|
751
|
+
}
|
|
752
|
+
case PM_OPTIONAL_PARAMETER_NODE: {
|
|
753
|
+
const pm_optional_parameter_node_t *cast = (const pm_optional_parameter_node_t *) node;
|
|
754
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->value, 0);
|
|
755
|
+
break;
|
|
756
|
+
}
|
|
757
|
+
case PM_OR_NODE: {
|
|
758
|
+
const pm_or_node_t *cast = (const pm_or_node_t *) node;
|
|
759
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->right, 0);
|
|
760
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->left, 0);
|
|
761
|
+
break;
|
|
762
|
+
}
|
|
763
|
+
case PM_PARAMETERS_NODE: {
|
|
764
|
+
const pm_parameters_node_t *cast = (const pm_parameters_node_t *) node;
|
|
765
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->block, 0);
|
|
766
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->keyword_rest, 0);
|
|
767
|
+
for (size_t list_index = cast->keywords.size; list_index > 0; list_index--) {
|
|
768
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->keywords.nodes[list_index - 1], 0);
|
|
769
|
+
}
|
|
770
|
+
for (size_t list_index = cast->posts.size; list_index > 0; list_index--) {
|
|
771
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->posts.nodes[list_index - 1], 0);
|
|
772
|
+
}
|
|
773
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->rest, 0);
|
|
774
|
+
for (size_t list_index = cast->optionals.size; list_index > 0; list_index--) {
|
|
775
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->optionals.nodes[list_index - 1], 0);
|
|
776
|
+
}
|
|
777
|
+
for (size_t list_index = cast->requireds.size; list_index > 0; list_index--) {
|
|
778
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->requireds.nodes[list_index - 1], 0);
|
|
779
|
+
}
|
|
780
|
+
break;
|
|
781
|
+
}
|
|
782
|
+
case PM_PARENTHESES_NODE: {
|
|
783
|
+
const pm_parentheses_node_t *cast = (const pm_parentheses_node_t *) node;
|
|
784
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->body, 0);
|
|
785
|
+
break;
|
|
786
|
+
}
|
|
787
|
+
case PM_PINNED_EXPRESSION_NODE: {
|
|
788
|
+
const pm_pinned_expression_node_t *cast = (const pm_pinned_expression_node_t *) node;
|
|
789
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->expression, 0);
|
|
790
|
+
break;
|
|
791
|
+
}
|
|
792
|
+
case PM_PINNED_VARIABLE_NODE: {
|
|
793
|
+
const pm_pinned_variable_node_t *cast = (const pm_pinned_variable_node_t *) node;
|
|
794
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->variable, 0);
|
|
795
|
+
break;
|
|
796
|
+
}
|
|
797
|
+
case PM_POST_EXECUTION_NODE: {
|
|
798
|
+
const pm_post_execution_node_t *cast = (const pm_post_execution_node_t *) node;
|
|
799
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->statements, 0);
|
|
800
|
+
break;
|
|
801
|
+
}
|
|
802
|
+
case PM_PRE_EXECUTION_NODE: {
|
|
803
|
+
const pm_pre_execution_node_t *cast = (const pm_pre_execution_node_t *) node;
|
|
804
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->statements, 0);
|
|
805
|
+
break;
|
|
806
|
+
}
|
|
807
|
+
case PM_PROGRAM_NODE: {
|
|
808
|
+
const pm_program_node_t *cast = (const pm_program_node_t *) node;
|
|
809
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->statements, 0);
|
|
810
|
+
break;
|
|
811
|
+
}
|
|
812
|
+
case PM_RANGE_NODE: {
|
|
813
|
+
const pm_range_node_t *cast = (const pm_range_node_t *) node;
|
|
814
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->right, 0);
|
|
815
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->left, 0);
|
|
816
|
+
break;
|
|
817
|
+
}
|
|
818
|
+
case PM_RESCUE_MODIFIER_NODE: {
|
|
819
|
+
const pm_rescue_modifier_node_t *cast = (const pm_rescue_modifier_node_t *) node;
|
|
820
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->rescue_expression, 0);
|
|
821
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->expression, 0);
|
|
822
|
+
break;
|
|
823
|
+
}
|
|
824
|
+
case PM_RESCUE_NODE: {
|
|
825
|
+
const pm_rescue_node_t *cast = (const pm_rescue_node_t *) node;
|
|
826
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->subsequent, 0);
|
|
827
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->statements, 0);
|
|
828
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->reference, 0);
|
|
829
|
+
for (size_t list_index = cast->exceptions.size; list_index > 0; list_index--) {
|
|
830
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->exceptions.nodes[list_index - 1], 0);
|
|
831
|
+
}
|
|
832
|
+
break;
|
|
833
|
+
}
|
|
834
|
+
case PM_RETURN_NODE: {
|
|
835
|
+
const pm_return_node_t *cast = (const pm_return_node_t *) node;
|
|
836
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->arguments, 0);
|
|
837
|
+
break;
|
|
838
|
+
}
|
|
839
|
+
case PM_SHAREABLE_CONSTANT_NODE: {
|
|
840
|
+
const pm_shareable_constant_node_t *cast = (const pm_shareable_constant_node_t *) node;
|
|
841
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->write, 0);
|
|
842
|
+
break;
|
|
843
|
+
}
|
|
844
|
+
case PM_SINGLETON_CLASS_NODE: {
|
|
845
|
+
const pm_singleton_class_node_t *cast = (const pm_singleton_class_node_t *) node;
|
|
846
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->body, 0);
|
|
847
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->expression, 0);
|
|
848
|
+
break;
|
|
849
|
+
}
|
|
850
|
+
case PM_SPLAT_NODE: {
|
|
851
|
+
const pm_splat_node_t *cast = (const pm_splat_node_t *) node;
|
|
852
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->expression, 0);
|
|
853
|
+
break;
|
|
854
|
+
}
|
|
855
|
+
case PM_STATEMENTS_NODE: {
|
|
856
|
+
const pm_statements_node_t *cast = (const pm_statements_node_t *) node;
|
|
857
|
+
for (size_t list_index = cast->body.size; list_index > 0; list_index--) {
|
|
858
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->body.nodes[list_index - 1], 0);
|
|
859
|
+
}
|
|
860
|
+
break;
|
|
861
|
+
}
|
|
862
|
+
case PM_SUPER_NODE: {
|
|
863
|
+
const pm_super_node_t *cast = (const pm_super_node_t *) node;
|
|
864
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->block, 0);
|
|
865
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->arguments, 0);
|
|
866
|
+
break;
|
|
867
|
+
}
|
|
868
|
+
case PM_UNDEF_NODE: {
|
|
869
|
+
const pm_undef_node_t *cast = (const pm_undef_node_t *) node;
|
|
870
|
+
for (size_t list_index = cast->names.size; list_index > 0; list_index--) {
|
|
871
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->names.nodes[list_index - 1], 0);
|
|
872
|
+
}
|
|
873
|
+
break;
|
|
874
|
+
}
|
|
875
|
+
case PM_UNLESS_NODE: {
|
|
876
|
+
const pm_unless_node_t *cast = (const pm_unless_node_t *) node;
|
|
877
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->else_clause, 0);
|
|
878
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->statements, 0);
|
|
879
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->predicate, 0);
|
|
880
|
+
break;
|
|
881
|
+
}
|
|
882
|
+
case PM_UNTIL_NODE: {
|
|
883
|
+
const pm_until_node_t *cast = (const pm_until_node_t *) node;
|
|
884
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->statements, 0);
|
|
885
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->predicate, 0);
|
|
886
|
+
break;
|
|
887
|
+
}
|
|
888
|
+
case PM_WHEN_NODE: {
|
|
889
|
+
const pm_when_node_t *cast = (const pm_when_node_t *) node;
|
|
890
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->statements, 0);
|
|
891
|
+
for (size_t list_index = cast->conditions.size; list_index > 0; list_index--) {
|
|
892
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, cast->conditions.nodes[list_index - 1], 0);
|
|
893
|
+
}
|
|
894
|
+
break;
|
|
895
|
+
}
|
|
896
|
+
case PM_WHILE_NODE: {
|
|
897
|
+
const pm_while_node_t *cast = (const pm_while_node_t *) node;
|
|
898
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->statements, 0);
|
|
899
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->predicate, 0);
|
|
900
|
+
break;
|
|
901
|
+
}
|
|
902
|
+
case PM_YIELD_NODE: {
|
|
903
|
+
const pm_yield_node_t *cast = (const pm_yield_node_t *) node;
|
|
904
|
+
pm_serialize_stack_push(&stack, PM_SERIALIZE_ENTRY_NODE, (const pm_node_t *) cast->arguments, 0);
|
|
905
|
+
break;
|
|
906
|
+
}
|
|
907
|
+
default:
|
|
908
|
+
break;
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
if (stack.size != index + 1) continue;
|
|
912
|
+
stack.size--;
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
pm_buffer_append_byte(buffer, (uint8_t) PM_NODE_TYPE(node));
|
|
916
|
+
pm_buffer_append_varuint(buffer, node->node_id);
|
|
917
|
+
pm_serialize_location(&node->location, buffer);
|
|
918
|
+
|
|
919
|
+
switch (PM_NODE_TYPE(node)) {
|
|
920
|
+
/* A ScopeNode is never part of the tree, so it has no fields to
|
|
921
|
+
* serialize. */
|
|
922
|
+
case PM_SCOPE_NODE:
|
|
923
|
+
break;
|
|
924
|
+
case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
|
|
925
|
+
const pm_alias_global_variable_node_t *cast = (const pm_alias_global_variable_node_t *) node;
|
|
926
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
927
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
928
|
+
break;
|
|
929
|
+
}
|
|
930
|
+
case PM_ALIAS_METHOD_NODE: {
|
|
931
|
+
const pm_alias_method_node_t *cast = (const pm_alias_method_node_t *) node;
|
|
932
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
933
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
934
|
+
break;
|
|
935
|
+
}
|
|
936
|
+
case PM_ALTERNATION_PATTERN_NODE: {
|
|
937
|
+
const pm_alternation_pattern_node_t *cast = (const pm_alternation_pattern_node_t *) node;
|
|
938
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
939
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
940
|
+
break;
|
|
941
|
+
}
|
|
942
|
+
case PM_AND_NODE: {
|
|
943
|
+
const pm_and_node_t *cast = (const pm_and_node_t *) node;
|
|
944
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
945
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
946
|
+
break;
|
|
947
|
+
}
|
|
948
|
+
case PM_ARGUMENTS_NODE: {
|
|
949
|
+
const pm_arguments_node_t *cast = (const pm_arguments_node_t *) node;
|
|
950
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
951
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->arguments.size));
|
|
952
|
+
break;
|
|
953
|
+
}
|
|
954
|
+
case PM_ARRAY_NODE: {
|
|
955
|
+
const pm_array_node_t *cast = (const pm_array_node_t *) node;
|
|
956
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
957
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->elements.size));
|
|
958
|
+
if (cast->opening_loc.length == 0) {
|
|
959
|
+
pm_buffer_append_byte(buffer, 0);
|
|
960
|
+
} else {
|
|
961
|
+
pm_buffer_append_byte(buffer, 1);
|
|
962
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
963
|
+
}
|
|
964
|
+
if (cast->closing_loc.length == 0) {
|
|
965
|
+
pm_buffer_append_byte(buffer, 0);
|
|
966
|
+
} else {
|
|
967
|
+
pm_buffer_append_byte(buffer, 1);
|
|
968
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
969
|
+
}
|
|
970
|
+
break;
|
|
971
|
+
}
|
|
972
|
+
case PM_ARRAY_PATTERN_NODE: {
|
|
973
|
+
const pm_array_pattern_node_t *cast = (const pm_array_pattern_node_t *) node;
|
|
974
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
975
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->requireds.size));
|
|
976
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->posts.size));
|
|
977
|
+
if (cast->opening_loc.length == 0) {
|
|
978
|
+
pm_buffer_append_byte(buffer, 0);
|
|
979
|
+
} else {
|
|
980
|
+
pm_buffer_append_byte(buffer, 1);
|
|
981
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
982
|
+
}
|
|
983
|
+
if (cast->closing_loc.length == 0) {
|
|
984
|
+
pm_buffer_append_byte(buffer, 0);
|
|
985
|
+
} else {
|
|
986
|
+
pm_buffer_append_byte(buffer, 1);
|
|
987
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
988
|
+
}
|
|
989
|
+
break;
|
|
990
|
+
}
|
|
991
|
+
case PM_ASSOC_NODE: {
|
|
992
|
+
const pm_assoc_node_t *cast = (const pm_assoc_node_t *) node;
|
|
993
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
994
|
+
if (cast->operator_loc.length == 0) {
|
|
995
|
+
pm_buffer_append_byte(buffer, 0);
|
|
996
|
+
} else {
|
|
997
|
+
pm_buffer_append_byte(buffer, 1);
|
|
998
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
999
|
+
}
|
|
1000
|
+
break;
|
|
1001
|
+
}
|
|
1002
|
+
case PM_ASSOC_SPLAT_NODE: {
|
|
1003
|
+
const pm_assoc_splat_node_t *cast = (const pm_assoc_splat_node_t *) node;
|
|
1004
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1005
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1006
|
+
break;
|
|
1007
|
+
}
|
|
1008
|
+
case PM_BACK_REFERENCE_READ_NODE: {
|
|
1009
|
+
const pm_back_reference_read_node_t *cast = (const pm_back_reference_read_node_t *) node;
|
|
1010
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1011
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1012
|
+
break;
|
|
1013
|
+
}
|
|
1014
|
+
case PM_BEGIN_NODE: {
|
|
1015
|
+
const pm_begin_node_t *cast = (const pm_begin_node_t *) node;
|
|
1016
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1017
|
+
if (cast->begin_keyword_loc.length == 0) {
|
|
1018
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1019
|
+
} else {
|
|
1020
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1021
|
+
pm_serialize_location(&cast->begin_keyword_loc, buffer);
|
|
1022
|
+
}
|
|
1023
|
+
if (cast->end_keyword_loc.length == 0) {
|
|
1024
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1025
|
+
} else {
|
|
1026
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1027
|
+
pm_serialize_location(&cast->end_keyword_loc, buffer);
|
|
1028
|
+
}
|
|
1029
|
+
break;
|
|
1030
|
+
}
|
|
1031
|
+
case PM_BLOCK_ARGUMENT_NODE: {
|
|
1032
|
+
const pm_block_argument_node_t *cast = (const pm_block_argument_node_t *) node;
|
|
1033
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1034
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1035
|
+
break;
|
|
1036
|
+
}
|
|
1037
|
+
case PM_BLOCK_LOCAL_VARIABLE_NODE: {
|
|
1038
|
+
const pm_block_local_variable_node_t *cast = (const pm_block_local_variable_node_t *) node;
|
|
1039
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1040
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1041
|
+
break;
|
|
1042
|
+
}
|
|
1043
|
+
case PM_BLOCK_NODE: {
|
|
1044
|
+
const pm_block_node_t *cast = (const pm_block_node_t *) node;
|
|
1045
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1046
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->locals.size));
|
|
1047
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
|
1048
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->locals.ids[index]));
|
|
1049
|
+
}
|
|
1050
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1051
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1052
|
+
break;
|
|
1053
|
+
}
|
|
1054
|
+
case PM_BLOCK_PARAMETER_NODE: {
|
|
1055
|
+
const pm_block_parameter_node_t *cast = (const pm_block_parameter_node_t *) node;
|
|
1056
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1057
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1058
|
+
if (cast->name_loc.length == 0) {
|
|
1059
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1060
|
+
} else {
|
|
1061
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1062
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1063
|
+
}
|
|
1064
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1065
|
+
break;
|
|
1066
|
+
}
|
|
1067
|
+
case PM_BLOCK_PARAMETERS_NODE: {
|
|
1068
|
+
const pm_block_parameters_node_t *cast = (const pm_block_parameters_node_t *) node;
|
|
1069
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1070
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->locals.size));
|
|
1071
|
+
if (cast->opening_loc.length == 0) {
|
|
1072
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1073
|
+
} else {
|
|
1074
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1075
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1076
|
+
}
|
|
1077
|
+
if (cast->closing_loc.length == 0) {
|
|
1078
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1079
|
+
} else {
|
|
1080
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1081
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1082
|
+
}
|
|
1083
|
+
break;
|
|
1084
|
+
}
|
|
1085
|
+
case PM_BREAK_NODE: {
|
|
1086
|
+
const pm_break_node_t *cast = (const pm_break_node_t *) node;
|
|
1087
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1088
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
1089
|
+
break;
|
|
1090
|
+
}
|
|
1091
|
+
case PM_CALL_AND_WRITE_NODE: {
|
|
1092
|
+
const pm_call_and_write_node_t *cast = (const pm_call_and_write_node_t *) node;
|
|
1093
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1094
|
+
if (cast->call_operator_loc.length == 0) {
|
|
1095
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1096
|
+
} else {
|
|
1097
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1098
|
+
pm_serialize_location(&cast->call_operator_loc, buffer);
|
|
1099
|
+
}
|
|
1100
|
+
if (cast->message_loc.length == 0) {
|
|
1101
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1102
|
+
} else {
|
|
1103
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1104
|
+
pm_serialize_location(&cast->message_loc, buffer);
|
|
1105
|
+
}
|
|
1106
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->read_name));
|
|
1107
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->write_name));
|
|
1108
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1109
|
+
break;
|
|
1110
|
+
}
|
|
1111
|
+
case PM_CALL_NODE: {
|
|
1112
|
+
const pm_call_node_t *cast = (const pm_call_node_t *) node;
|
|
1113
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1114
|
+
if (cast->call_operator_loc.length == 0) {
|
|
1115
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1116
|
+
} else {
|
|
1117
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1118
|
+
pm_serialize_location(&cast->call_operator_loc, buffer);
|
|
1119
|
+
}
|
|
1120
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1121
|
+
if (cast->message_loc.length == 0) {
|
|
1122
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1123
|
+
} else {
|
|
1124
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1125
|
+
pm_serialize_location(&cast->message_loc, buffer);
|
|
1126
|
+
}
|
|
1127
|
+
if (cast->opening_loc.length == 0) {
|
|
1128
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1129
|
+
} else {
|
|
1130
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1131
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1132
|
+
}
|
|
1133
|
+
if (cast->closing_loc.length == 0) {
|
|
1134
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1135
|
+
} else {
|
|
1136
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1137
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1138
|
+
}
|
|
1139
|
+
if (cast->equal_loc.length == 0) {
|
|
1140
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1141
|
+
} else {
|
|
1142
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1143
|
+
pm_serialize_location(&cast->equal_loc, buffer);
|
|
1144
|
+
}
|
|
1145
|
+
break;
|
|
1146
|
+
}
|
|
1147
|
+
case PM_CALL_OPERATOR_WRITE_NODE: {
|
|
1148
|
+
const pm_call_operator_write_node_t *cast = (const pm_call_operator_write_node_t *) node;
|
|
1149
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1150
|
+
if (cast->call_operator_loc.length == 0) {
|
|
1151
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1152
|
+
} else {
|
|
1153
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1154
|
+
pm_serialize_location(&cast->call_operator_loc, buffer);
|
|
1155
|
+
}
|
|
1156
|
+
if (cast->message_loc.length == 0) {
|
|
1157
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1158
|
+
} else {
|
|
1159
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1160
|
+
pm_serialize_location(&cast->message_loc, buffer);
|
|
1161
|
+
}
|
|
1162
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->read_name));
|
|
1163
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->write_name));
|
|
1164
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->binary_operator));
|
|
1165
|
+
pm_serialize_location(&cast->binary_operator_loc, buffer);
|
|
1166
|
+
break;
|
|
1167
|
+
}
|
|
1168
|
+
case PM_CALL_OR_WRITE_NODE: {
|
|
1169
|
+
const pm_call_or_write_node_t *cast = (const pm_call_or_write_node_t *) node;
|
|
1170
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1171
|
+
if (cast->call_operator_loc.length == 0) {
|
|
1172
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1173
|
+
} else {
|
|
1174
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1175
|
+
pm_serialize_location(&cast->call_operator_loc, buffer);
|
|
1176
|
+
}
|
|
1177
|
+
if (cast->message_loc.length == 0) {
|
|
1178
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1179
|
+
} else {
|
|
1180
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1181
|
+
pm_serialize_location(&cast->message_loc, buffer);
|
|
1182
|
+
}
|
|
1183
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->read_name));
|
|
1184
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->write_name));
|
|
1185
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1186
|
+
break;
|
|
1187
|
+
}
|
|
1188
|
+
case PM_CALL_TARGET_NODE: {
|
|
1189
|
+
const pm_call_target_node_t *cast = (const pm_call_target_node_t *) node;
|
|
1190
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1191
|
+
pm_serialize_location(&cast->call_operator_loc, buffer);
|
|
1192
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1193
|
+
pm_serialize_location(&cast->message_loc, buffer);
|
|
1194
|
+
break;
|
|
1195
|
+
}
|
|
1196
|
+
case PM_CAPTURE_PATTERN_NODE: {
|
|
1197
|
+
const pm_capture_pattern_node_t *cast = (const pm_capture_pattern_node_t *) node;
|
|
1198
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1199
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1200
|
+
break;
|
|
1201
|
+
}
|
|
1202
|
+
case PM_CASE_MATCH_NODE: {
|
|
1203
|
+
const pm_case_match_node_t *cast = (const pm_case_match_node_t *) node;
|
|
1204
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1205
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->conditions.size));
|
|
1206
|
+
pm_serialize_location(&cast->case_keyword_loc, buffer);
|
|
1207
|
+
pm_serialize_location(&cast->end_keyword_loc, buffer);
|
|
1208
|
+
break;
|
|
1209
|
+
}
|
|
1210
|
+
case PM_CASE_NODE: {
|
|
1211
|
+
const pm_case_node_t *cast = (const pm_case_node_t *) node;
|
|
1212
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1213
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->conditions.size));
|
|
1214
|
+
pm_serialize_location(&cast->case_keyword_loc, buffer);
|
|
1215
|
+
pm_serialize_location(&cast->end_keyword_loc, buffer);
|
|
1216
|
+
break;
|
|
1217
|
+
}
|
|
1218
|
+
case PM_CLASS_NODE: {
|
|
1219
|
+
const pm_class_node_t *cast = (const pm_class_node_t *) node;
|
|
1220
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1221
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->locals.size));
|
|
1222
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
|
1223
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->locals.ids[index]));
|
|
1224
|
+
}
|
|
1225
|
+
pm_serialize_location(&cast->class_keyword_loc, buffer);
|
|
1226
|
+
if (cast->inheritance_operator_loc.length == 0) {
|
|
1227
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1228
|
+
} else {
|
|
1229
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1230
|
+
pm_serialize_location(&cast->inheritance_operator_loc, buffer);
|
|
1231
|
+
}
|
|
1232
|
+
pm_serialize_location(&cast->end_keyword_loc, buffer);
|
|
1233
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1234
|
+
break;
|
|
1235
|
+
}
|
|
1236
|
+
case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
|
|
1237
|
+
const pm_class_variable_and_write_node_t *cast = (const pm_class_variable_and_write_node_t *) node;
|
|
1238
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1239
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1240
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1241
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1242
|
+
break;
|
|
1243
|
+
}
|
|
1244
|
+
case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
1245
|
+
const pm_class_variable_operator_write_node_t *cast = (const pm_class_variable_operator_write_node_t *) node;
|
|
1246
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1247
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1248
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1249
|
+
pm_serialize_location(&cast->binary_operator_loc, buffer);
|
|
1250
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->binary_operator));
|
|
1251
|
+
break;
|
|
1252
|
+
}
|
|
1253
|
+
case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
|
|
1254
|
+
const pm_class_variable_or_write_node_t *cast = (const pm_class_variable_or_write_node_t *) node;
|
|
1255
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1256
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1257
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1258
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1259
|
+
break;
|
|
1260
|
+
}
|
|
1261
|
+
case PM_CLASS_VARIABLE_READ_NODE: {
|
|
1262
|
+
const pm_class_variable_read_node_t *cast = (const pm_class_variable_read_node_t *) node;
|
|
1263
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1264
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1265
|
+
break;
|
|
1266
|
+
}
|
|
1267
|
+
case PM_CLASS_VARIABLE_TARGET_NODE: {
|
|
1268
|
+
const pm_class_variable_target_node_t *cast = (const pm_class_variable_target_node_t *) node;
|
|
1269
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1270
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1271
|
+
break;
|
|
1272
|
+
}
|
|
1273
|
+
case PM_CLASS_VARIABLE_WRITE_NODE: {
|
|
1274
|
+
const pm_class_variable_write_node_t *cast = (const pm_class_variable_write_node_t *) node;
|
|
1275
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1276
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1277
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1278
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1279
|
+
break;
|
|
1280
|
+
}
|
|
1281
|
+
case PM_CONSTANT_AND_WRITE_NODE: {
|
|
1282
|
+
const pm_constant_and_write_node_t *cast = (const pm_constant_and_write_node_t *) node;
|
|
1283
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1284
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1285
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1286
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1287
|
+
break;
|
|
1288
|
+
}
|
|
1289
|
+
case PM_CONSTANT_OPERATOR_WRITE_NODE: {
|
|
1290
|
+
const pm_constant_operator_write_node_t *cast = (const pm_constant_operator_write_node_t *) node;
|
|
1291
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1292
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1293
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1294
|
+
pm_serialize_location(&cast->binary_operator_loc, buffer);
|
|
1295
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->binary_operator));
|
|
1296
|
+
break;
|
|
1297
|
+
}
|
|
1298
|
+
case PM_CONSTANT_OR_WRITE_NODE: {
|
|
1299
|
+
const pm_constant_or_write_node_t *cast = (const pm_constant_or_write_node_t *) node;
|
|
1300
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1301
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1302
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1303
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1304
|
+
break;
|
|
1305
|
+
}
|
|
1306
|
+
case PM_CONSTANT_PATH_AND_WRITE_NODE: {
|
|
1307
|
+
const pm_constant_path_and_write_node_t *cast = (const pm_constant_path_and_write_node_t *) node;
|
|
1308
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1309
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1310
|
+
break;
|
|
1311
|
+
}
|
|
1312
|
+
case PM_CONSTANT_PATH_NODE: {
|
|
1313
|
+
const pm_constant_path_node_t *cast = (const pm_constant_path_node_t *) node;
|
|
1314
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1315
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1316
|
+
pm_serialize_location(&cast->delimiter_loc, buffer);
|
|
1317
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1318
|
+
break;
|
|
1319
|
+
}
|
|
1320
|
+
case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
|
|
1321
|
+
const pm_constant_path_operator_write_node_t *cast = (const pm_constant_path_operator_write_node_t *) node;
|
|
1322
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1323
|
+
pm_serialize_location(&cast->binary_operator_loc, buffer);
|
|
1324
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->binary_operator));
|
|
1325
|
+
break;
|
|
1326
|
+
}
|
|
1327
|
+
case PM_CONSTANT_PATH_OR_WRITE_NODE: {
|
|
1328
|
+
const pm_constant_path_or_write_node_t *cast = (const pm_constant_path_or_write_node_t *) node;
|
|
1329
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1330
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1331
|
+
break;
|
|
1332
|
+
}
|
|
1333
|
+
case PM_CONSTANT_PATH_TARGET_NODE: {
|
|
1334
|
+
const pm_constant_path_target_node_t *cast = (const pm_constant_path_target_node_t *) node;
|
|
1335
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1336
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1337
|
+
pm_serialize_location(&cast->delimiter_loc, buffer);
|
|
1338
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1339
|
+
break;
|
|
1340
|
+
}
|
|
1341
|
+
case PM_CONSTANT_PATH_WRITE_NODE: {
|
|
1342
|
+
const pm_constant_path_write_node_t *cast = (const pm_constant_path_write_node_t *) node;
|
|
1343
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1344
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1345
|
+
break;
|
|
1346
|
+
}
|
|
1347
|
+
case PM_CONSTANT_READ_NODE: {
|
|
1348
|
+
const pm_constant_read_node_t *cast = (const pm_constant_read_node_t *) node;
|
|
1349
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1350
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1351
|
+
break;
|
|
1352
|
+
}
|
|
1353
|
+
case PM_CONSTANT_TARGET_NODE: {
|
|
1354
|
+
const pm_constant_target_node_t *cast = (const pm_constant_target_node_t *) node;
|
|
1355
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1356
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1357
|
+
break;
|
|
1358
|
+
}
|
|
1359
|
+
case PM_CONSTANT_WRITE_NODE: {
|
|
1360
|
+
const pm_constant_write_node_t *cast = (const pm_constant_write_node_t *) node;
|
|
1361
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1362
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1363
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1364
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1365
|
+
break;
|
|
1366
|
+
}
|
|
1367
|
+
case PM_DEF_NODE: {
|
|
1368
|
+
const pm_def_node_t *cast = (const pm_def_node_t *) node;
|
|
1369
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1370
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1371
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1372
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->locals.size));
|
|
1373
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
|
1374
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->locals.ids[index]));
|
|
1375
|
+
}
|
|
1376
|
+
pm_serialize_location(&cast->def_keyword_loc, buffer);
|
|
1377
|
+
if (cast->operator_loc.length == 0) {
|
|
1378
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1379
|
+
} else {
|
|
1380
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1381
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1382
|
+
}
|
|
1383
|
+
if (cast->lparen_loc.length == 0) {
|
|
1384
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1385
|
+
} else {
|
|
1386
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1387
|
+
pm_serialize_location(&cast->lparen_loc, buffer);
|
|
1388
|
+
}
|
|
1389
|
+
if (cast->rparen_loc.length == 0) {
|
|
1390
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1391
|
+
} else {
|
|
1392
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1393
|
+
pm_serialize_location(&cast->rparen_loc, buffer);
|
|
1394
|
+
}
|
|
1395
|
+
if (cast->equal_loc.length == 0) {
|
|
1396
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1397
|
+
} else {
|
|
1398
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1399
|
+
pm_serialize_location(&cast->equal_loc, buffer);
|
|
1400
|
+
}
|
|
1401
|
+
if (cast->end_keyword_loc.length == 0) {
|
|
1402
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1403
|
+
} else {
|
|
1404
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1405
|
+
pm_serialize_location(&cast->end_keyword_loc, buffer);
|
|
1406
|
+
}
|
|
1407
|
+
break;
|
|
1408
|
+
}
|
|
1409
|
+
case PM_DEFINED_NODE: {
|
|
1410
|
+
const pm_defined_node_t *cast = (const pm_defined_node_t *) node;
|
|
1411
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1412
|
+
if (cast->lparen_loc.length == 0) {
|
|
1413
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1414
|
+
} else {
|
|
1415
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1416
|
+
pm_serialize_location(&cast->lparen_loc, buffer);
|
|
1417
|
+
}
|
|
1418
|
+
if (cast->rparen_loc.length == 0) {
|
|
1419
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1420
|
+
} else {
|
|
1421
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1422
|
+
pm_serialize_location(&cast->rparen_loc, buffer);
|
|
1423
|
+
}
|
|
1424
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
1425
|
+
break;
|
|
1426
|
+
}
|
|
1427
|
+
case PM_ELSE_NODE: {
|
|
1428
|
+
const pm_else_node_t *cast = (const pm_else_node_t *) node;
|
|
1429
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1430
|
+
pm_serialize_location(&cast->else_keyword_loc, buffer);
|
|
1431
|
+
if (cast->end_keyword_loc.length == 0) {
|
|
1432
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1433
|
+
} else {
|
|
1434
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1435
|
+
pm_serialize_location(&cast->end_keyword_loc, buffer);
|
|
1436
|
+
}
|
|
1437
|
+
break;
|
|
1438
|
+
}
|
|
1439
|
+
case PM_EMBEDDED_STATEMENTS_NODE: {
|
|
1440
|
+
const pm_embedded_statements_node_t *cast = (const pm_embedded_statements_node_t *) node;
|
|
1441
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1442
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1443
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1444
|
+
break;
|
|
1445
|
+
}
|
|
1446
|
+
case PM_EMBEDDED_VARIABLE_NODE: {
|
|
1447
|
+
const pm_embedded_variable_node_t *cast = (const pm_embedded_variable_node_t *) node;
|
|
1448
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1449
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1450
|
+
break;
|
|
1451
|
+
}
|
|
1452
|
+
case PM_ENSURE_NODE: {
|
|
1453
|
+
const pm_ensure_node_t *cast = (const pm_ensure_node_t *) node;
|
|
1454
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1455
|
+
pm_serialize_location(&cast->ensure_keyword_loc, buffer);
|
|
1456
|
+
pm_serialize_location(&cast->end_keyword_loc, buffer);
|
|
1457
|
+
break;
|
|
1458
|
+
}
|
|
1459
|
+
case PM_ERROR_RECOVERY_NODE: {
|
|
1460
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1461
|
+
break;
|
|
1462
|
+
}
|
|
1463
|
+
case PM_FALSE_NODE: {
|
|
1464
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1465
|
+
break;
|
|
1466
|
+
}
|
|
1467
|
+
case PM_FIND_PATTERN_NODE: {
|
|
1468
|
+
const pm_find_pattern_node_t *cast = (const pm_find_pattern_node_t *) node;
|
|
1469
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1470
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->requireds.size));
|
|
1471
|
+
if (cast->opening_loc.length == 0) {
|
|
1472
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1473
|
+
} else {
|
|
1474
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1475
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1476
|
+
}
|
|
1477
|
+
if (cast->closing_loc.length == 0) {
|
|
1478
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1479
|
+
} else {
|
|
1480
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1481
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1482
|
+
}
|
|
1483
|
+
break;
|
|
1484
|
+
}
|
|
1485
|
+
case PM_FLIP_FLOP_NODE: {
|
|
1486
|
+
const pm_flip_flop_node_t *cast = (const pm_flip_flop_node_t *) node;
|
|
1487
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1488
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1489
|
+
break;
|
|
1490
|
+
}
|
|
1491
|
+
case PM_FLOAT_NODE: {
|
|
1492
|
+
const pm_float_node_t *cast = (const pm_float_node_t *) node;
|
|
1493
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1494
|
+
pm_buffer_append_double(buffer, cast->value);
|
|
1495
|
+
break;
|
|
1496
|
+
}
|
|
1497
|
+
case PM_FOR_NODE: {
|
|
1498
|
+
const pm_for_node_t *cast = (const pm_for_node_t *) node;
|
|
1499
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1500
|
+
pm_serialize_location(&cast->for_keyword_loc, buffer);
|
|
1501
|
+
pm_serialize_location(&cast->in_keyword_loc, buffer);
|
|
1502
|
+
if (cast->do_keyword_loc.length == 0) {
|
|
1503
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1504
|
+
} else {
|
|
1505
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1506
|
+
pm_serialize_location(&cast->do_keyword_loc, buffer);
|
|
1507
|
+
}
|
|
1508
|
+
pm_serialize_location(&cast->end_keyword_loc, buffer);
|
|
1509
|
+
break;
|
|
1510
|
+
}
|
|
1511
|
+
case PM_FORWARDING_ARGUMENTS_NODE: {
|
|
1512
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1513
|
+
break;
|
|
1514
|
+
}
|
|
1515
|
+
case PM_FORWARDING_PARAMETER_NODE: {
|
|
1516
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1517
|
+
break;
|
|
1518
|
+
}
|
|
1519
|
+
case PM_FORWARDING_SUPER_NODE: {
|
|
1520
|
+
const pm_forwarding_super_node_t *cast = (const pm_forwarding_super_node_t *) node;
|
|
1521
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1522
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
1523
|
+
break;
|
|
1524
|
+
}
|
|
1525
|
+
case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
|
|
1526
|
+
const pm_global_variable_and_write_node_t *cast = (const pm_global_variable_and_write_node_t *) node;
|
|
1527
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1528
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1529
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1530
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1531
|
+
break;
|
|
1532
|
+
}
|
|
1533
|
+
case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
1534
|
+
const pm_global_variable_operator_write_node_t *cast = (const pm_global_variable_operator_write_node_t *) node;
|
|
1535
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1536
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1537
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1538
|
+
pm_serialize_location(&cast->binary_operator_loc, buffer);
|
|
1539
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->binary_operator));
|
|
1540
|
+
break;
|
|
1541
|
+
}
|
|
1542
|
+
case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
|
|
1543
|
+
const pm_global_variable_or_write_node_t *cast = (const pm_global_variable_or_write_node_t *) node;
|
|
1544
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1545
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1546
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1547
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1548
|
+
break;
|
|
1549
|
+
}
|
|
1550
|
+
case PM_GLOBAL_VARIABLE_READ_NODE: {
|
|
1551
|
+
const pm_global_variable_read_node_t *cast = (const pm_global_variable_read_node_t *) node;
|
|
1552
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1553
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1554
|
+
break;
|
|
1555
|
+
}
|
|
1556
|
+
case PM_GLOBAL_VARIABLE_TARGET_NODE: {
|
|
1557
|
+
const pm_global_variable_target_node_t *cast = (const pm_global_variable_target_node_t *) node;
|
|
1558
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1559
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1560
|
+
break;
|
|
1561
|
+
}
|
|
1562
|
+
case PM_GLOBAL_VARIABLE_WRITE_NODE: {
|
|
1563
|
+
const pm_global_variable_write_node_t *cast = (const pm_global_variable_write_node_t *) node;
|
|
1564
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1565
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1566
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1567
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1568
|
+
break;
|
|
1569
|
+
}
|
|
1570
|
+
case PM_HASH_NODE: {
|
|
1571
|
+
const pm_hash_node_t *cast = (const pm_hash_node_t *) node;
|
|
1572
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1573
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1574
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->elements.size));
|
|
1575
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1576
|
+
break;
|
|
1577
|
+
}
|
|
1578
|
+
case PM_HASH_PATTERN_NODE: {
|
|
1579
|
+
const pm_hash_pattern_node_t *cast = (const pm_hash_pattern_node_t *) node;
|
|
1580
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1581
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->elements.size));
|
|
1582
|
+
if (cast->opening_loc.length == 0) {
|
|
1583
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1584
|
+
} else {
|
|
1585
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1586
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1587
|
+
}
|
|
1588
|
+
if (cast->closing_loc.length == 0) {
|
|
1589
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1590
|
+
} else {
|
|
1591
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1592
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1593
|
+
}
|
|
1594
|
+
break;
|
|
1595
|
+
}
|
|
1596
|
+
case PM_IF_NODE: {
|
|
1597
|
+
const pm_if_node_t *cast = (const pm_if_node_t *) node;
|
|
1598
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1599
|
+
if (cast->if_keyword_loc.length == 0) {
|
|
1600
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1601
|
+
} else {
|
|
1602
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1603
|
+
pm_serialize_location(&cast->if_keyword_loc, buffer);
|
|
1604
|
+
}
|
|
1605
|
+
if (cast->then_keyword_loc.length == 0) {
|
|
1606
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1607
|
+
} else {
|
|
1608
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1609
|
+
pm_serialize_location(&cast->then_keyword_loc, buffer);
|
|
1610
|
+
}
|
|
1611
|
+
if (cast->end_keyword_loc.length == 0) {
|
|
1612
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1613
|
+
} else {
|
|
1614
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1615
|
+
pm_serialize_location(&cast->end_keyword_loc, buffer);
|
|
1616
|
+
}
|
|
1617
|
+
break;
|
|
1618
|
+
}
|
|
1619
|
+
case PM_IMAGINARY_NODE: {
|
|
1620
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1621
|
+
break;
|
|
1622
|
+
}
|
|
1623
|
+
case PM_IMPLICIT_NODE: {
|
|
1624
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1625
|
+
break;
|
|
1626
|
+
}
|
|
1627
|
+
case PM_IMPLICIT_REST_NODE: {
|
|
1628
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1629
|
+
break;
|
|
1630
|
+
}
|
|
1631
|
+
case PM_IN_NODE: {
|
|
1632
|
+
const pm_in_node_t *cast = (const pm_in_node_t *) node;
|
|
1633
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1634
|
+
pm_serialize_location(&cast->in_keyword_loc, buffer);
|
|
1635
|
+
if (cast->then_keyword_loc.length == 0) {
|
|
1636
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1637
|
+
} else {
|
|
1638
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1639
|
+
pm_serialize_location(&cast->then_keyword_loc, buffer);
|
|
1640
|
+
}
|
|
1641
|
+
break;
|
|
1642
|
+
}
|
|
1643
|
+
case PM_INDEX_AND_WRITE_NODE: {
|
|
1644
|
+
const pm_index_and_write_node_t *cast = (const pm_index_and_write_node_t *) node;
|
|
1645
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1646
|
+
if (cast->call_operator_loc.length == 0) {
|
|
1647
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1648
|
+
} else {
|
|
1649
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1650
|
+
pm_serialize_location(&cast->call_operator_loc, buffer);
|
|
1651
|
+
}
|
|
1652
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1653
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1654
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1655
|
+
break;
|
|
1656
|
+
}
|
|
1657
|
+
case PM_INDEX_OPERATOR_WRITE_NODE: {
|
|
1658
|
+
const pm_index_operator_write_node_t *cast = (const pm_index_operator_write_node_t *) node;
|
|
1659
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1660
|
+
if (cast->call_operator_loc.length == 0) {
|
|
1661
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1662
|
+
} else {
|
|
1663
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1664
|
+
pm_serialize_location(&cast->call_operator_loc, buffer);
|
|
1665
|
+
}
|
|
1666
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1667
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1668
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->binary_operator));
|
|
1669
|
+
pm_serialize_location(&cast->binary_operator_loc, buffer);
|
|
1670
|
+
break;
|
|
1671
|
+
}
|
|
1672
|
+
case PM_INDEX_OR_WRITE_NODE: {
|
|
1673
|
+
const pm_index_or_write_node_t *cast = (const pm_index_or_write_node_t *) node;
|
|
1674
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1675
|
+
if (cast->call_operator_loc.length == 0) {
|
|
1676
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1677
|
+
} else {
|
|
1678
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1679
|
+
pm_serialize_location(&cast->call_operator_loc, buffer);
|
|
1680
|
+
}
|
|
1681
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1682
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1683
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1684
|
+
break;
|
|
1685
|
+
}
|
|
1686
|
+
case PM_INDEX_TARGET_NODE: {
|
|
1687
|
+
const pm_index_target_node_t *cast = (const pm_index_target_node_t *) node;
|
|
1688
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1689
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1690
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1691
|
+
break;
|
|
1692
|
+
}
|
|
1693
|
+
case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
|
|
1694
|
+
const pm_instance_variable_and_write_node_t *cast = (const pm_instance_variable_and_write_node_t *) node;
|
|
1695
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1696
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1697
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1698
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1699
|
+
break;
|
|
1700
|
+
}
|
|
1701
|
+
case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
1702
|
+
const pm_instance_variable_operator_write_node_t *cast = (const pm_instance_variable_operator_write_node_t *) node;
|
|
1703
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1704
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1705
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1706
|
+
pm_serialize_location(&cast->binary_operator_loc, buffer);
|
|
1707
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->binary_operator));
|
|
1708
|
+
break;
|
|
1709
|
+
}
|
|
1710
|
+
case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
|
|
1711
|
+
const pm_instance_variable_or_write_node_t *cast = (const pm_instance_variable_or_write_node_t *) node;
|
|
1712
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1713
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1714
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1715
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1716
|
+
break;
|
|
1717
|
+
}
|
|
1718
|
+
case PM_INSTANCE_VARIABLE_READ_NODE: {
|
|
1719
|
+
const pm_instance_variable_read_node_t *cast = (const pm_instance_variable_read_node_t *) node;
|
|
1720
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1721
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1722
|
+
break;
|
|
1723
|
+
}
|
|
1724
|
+
case PM_INSTANCE_VARIABLE_TARGET_NODE: {
|
|
1725
|
+
const pm_instance_variable_target_node_t *cast = (const pm_instance_variable_target_node_t *) node;
|
|
1726
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1727
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1728
|
+
break;
|
|
1729
|
+
}
|
|
1730
|
+
case PM_INSTANCE_VARIABLE_WRITE_NODE: {
|
|
1731
|
+
const pm_instance_variable_write_node_t *cast = (const pm_instance_variable_write_node_t *) node;
|
|
1732
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1733
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1734
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1735
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1736
|
+
break;
|
|
1737
|
+
}
|
|
1738
|
+
case PM_INTEGER_NODE: {
|
|
1739
|
+
const pm_integer_node_t *cast = (const pm_integer_node_t *) node;
|
|
1740
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1741
|
+
pm_serialize_integer(&cast->value, buffer);
|
|
1742
|
+
break;
|
|
1743
|
+
}
|
|
1744
|
+
case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
|
|
1745
|
+
const pm_interpolated_match_last_line_node_t *cast = (const pm_interpolated_match_last_line_node_t *) node;
|
|
1746
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1747
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1748
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->parts.size));
|
|
1749
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1750
|
+
break;
|
|
1751
|
+
}
|
|
1752
|
+
case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
|
|
1753
|
+
const pm_interpolated_regular_expression_node_t *cast = (const pm_interpolated_regular_expression_node_t *) node;
|
|
1754
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1755
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1756
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->parts.size));
|
|
1757
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1758
|
+
break;
|
|
1759
|
+
}
|
|
1760
|
+
case PM_INTERPOLATED_STRING_NODE: {
|
|
1761
|
+
const pm_interpolated_string_node_t *cast = (const pm_interpolated_string_node_t *) node;
|
|
1762
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1763
|
+
if (cast->opening_loc.length == 0) {
|
|
1764
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1765
|
+
} else {
|
|
1766
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1767
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1768
|
+
}
|
|
1769
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->parts.size));
|
|
1770
|
+
if (cast->closing_loc.length == 0) {
|
|
1771
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1772
|
+
} else {
|
|
1773
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1774
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1775
|
+
}
|
|
1776
|
+
break;
|
|
1777
|
+
}
|
|
1778
|
+
case PM_INTERPOLATED_SYMBOL_NODE: {
|
|
1779
|
+
const pm_interpolated_symbol_node_t *cast = (const pm_interpolated_symbol_node_t *) node;
|
|
1780
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1781
|
+
if (cast->opening_loc.length == 0) {
|
|
1782
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1783
|
+
} else {
|
|
1784
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1785
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1786
|
+
}
|
|
1787
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->parts.size));
|
|
1788
|
+
if (cast->closing_loc.length == 0) {
|
|
1789
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1790
|
+
} else {
|
|
1791
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1792
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1793
|
+
}
|
|
1794
|
+
break;
|
|
1795
|
+
}
|
|
1796
|
+
case PM_INTERPOLATED_X_STRING_NODE: {
|
|
1797
|
+
const pm_interpolated_x_string_node_t *cast = (const pm_interpolated_x_string_node_t *) node;
|
|
1798
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1799
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1800
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->parts.size));
|
|
1801
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1802
|
+
break;
|
|
1803
|
+
}
|
|
1804
|
+
case PM_IT_LOCAL_VARIABLE_READ_NODE: {
|
|
1805
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1806
|
+
break;
|
|
1807
|
+
}
|
|
1808
|
+
case PM_IT_PARAMETERS_NODE: {
|
|
1809
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1810
|
+
break;
|
|
1811
|
+
}
|
|
1812
|
+
case PM_KEYWORD_HASH_NODE: {
|
|
1813
|
+
const pm_keyword_hash_node_t *cast = (const pm_keyword_hash_node_t *) node;
|
|
1814
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1815
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->elements.size));
|
|
1816
|
+
break;
|
|
1817
|
+
}
|
|
1818
|
+
case PM_KEYWORD_REST_PARAMETER_NODE: {
|
|
1819
|
+
const pm_keyword_rest_parameter_node_t *cast = (const pm_keyword_rest_parameter_node_t *) node;
|
|
1820
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1821
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1822
|
+
if (cast->name_loc.length == 0) {
|
|
1823
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1824
|
+
} else {
|
|
1825
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1826
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1827
|
+
}
|
|
1828
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1829
|
+
break;
|
|
1830
|
+
}
|
|
1831
|
+
case PM_LAMBDA_NODE: {
|
|
1832
|
+
const pm_lambda_node_t *cast = (const pm_lambda_node_t *) node;
|
|
1833
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1834
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->locals.size));
|
|
1835
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
|
1836
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->locals.ids[index]));
|
|
1837
|
+
}
|
|
1838
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1839
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1840
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1841
|
+
break;
|
|
1842
|
+
}
|
|
1843
|
+
case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
|
|
1844
|
+
const pm_local_variable_and_write_node_t *cast = (const pm_local_variable_and_write_node_t *) node;
|
|
1845
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1846
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1847
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1848
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1849
|
+
pm_buffer_append_varuint(buffer, cast->depth);
|
|
1850
|
+
break;
|
|
1851
|
+
}
|
|
1852
|
+
case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
1853
|
+
const pm_local_variable_operator_write_node_t *cast = (const pm_local_variable_operator_write_node_t *) node;
|
|
1854
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1855
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1856
|
+
pm_serialize_location(&cast->binary_operator_loc, buffer);
|
|
1857
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1858
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->binary_operator));
|
|
1859
|
+
pm_buffer_append_varuint(buffer, cast->depth);
|
|
1860
|
+
break;
|
|
1861
|
+
}
|
|
1862
|
+
case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
|
|
1863
|
+
const pm_local_variable_or_write_node_t *cast = (const pm_local_variable_or_write_node_t *) node;
|
|
1864
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1865
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1866
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1867
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1868
|
+
pm_buffer_append_varuint(buffer, cast->depth);
|
|
1869
|
+
break;
|
|
1870
|
+
}
|
|
1871
|
+
case PM_LOCAL_VARIABLE_READ_NODE: {
|
|
1872
|
+
const pm_local_variable_read_node_t *cast = (const pm_local_variable_read_node_t *) node;
|
|
1873
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1874
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1875
|
+
pm_buffer_append_varuint(buffer, cast->depth);
|
|
1876
|
+
break;
|
|
1877
|
+
}
|
|
1878
|
+
case PM_LOCAL_VARIABLE_TARGET_NODE: {
|
|
1879
|
+
const pm_local_variable_target_node_t *cast = (const pm_local_variable_target_node_t *) node;
|
|
1880
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1881
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1882
|
+
pm_buffer_append_varuint(buffer, cast->depth);
|
|
1883
|
+
break;
|
|
1884
|
+
}
|
|
1885
|
+
case PM_LOCAL_VARIABLE_WRITE_NODE: {
|
|
1886
|
+
const pm_local_variable_write_node_t *cast = (const pm_local_variable_write_node_t *) node;
|
|
1887
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1888
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1889
|
+
pm_buffer_append_varuint(buffer, cast->depth);
|
|
1890
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
1891
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1892
|
+
break;
|
|
1893
|
+
}
|
|
1894
|
+
case PM_MATCH_LAST_LINE_NODE: {
|
|
1895
|
+
const pm_match_last_line_node_t *cast = (const pm_match_last_line_node_t *) node;
|
|
1896
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1897
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
1898
|
+
pm_serialize_location(&cast->content_loc, buffer);
|
|
1899
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
1900
|
+
pm_serialize_string(&cast->unescaped, buffer);
|
|
1901
|
+
break;
|
|
1902
|
+
}
|
|
1903
|
+
case PM_MATCH_PREDICATE_NODE: {
|
|
1904
|
+
const pm_match_predicate_node_t *cast = (const pm_match_predicate_node_t *) node;
|
|
1905
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1906
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
1907
|
+
break;
|
|
1908
|
+
}
|
|
1909
|
+
case PM_MATCH_REQUIRED_NODE: {
|
|
1910
|
+
const pm_match_required_node_t *cast = (const pm_match_required_node_t *) node;
|
|
1911
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1912
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1913
|
+
break;
|
|
1914
|
+
}
|
|
1915
|
+
case PM_MATCH_WRITE_NODE: {
|
|
1916
|
+
const pm_match_write_node_t *cast = (const pm_match_write_node_t *) node;
|
|
1917
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1918
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->targets.size));
|
|
1919
|
+
break;
|
|
1920
|
+
}
|
|
1921
|
+
case PM_MODULE_NODE: {
|
|
1922
|
+
const pm_module_node_t *cast = (const pm_module_node_t *) node;
|
|
1923
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1924
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->locals.size));
|
|
1925
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
|
1926
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->locals.ids[index]));
|
|
1927
|
+
}
|
|
1928
|
+
pm_serialize_location(&cast->module_keyword_loc, buffer);
|
|
1929
|
+
pm_serialize_location(&cast->end_keyword_loc, buffer);
|
|
1930
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
1931
|
+
break;
|
|
1932
|
+
}
|
|
1933
|
+
case PM_MULTI_TARGET_NODE: {
|
|
1934
|
+
const pm_multi_target_node_t *cast = (const pm_multi_target_node_t *) node;
|
|
1935
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1936
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->lefts.size));
|
|
1937
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->rights.size));
|
|
1938
|
+
if (cast->lparen_loc.length == 0) {
|
|
1939
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1940
|
+
} else {
|
|
1941
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1942
|
+
pm_serialize_location(&cast->lparen_loc, buffer);
|
|
1943
|
+
}
|
|
1944
|
+
if (cast->rparen_loc.length == 0) {
|
|
1945
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1946
|
+
} else {
|
|
1947
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1948
|
+
pm_serialize_location(&cast->rparen_loc, buffer);
|
|
1949
|
+
}
|
|
1950
|
+
break;
|
|
1951
|
+
}
|
|
1952
|
+
case PM_MULTI_WRITE_NODE: {
|
|
1953
|
+
const pm_multi_write_node_t *cast = (const pm_multi_write_node_t *) node;
|
|
1954
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1955
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->lefts.size));
|
|
1956
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->rights.size));
|
|
1957
|
+
if (cast->lparen_loc.length == 0) {
|
|
1958
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1959
|
+
} else {
|
|
1960
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1961
|
+
pm_serialize_location(&cast->lparen_loc, buffer);
|
|
1962
|
+
}
|
|
1963
|
+
if (cast->rparen_loc.length == 0) {
|
|
1964
|
+
pm_buffer_append_byte(buffer, 0);
|
|
1965
|
+
} else {
|
|
1966
|
+
pm_buffer_append_byte(buffer, 1);
|
|
1967
|
+
pm_serialize_location(&cast->rparen_loc, buffer);
|
|
1968
|
+
}
|
|
1969
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1970
|
+
break;
|
|
1971
|
+
}
|
|
1972
|
+
case PM_NEXT_NODE: {
|
|
1973
|
+
const pm_next_node_t *cast = (const pm_next_node_t *) node;
|
|
1974
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1975
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
1976
|
+
break;
|
|
1977
|
+
}
|
|
1978
|
+
case PM_NIL_NODE: {
|
|
1979
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1980
|
+
break;
|
|
1981
|
+
}
|
|
1982
|
+
case PM_NO_BLOCK_PARAMETER_NODE: {
|
|
1983
|
+
const pm_no_block_parameter_node_t *cast = (const pm_no_block_parameter_node_t *) node;
|
|
1984
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1985
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1986
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
1987
|
+
break;
|
|
1988
|
+
}
|
|
1989
|
+
case PM_NO_KEYWORDS_PARAMETER_NODE: {
|
|
1990
|
+
const pm_no_keywords_parameter_node_t *cast = (const pm_no_keywords_parameter_node_t *) node;
|
|
1991
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1992
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
1993
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
1994
|
+
break;
|
|
1995
|
+
}
|
|
1996
|
+
case PM_NUMBERED_PARAMETERS_NODE: {
|
|
1997
|
+
const pm_numbered_parameters_node_t *cast = (const pm_numbered_parameters_node_t *) node;
|
|
1998
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
1999
|
+
pm_buffer_append_byte(buffer, cast->maximum);
|
|
2000
|
+
break;
|
|
2001
|
+
}
|
|
2002
|
+
case PM_NUMBERED_REFERENCE_READ_NODE: {
|
|
2003
|
+
const pm_numbered_reference_read_node_t *cast = (const pm_numbered_reference_read_node_t *) node;
|
|
2004
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2005
|
+
pm_buffer_append_varuint(buffer, cast->number);
|
|
2006
|
+
break;
|
|
2007
|
+
}
|
|
2008
|
+
case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
|
|
2009
|
+
const pm_optional_keyword_parameter_node_t *cast = (const pm_optional_keyword_parameter_node_t *) node;
|
|
2010
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2011
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
2012
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
2013
|
+
break;
|
|
2014
|
+
}
|
|
2015
|
+
case PM_OPTIONAL_PARAMETER_NODE: {
|
|
2016
|
+
const pm_optional_parameter_node_t *cast = (const pm_optional_parameter_node_t *) node;
|
|
2017
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2018
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
2019
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
2020
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
2021
|
+
break;
|
|
2022
|
+
}
|
|
2023
|
+
case PM_OR_NODE: {
|
|
2024
|
+
const pm_or_node_t *cast = (const pm_or_node_t *) node;
|
|
2025
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2026
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
2027
|
+
break;
|
|
2028
|
+
}
|
|
2029
|
+
case PM_PARAMETERS_NODE: {
|
|
2030
|
+
const pm_parameters_node_t *cast = (const pm_parameters_node_t *) node;
|
|
2031
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2032
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->requireds.size));
|
|
2033
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->optionals.size));
|
|
2034
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->posts.size));
|
|
2035
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->keywords.size));
|
|
2036
|
+
break;
|
|
2037
|
+
}
|
|
2038
|
+
case PM_PARENTHESES_NODE: {
|
|
2039
|
+
const pm_parentheses_node_t *cast = (const pm_parentheses_node_t *) node;
|
|
2040
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2041
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
2042
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
2043
|
+
break;
|
|
2044
|
+
}
|
|
2045
|
+
case PM_PINNED_EXPRESSION_NODE: {
|
|
2046
|
+
const pm_pinned_expression_node_t *cast = (const pm_pinned_expression_node_t *) node;
|
|
2047
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2048
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
2049
|
+
pm_serialize_location(&cast->lparen_loc, buffer);
|
|
2050
|
+
pm_serialize_location(&cast->rparen_loc, buffer);
|
|
2051
|
+
break;
|
|
2052
|
+
}
|
|
2053
|
+
case PM_PINNED_VARIABLE_NODE: {
|
|
2054
|
+
const pm_pinned_variable_node_t *cast = (const pm_pinned_variable_node_t *) node;
|
|
2055
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2056
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
2057
|
+
break;
|
|
2058
|
+
}
|
|
2059
|
+
case PM_POST_EXECUTION_NODE: {
|
|
2060
|
+
const pm_post_execution_node_t *cast = (const pm_post_execution_node_t *) node;
|
|
2061
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2062
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
2063
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
2064
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
2065
|
+
break;
|
|
2066
|
+
}
|
|
2067
|
+
case PM_PRE_EXECUTION_NODE: {
|
|
2068
|
+
const pm_pre_execution_node_t *cast = (const pm_pre_execution_node_t *) node;
|
|
2069
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2070
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
2071
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
2072
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
2073
|
+
break;
|
|
2074
|
+
}
|
|
2075
|
+
case PM_PROGRAM_NODE: {
|
|
2076
|
+
const pm_program_node_t *cast = (const pm_program_node_t *) node;
|
|
2077
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2078
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->locals.size));
|
|
2079
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
|
2080
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->locals.ids[index]));
|
|
2081
|
+
}
|
|
2082
|
+
break;
|
|
2083
|
+
}
|
|
2084
|
+
case PM_RANGE_NODE: {
|
|
2085
|
+
const pm_range_node_t *cast = (const pm_range_node_t *) node;
|
|
2086
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2087
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
2088
|
+
break;
|
|
2089
|
+
}
|
|
2090
|
+
case PM_RATIONAL_NODE: {
|
|
2091
|
+
const pm_rational_node_t *cast = (const pm_rational_node_t *) node;
|
|
2092
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2093
|
+
pm_serialize_integer(&cast->numerator, buffer);
|
|
2094
|
+
pm_serialize_integer(&cast->denominator, buffer);
|
|
2095
|
+
break;
|
|
2096
|
+
}
|
|
2097
|
+
case PM_REDO_NODE: {
|
|
2098
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2099
|
+
break;
|
|
2100
|
+
}
|
|
2101
|
+
case PM_REGULAR_EXPRESSION_NODE: {
|
|
2102
|
+
const pm_regular_expression_node_t *cast = (const pm_regular_expression_node_t *) node;
|
|
2103
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2104
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
2105
|
+
pm_serialize_location(&cast->content_loc, buffer);
|
|
2106
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
2107
|
+
pm_serialize_string(&cast->unescaped, buffer);
|
|
2108
|
+
break;
|
|
2109
|
+
}
|
|
2110
|
+
case PM_REQUIRED_KEYWORD_PARAMETER_NODE: {
|
|
2111
|
+
const pm_required_keyword_parameter_node_t *cast = (const pm_required_keyword_parameter_node_t *) node;
|
|
2112
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2113
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
2114
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
2115
|
+
break;
|
|
2116
|
+
}
|
|
2117
|
+
case PM_REQUIRED_PARAMETER_NODE: {
|
|
2118
|
+
const pm_required_parameter_node_t *cast = (const pm_required_parameter_node_t *) node;
|
|
2119
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2120
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
2121
|
+
break;
|
|
2122
|
+
}
|
|
2123
|
+
case PM_RESCUE_MODIFIER_NODE: {
|
|
2124
|
+
const pm_rescue_modifier_node_t *cast = (const pm_rescue_modifier_node_t *) node;
|
|
2125
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2126
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
2127
|
+
break;
|
|
2128
|
+
}
|
|
2129
|
+
case PM_RESCUE_NODE: {
|
|
2130
|
+
const pm_rescue_node_t *cast = (const pm_rescue_node_t *) node;
|
|
2131
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2132
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
2133
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->exceptions.size));
|
|
2134
|
+
if (cast->operator_loc.length == 0) {
|
|
2135
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2136
|
+
} else {
|
|
2137
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2138
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
2139
|
+
}
|
|
2140
|
+
if (cast->then_keyword_loc.length == 0) {
|
|
2141
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2142
|
+
} else {
|
|
2143
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2144
|
+
pm_serialize_location(&cast->then_keyword_loc, buffer);
|
|
2145
|
+
}
|
|
2146
|
+
break;
|
|
2147
|
+
}
|
|
2148
|
+
case PM_REST_PARAMETER_NODE: {
|
|
2149
|
+
const pm_rest_parameter_node_t *cast = (const pm_rest_parameter_node_t *) node;
|
|
2150
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2151
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->name));
|
|
2152
|
+
if (cast->name_loc.length == 0) {
|
|
2153
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2154
|
+
} else {
|
|
2155
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2156
|
+
pm_serialize_location(&cast->name_loc, buffer);
|
|
2157
|
+
}
|
|
2158
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
2159
|
+
break;
|
|
2160
|
+
}
|
|
2161
|
+
case PM_RETRY_NODE: {
|
|
2162
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2163
|
+
break;
|
|
2164
|
+
}
|
|
2165
|
+
case PM_RETURN_NODE: {
|
|
2166
|
+
const pm_return_node_t *cast = (const pm_return_node_t *) node;
|
|
2167
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2168
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
2169
|
+
break;
|
|
2170
|
+
}
|
|
2171
|
+
case PM_SELF_NODE: {
|
|
2172
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2173
|
+
break;
|
|
2174
|
+
}
|
|
2175
|
+
case PM_SHAREABLE_CONSTANT_NODE: {
|
|
2176
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2177
|
+
break;
|
|
2178
|
+
}
|
|
2179
|
+
case PM_SINGLETON_CLASS_NODE: {
|
|
2180
|
+
const pm_singleton_class_node_t *cast = (const pm_singleton_class_node_t *) node;
|
|
2181
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2182
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->locals.size));
|
|
2183
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
|
2184
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->locals.ids[index]));
|
|
2185
|
+
}
|
|
2186
|
+
pm_serialize_location(&cast->class_keyword_loc, buffer);
|
|
2187
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
2188
|
+
pm_serialize_location(&cast->end_keyword_loc, buffer);
|
|
2189
|
+
break;
|
|
2190
|
+
}
|
|
2191
|
+
case PM_SOURCE_ENCODING_NODE: {
|
|
2192
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2193
|
+
break;
|
|
2194
|
+
}
|
|
2195
|
+
case PM_SOURCE_FILE_NODE: {
|
|
2196
|
+
const pm_source_file_node_t *cast = (const pm_source_file_node_t *) node;
|
|
2197
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2198
|
+
pm_serialize_string(&cast->filepath, buffer);
|
|
2199
|
+
break;
|
|
2200
|
+
}
|
|
2201
|
+
case PM_SOURCE_LINE_NODE: {
|
|
2202
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2203
|
+
break;
|
|
2204
|
+
}
|
|
2205
|
+
case PM_SPLAT_NODE: {
|
|
2206
|
+
const pm_splat_node_t *cast = (const pm_splat_node_t *) node;
|
|
2207
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2208
|
+
pm_serialize_location(&cast->operator_loc, buffer);
|
|
2209
|
+
break;
|
|
2210
|
+
}
|
|
2211
|
+
case PM_STATEMENTS_NODE: {
|
|
2212
|
+
const pm_statements_node_t *cast = (const pm_statements_node_t *) node;
|
|
2213
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2214
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->body.size));
|
|
2215
|
+
break;
|
|
2216
|
+
}
|
|
2217
|
+
case PM_STRING_NODE: {
|
|
2218
|
+
const pm_string_node_t *cast = (const pm_string_node_t *) node;
|
|
2219
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2220
|
+
if (cast->opening_loc.length == 0) {
|
|
2221
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2222
|
+
} else {
|
|
2223
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2224
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
2225
|
+
}
|
|
2226
|
+
pm_serialize_location(&cast->content_loc, buffer);
|
|
2227
|
+
if (cast->closing_loc.length == 0) {
|
|
2228
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2229
|
+
} else {
|
|
2230
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2231
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
2232
|
+
}
|
|
2233
|
+
pm_serialize_string(&cast->unescaped, buffer);
|
|
2234
|
+
break;
|
|
2235
|
+
}
|
|
2236
|
+
case PM_SUPER_NODE: {
|
|
2237
|
+
const pm_super_node_t *cast = (const pm_super_node_t *) node;
|
|
2238
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2239
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
2240
|
+
if (cast->lparen_loc.length == 0) {
|
|
2241
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2242
|
+
} else {
|
|
2243
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2244
|
+
pm_serialize_location(&cast->lparen_loc, buffer);
|
|
2245
|
+
}
|
|
2246
|
+
if (cast->rparen_loc.length == 0) {
|
|
2247
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2248
|
+
} else {
|
|
2249
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2250
|
+
pm_serialize_location(&cast->rparen_loc, buffer);
|
|
2251
|
+
}
|
|
2252
|
+
break;
|
|
2253
|
+
}
|
|
2254
|
+
case PM_SYMBOL_NODE: {
|
|
2255
|
+
const pm_symbol_node_t *cast = (const pm_symbol_node_t *) node;
|
|
2256
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2257
|
+
if (cast->opening_loc.length == 0) {
|
|
2258
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2259
|
+
} else {
|
|
2260
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2261
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
2262
|
+
}
|
|
2263
|
+
pm_serialize_location(&cast->content_loc, buffer);
|
|
2264
|
+
if (cast->closing_loc.length == 0) {
|
|
2265
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2266
|
+
} else {
|
|
2267
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2268
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
2269
|
+
}
|
|
2270
|
+
pm_serialize_string(&cast->unescaped, buffer);
|
|
2271
|
+
break;
|
|
2272
|
+
}
|
|
2273
|
+
case PM_TRUE_NODE: {
|
|
2274
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2275
|
+
break;
|
|
2276
|
+
}
|
|
2277
|
+
case PM_UNDEF_NODE: {
|
|
2278
|
+
const pm_undef_node_t *cast = (const pm_undef_node_t *) node;
|
|
2279
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2280
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->names.size));
|
|
2281
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
2282
|
+
break;
|
|
2283
|
+
}
|
|
2284
|
+
case PM_UNLESS_NODE: {
|
|
2285
|
+
const pm_unless_node_t *cast = (const pm_unless_node_t *) node;
|
|
2286
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2287
|
+
pm_serialize_location(&cast->unless_keyword_loc, buffer);
|
|
2288
|
+
if (cast->then_keyword_loc.length == 0) {
|
|
2289
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2290
|
+
} else {
|
|
2291
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2292
|
+
pm_serialize_location(&cast->then_keyword_loc, buffer);
|
|
2293
|
+
}
|
|
2294
|
+
if (cast->end_keyword_loc.length == 0) {
|
|
2295
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2296
|
+
} else {
|
|
2297
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2298
|
+
pm_serialize_location(&cast->end_keyword_loc, buffer);
|
|
2299
|
+
}
|
|
2300
|
+
break;
|
|
2301
|
+
}
|
|
2302
|
+
case PM_UNTIL_NODE: {
|
|
2303
|
+
const pm_until_node_t *cast = (const pm_until_node_t *) node;
|
|
2304
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2305
|
+
pm_serialize_location(&cast->until_keyword_loc, buffer);
|
|
2306
|
+
if (cast->do_keyword_loc.length == 0) {
|
|
2307
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2308
|
+
} else {
|
|
2309
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2310
|
+
pm_serialize_location(&cast->do_keyword_loc, buffer);
|
|
2311
|
+
}
|
|
2312
|
+
if (cast->end_keyword_loc.length == 0) {
|
|
2313
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2314
|
+
} else {
|
|
2315
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2316
|
+
pm_serialize_location(&cast->end_keyword_loc, buffer);
|
|
2317
|
+
}
|
|
2318
|
+
break;
|
|
2319
|
+
}
|
|
2320
|
+
case PM_WHEN_NODE: {
|
|
2321
|
+
const pm_when_node_t *cast = (const pm_when_node_t *) node;
|
|
2322
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2323
|
+
pm_serialize_location(&cast->when_keyword_loc, buffer);
|
|
2324
|
+
pm_buffer_append_varuint(buffer, pm_sizet_to_u32(cast->conditions.size));
|
|
2325
|
+
if (cast->then_keyword_loc.length == 0) {
|
|
2326
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2327
|
+
} else {
|
|
2328
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2329
|
+
pm_serialize_location(&cast->then_keyword_loc, buffer);
|
|
2330
|
+
}
|
|
2331
|
+
break;
|
|
2332
|
+
}
|
|
2333
|
+
case PM_WHILE_NODE: {
|
|
2334
|
+
const pm_while_node_t *cast = (const pm_while_node_t *) node;
|
|
2335
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2336
|
+
pm_serialize_location(&cast->while_keyword_loc, buffer);
|
|
2337
|
+
if (cast->do_keyword_loc.length == 0) {
|
|
2338
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2339
|
+
} else {
|
|
2340
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2341
|
+
pm_serialize_location(&cast->do_keyword_loc, buffer);
|
|
2342
|
+
}
|
|
2343
|
+
if (cast->end_keyword_loc.length == 0) {
|
|
2344
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2345
|
+
} else {
|
|
2346
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2347
|
+
pm_serialize_location(&cast->end_keyword_loc, buffer);
|
|
2348
|
+
}
|
|
2349
|
+
break;
|
|
2350
|
+
}
|
|
2351
|
+
case PM_X_STRING_NODE: {
|
|
2352
|
+
const pm_x_string_node_t *cast = (const pm_x_string_node_t *) node;
|
|
2353
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2354
|
+
pm_serialize_location(&cast->opening_loc, buffer);
|
|
2355
|
+
pm_serialize_location(&cast->content_loc, buffer);
|
|
2356
|
+
pm_serialize_location(&cast->closing_loc, buffer);
|
|
2357
|
+
pm_serialize_string(&cast->unescaped, buffer);
|
|
2358
|
+
break;
|
|
2359
|
+
}
|
|
2360
|
+
case PM_YIELD_NODE: {
|
|
2361
|
+
const pm_yield_node_t *cast = (const pm_yield_node_t *) node;
|
|
2362
|
+
pm_buffer_append_varuint(buffer, (uint32_t) node->flags);
|
|
2363
|
+
pm_serialize_location(&cast->keyword_loc, buffer);
|
|
2364
|
+
if (cast->lparen_loc.length == 0) {
|
|
2365
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2366
|
+
} else {
|
|
2367
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2368
|
+
pm_serialize_location(&cast->lparen_loc, buffer);
|
|
2369
|
+
}
|
|
2370
|
+
if (cast->rparen_loc.length == 0) {
|
|
2371
|
+
pm_buffer_append_byte(buffer, 0);
|
|
2372
|
+
} else {
|
|
2373
|
+
pm_buffer_append_byte(buffer, 1);
|
|
2374
|
+
pm_serialize_location(&cast->rparen_loc, buffer);
|
|
2375
|
+
}
|
|
2376
|
+
break;
|
|
2377
|
+
}
|
|
2030
2378
|
}
|
|
2031
2379
|
}
|
|
2380
|
+
|
|
2381
|
+
xfree_sized(stack.entries, stack.capacity * sizeof(pm_serialize_entry_t));
|
|
2032
2382
|
}
|
|
2033
2383
|
|
|
2034
2384
|
/*
|
|
@@ -2177,7 +2527,7 @@ pm_serialize_metadata(pm_parser_t *parser, pm_buffer_t *buffer) {
|
|
|
2177
2527
|
pm_buffer_append_byte(buffer, (uint8_t) parser->continuable);
|
|
2178
2528
|
}
|
|
2179
2529
|
|
|
2180
|
-
#line
|
|
2530
|
+
#line 463 "prism/templates/src/serialize.c.erb"
|
|
2181
2531
|
/**
|
|
2182
2532
|
* Serialize the metadata, nodes, and constant pool.
|
|
2183
2533
|
*/
|
|
@@ -2194,7 +2544,7 @@ pm_serialize_content(pm_parser_t *parser, pm_node_t *node, pm_buffer_t *buffer)
|
|
|
2194
2544
|
pm_buffer_append_varuint(buffer, parser->constant_pool.size);
|
|
2195
2545
|
|
|
2196
2546
|
// Now we're going to serialize the content of the node.
|
|
2197
|
-
pm_serialize_node(
|
|
2547
|
+
pm_serialize_node(node, buffer);
|
|
2198
2548
|
|
|
2199
2549
|
// Now we're going to serialize the offset of the constant pool back where
|
|
2200
2550
|
// we left space for it.
|