yarp 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +39 -1
- data/CONTRIBUTING.md +7 -0
- data/Makefile +5 -1
- data/config.yml +308 -166
- data/docs/configuration.md +0 -1
- data/docs/encoding.md +5 -5
- data/docs/mapping.md +91 -91
- data/docs/serialization.md +25 -22
- data/ext/yarp/api_node.c +1210 -483
- data/ext/yarp/extension.c +22 -8
- data/ext/yarp/extension.h +2 -2
- data/include/yarp/ast.h +692 -183
- data/include/yarp/defines.h +2 -1
- data/include/yarp/diagnostic.h +200 -3
- data/include/yarp/enc/yp_encoding.h +10 -10
- data/include/yarp/node.h +0 -4
- data/include/yarp/parser.h +19 -19
- data/include/yarp/regexp.h +1 -1
- data/include/yarp/unescape.h +4 -4
- data/include/yarp/util/yp_buffer.h +3 -0
- data/include/yarp/util/yp_char.h +16 -16
- data/include/yarp/util/yp_constant_pool.h +12 -5
- data/include/yarp/util/yp_newline_list.h +5 -5
- data/include/yarp/util/yp_string.h +4 -4
- data/include/yarp/util/yp_string_list.h +0 -3
- data/include/yarp/util/yp_strpbrk.h +1 -1
- data/include/yarp/version.h +2 -2
- data/include/yarp.h +5 -4
- data/lib/yarp/desugar_visitor.rb +59 -122
- data/lib/yarp/mutation_visitor.rb +22 -12
- data/lib/yarp/node.rb +3081 -501
- data/lib/yarp/parse_result/comments.rb +172 -0
- data/lib/yarp/parse_result/newlines.rb +60 -0
- data/lib/yarp/pattern.rb +239 -0
- data/lib/yarp/serialize.rb +152 -129
- data/lib/yarp.rb +109 -49
- data/src/diagnostic.c +254 -2
- data/src/enc/yp_big5.c +15 -42
- data/src/enc/yp_euc_jp.c +16 -43
- data/src/enc/yp_gbk.c +19 -46
- data/src/enc/yp_shift_jis.c +16 -43
- data/src/enc/yp_tables.c +36 -38
- data/src/enc/yp_unicode.c +20 -25
- data/src/enc/yp_windows_31j.c +16 -43
- data/src/node.c +1871 -1466
- data/src/prettyprint.c +463 -230
- data/src/regexp.c +21 -21
- data/src/serialize.c +352 -184
- data/src/unescape.c +152 -122
- data/src/util/yp_buffer.c +7 -2
- data/src/util/yp_char.c +35 -40
- data/src/util/yp_constant_pool.c +45 -12
- data/src/util/yp_memchr.c +1 -1
- data/src/util/yp_newline_list.c +10 -5
- data/src/util/yp_string.c +22 -20
- data/src/util/yp_string_list.c +4 -7
- data/src/util/yp_strncasecmp.c +3 -6
- data/src/util/yp_strpbrk.c +8 -8
- data/src/yarp.c +1288 -1021
- data/yarp.gemspec +4 -1
- metadata +6 -3
data/src/serialize.c
CHANGED
@@ -45,7 +45,7 @@ yp_serialize_string(yp_parser_t *parser, yp_string_t *string, yp_buffer_t *buffe
|
|
45
45
|
uint32_t length = yp_sizet_to_u32(yp_string_length(string));
|
46
46
|
yp_buffer_append_u8(buffer, 2);
|
47
47
|
yp_buffer_append_u32(buffer, length);
|
48
|
-
|
48
|
+
yp_buffer_append_bytes(buffer, yp_string_source(string), length);
|
49
49
|
break;
|
50
50
|
}
|
51
51
|
case YP_STRING_MAPPED:
|
@@ -65,27 +65,27 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
65
65
|
switch (YP_NODE_TYPE(node)) {
|
66
66
|
// We do not need to serialize a ScopeNode ever as
|
67
67
|
// it is not part of the AST
|
68
|
-
case
|
68
|
+
case YP_SCOPE_NODE:
|
69
69
|
return;
|
70
|
-
case
|
70
|
+
case YP_ALIAS_NODE: {
|
71
71
|
yp_serialize_node(parser, (yp_node_t *)((yp_alias_node_t *)node)->new_name, buffer);
|
72
72
|
yp_serialize_node(parser, (yp_node_t *)((yp_alias_node_t *)node)->old_name, buffer);
|
73
73
|
yp_serialize_location(parser, &((yp_alias_node_t *)node)->keyword_loc, buffer);
|
74
74
|
break;
|
75
75
|
}
|
76
|
-
case
|
76
|
+
case YP_ALTERNATION_PATTERN_NODE: {
|
77
77
|
yp_serialize_node(parser, (yp_node_t *)((yp_alternation_pattern_node_t *)node)->left, buffer);
|
78
78
|
yp_serialize_node(parser, (yp_node_t *)((yp_alternation_pattern_node_t *)node)->right, buffer);
|
79
79
|
yp_serialize_location(parser, &((yp_alternation_pattern_node_t *)node)->operator_loc, buffer);
|
80
80
|
break;
|
81
81
|
}
|
82
|
-
case
|
82
|
+
case YP_AND_NODE: {
|
83
83
|
yp_serialize_node(parser, (yp_node_t *)((yp_and_node_t *)node)->left, buffer);
|
84
84
|
yp_serialize_node(parser, (yp_node_t *)((yp_and_node_t *)node)->right, buffer);
|
85
85
|
yp_serialize_location(parser, &((yp_and_node_t *)node)->operator_loc, buffer);
|
86
86
|
break;
|
87
87
|
}
|
88
|
-
case
|
88
|
+
case YP_ARGUMENTS_NODE: {
|
89
89
|
uint32_t arguments_size = yp_sizet_to_u32(((yp_arguments_node_t *)node)->arguments.size);
|
90
90
|
yp_buffer_append_u32(buffer, arguments_size);
|
91
91
|
for (uint32_t index = 0; index < arguments_size; index++) {
|
@@ -93,7 +93,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
93
93
|
}
|
94
94
|
break;
|
95
95
|
}
|
96
|
-
case
|
96
|
+
case YP_ARRAY_NODE: {
|
97
97
|
uint32_t elements_size = yp_sizet_to_u32(((yp_array_node_t *)node)->elements.size);
|
98
98
|
yp_buffer_append_u32(buffer, elements_size);
|
99
99
|
for (uint32_t index = 0; index < elements_size; index++) {
|
@@ -113,7 +113,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
113
113
|
}
|
114
114
|
break;
|
115
115
|
}
|
116
|
-
case
|
116
|
+
case YP_ARRAY_PATTERN_NODE: {
|
117
117
|
if (((yp_array_pattern_node_t *)node)->constant == NULL) {
|
118
118
|
yp_buffer_append_u8(buffer, 0);
|
119
119
|
} else {
|
@@ -148,7 +148,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
148
148
|
}
|
149
149
|
break;
|
150
150
|
}
|
151
|
-
case
|
151
|
+
case YP_ASSOC_NODE: {
|
152
152
|
yp_serialize_node(parser, (yp_node_t *)((yp_assoc_node_t *)node)->key, buffer);
|
153
153
|
if (((yp_assoc_node_t *)node)->value == NULL) {
|
154
154
|
yp_buffer_append_u8(buffer, 0);
|
@@ -163,7 +163,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
163
163
|
}
|
164
164
|
break;
|
165
165
|
}
|
166
|
-
case
|
166
|
+
case YP_ASSOC_SPLAT_NODE: {
|
167
167
|
if (((yp_assoc_splat_node_t *)node)->value == NULL) {
|
168
168
|
yp_buffer_append_u8(buffer, 0);
|
169
169
|
} else {
|
@@ -172,10 +172,10 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
172
172
|
yp_serialize_location(parser, &((yp_assoc_splat_node_t *)node)->operator_loc, buffer);
|
173
173
|
break;
|
174
174
|
}
|
175
|
-
case
|
175
|
+
case YP_BACK_REFERENCE_READ_NODE: {
|
176
176
|
break;
|
177
177
|
}
|
178
|
-
case
|
178
|
+
case YP_BEGIN_NODE: {
|
179
179
|
if (((yp_begin_node_t *)node)->begin_keyword_loc.start == NULL) {
|
180
180
|
yp_buffer_append_u8(buffer, 0);
|
181
181
|
} else {
|
@@ -210,7 +210,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
210
210
|
}
|
211
211
|
break;
|
212
212
|
}
|
213
|
-
case
|
213
|
+
case YP_BLOCK_ARGUMENT_NODE: {
|
214
214
|
if (((yp_block_argument_node_t *)node)->expression == NULL) {
|
215
215
|
yp_buffer_append_u8(buffer, 0);
|
216
216
|
} else {
|
@@ -219,7 +219,11 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
219
219
|
yp_serialize_location(parser, &((yp_block_argument_node_t *)node)->operator_loc, buffer);
|
220
220
|
break;
|
221
221
|
}
|
222
|
-
case
|
222
|
+
case YP_BLOCK_LOCAL_VARIABLE_NODE: {
|
223
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_block_local_variable_node_t *)node)->name));
|
224
|
+
break;
|
225
|
+
}
|
226
|
+
case YP_BLOCK_NODE: {
|
223
227
|
uint32_t locals_size = yp_sizet_to_u32(((yp_block_node_t *)node)->locals.size);
|
224
228
|
yp_buffer_append_u32(buffer, locals_size);
|
225
229
|
for (uint32_t index = 0; index < locals_size; index++) {
|
@@ -239,7 +243,8 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
239
243
|
yp_serialize_location(parser, &((yp_block_node_t *)node)->closing_loc, buffer);
|
240
244
|
break;
|
241
245
|
}
|
242
|
-
case
|
246
|
+
case YP_BLOCK_PARAMETER_NODE: {
|
247
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_block_parameter_node_t *)node)->name));
|
243
248
|
if (((yp_block_parameter_node_t *)node)->name_loc.start == NULL) {
|
244
249
|
yp_buffer_append_u8(buffer, 0);
|
245
250
|
} else {
|
@@ -249,7 +254,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
249
254
|
yp_serialize_location(parser, &((yp_block_parameter_node_t *)node)->operator_loc, buffer);
|
250
255
|
break;
|
251
256
|
}
|
252
|
-
case
|
257
|
+
case YP_BLOCK_PARAMETERS_NODE: {
|
253
258
|
if (((yp_block_parameters_node_t *)node)->parameters == NULL) {
|
254
259
|
yp_buffer_append_u8(buffer, 0);
|
255
260
|
} else {
|
@@ -258,7 +263,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
258
263
|
uint32_t locals_size = yp_sizet_to_u32(((yp_block_parameters_node_t *)node)->locals.size);
|
259
264
|
yp_buffer_append_u32(buffer, locals_size);
|
260
265
|
for (uint32_t index = 0; index < locals_size; index++) {
|
261
|
-
|
266
|
+
yp_serialize_node(parser, (yp_node_t *) ((yp_block_parameters_node_t *)node)->locals.nodes[index], buffer);
|
262
267
|
}
|
263
268
|
if (((yp_block_parameters_node_t *)node)->opening_loc.start == NULL) {
|
264
269
|
yp_buffer_append_u8(buffer, 0);
|
@@ -274,7 +279,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
274
279
|
}
|
275
280
|
break;
|
276
281
|
}
|
277
|
-
case
|
282
|
+
case YP_BREAK_NODE: {
|
278
283
|
if (((yp_break_node_t *)node)->arguments == NULL) {
|
279
284
|
yp_buffer_append_u8(buffer, 0);
|
280
285
|
} else {
|
@@ -283,17 +288,59 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
283
288
|
yp_serialize_location(parser, &((yp_break_node_t *)node)->keyword_loc, buffer);
|
284
289
|
break;
|
285
290
|
}
|
286
|
-
case
|
291
|
+
case YP_CALL_AND_WRITE_NODE: {
|
292
|
+
if (((yp_call_and_write_node_t *)node)->receiver == NULL) {
|
293
|
+
yp_buffer_append_u8(buffer, 0);
|
294
|
+
} else {
|
295
|
+
yp_serialize_node(parser, (yp_node_t *)((yp_call_and_write_node_t *)node)->receiver, buffer);
|
296
|
+
}
|
297
|
+
if (((yp_call_and_write_node_t *)node)->call_operator_loc.start == NULL) {
|
298
|
+
yp_buffer_append_u8(buffer, 0);
|
299
|
+
} else {
|
300
|
+
yp_buffer_append_u8(buffer, 1);
|
301
|
+
yp_serialize_location(parser, &((yp_call_and_write_node_t *)node)->call_operator_loc, buffer);
|
302
|
+
}
|
303
|
+
if (((yp_call_and_write_node_t *)node)->message_loc.start == NULL) {
|
304
|
+
yp_buffer_append_u8(buffer, 0);
|
305
|
+
} else {
|
306
|
+
yp_buffer_append_u8(buffer, 1);
|
307
|
+
yp_serialize_location(parser, &((yp_call_and_write_node_t *)node)->message_loc, buffer);
|
308
|
+
}
|
309
|
+
if (((yp_call_and_write_node_t *)node)->opening_loc.start == NULL) {
|
310
|
+
yp_buffer_append_u8(buffer, 0);
|
311
|
+
} else {
|
312
|
+
yp_buffer_append_u8(buffer, 1);
|
313
|
+
yp_serialize_location(parser, &((yp_call_and_write_node_t *)node)->opening_loc, buffer);
|
314
|
+
}
|
315
|
+
if (((yp_call_and_write_node_t *)node)->arguments == NULL) {
|
316
|
+
yp_buffer_append_u8(buffer, 0);
|
317
|
+
} else {
|
318
|
+
yp_serialize_node(parser, (yp_node_t *)((yp_call_and_write_node_t *)node)->arguments, buffer);
|
319
|
+
}
|
320
|
+
if (((yp_call_and_write_node_t *)node)->closing_loc.start == NULL) {
|
321
|
+
yp_buffer_append_u8(buffer, 0);
|
322
|
+
} else {
|
323
|
+
yp_buffer_append_u8(buffer, 1);
|
324
|
+
yp_serialize_location(parser, &((yp_call_and_write_node_t *)node)->closing_loc, buffer);
|
325
|
+
}
|
326
|
+
yp_buffer_append_u32(buffer, node->flags >> 1);
|
327
|
+
yp_serialize_string(parser, &((yp_call_and_write_node_t *)node)->read_name, buffer);
|
328
|
+
yp_serialize_string(parser, &((yp_call_and_write_node_t *)node)->write_name, buffer);
|
329
|
+
yp_serialize_location(parser, &((yp_call_and_write_node_t *)node)->operator_loc, buffer);
|
330
|
+
yp_serialize_node(parser, (yp_node_t *)((yp_call_and_write_node_t *)node)->value, buffer);
|
331
|
+
break;
|
332
|
+
}
|
333
|
+
case YP_CALL_NODE: {
|
287
334
|
if (((yp_call_node_t *)node)->receiver == NULL) {
|
288
335
|
yp_buffer_append_u8(buffer, 0);
|
289
336
|
} else {
|
290
337
|
yp_serialize_node(parser, (yp_node_t *)((yp_call_node_t *)node)->receiver, buffer);
|
291
338
|
}
|
292
|
-
if (((yp_call_node_t *)node)->
|
339
|
+
if (((yp_call_node_t *)node)->call_operator_loc.start == NULL) {
|
293
340
|
yp_buffer_append_u8(buffer, 0);
|
294
341
|
} else {
|
295
342
|
yp_buffer_append_u8(buffer, 1);
|
296
|
-
yp_serialize_location(parser, &((yp_call_node_t *)node)->
|
343
|
+
yp_serialize_location(parser, &((yp_call_node_t *)node)->call_operator_loc, buffer);
|
297
344
|
}
|
298
345
|
if (((yp_call_node_t *)node)->message_loc.start == NULL) {
|
299
346
|
yp_buffer_append_u8(buffer, 0);
|
@@ -327,32 +374,98 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
327
374
|
yp_serialize_string(parser, &((yp_call_node_t *)node)->name, buffer);
|
328
375
|
break;
|
329
376
|
}
|
330
|
-
case
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
377
|
+
case YP_CALL_OPERATOR_WRITE_NODE: {
|
378
|
+
if (((yp_call_operator_write_node_t *)node)->receiver == NULL) {
|
379
|
+
yp_buffer_append_u8(buffer, 0);
|
380
|
+
} else {
|
381
|
+
yp_serialize_node(parser, (yp_node_t *)((yp_call_operator_write_node_t *)node)->receiver, buffer);
|
382
|
+
}
|
383
|
+
if (((yp_call_operator_write_node_t *)node)->call_operator_loc.start == NULL) {
|
384
|
+
yp_buffer_append_u8(buffer, 0);
|
385
|
+
} else {
|
386
|
+
yp_buffer_append_u8(buffer, 1);
|
387
|
+
yp_serialize_location(parser, &((yp_call_operator_write_node_t *)node)->call_operator_loc, buffer);
|
388
|
+
}
|
389
|
+
if (((yp_call_operator_write_node_t *)node)->message_loc.start == NULL) {
|
390
|
+
yp_buffer_append_u8(buffer, 0);
|
391
|
+
} else {
|
392
|
+
yp_buffer_append_u8(buffer, 1);
|
393
|
+
yp_serialize_location(parser, &((yp_call_operator_write_node_t *)node)->message_loc, buffer);
|
394
|
+
}
|
395
|
+
if (((yp_call_operator_write_node_t *)node)->opening_loc.start == NULL) {
|
396
|
+
yp_buffer_append_u8(buffer, 0);
|
397
|
+
} else {
|
398
|
+
yp_buffer_append_u8(buffer, 1);
|
399
|
+
yp_serialize_location(parser, &((yp_call_operator_write_node_t *)node)->opening_loc, buffer);
|
400
|
+
}
|
401
|
+
if (((yp_call_operator_write_node_t *)node)->arguments == NULL) {
|
402
|
+
yp_buffer_append_u8(buffer, 0);
|
403
|
+
} else {
|
404
|
+
yp_serialize_node(parser, (yp_node_t *)((yp_call_operator_write_node_t *)node)->arguments, buffer);
|
405
|
+
}
|
406
|
+
if (((yp_call_operator_write_node_t *)node)->closing_loc.start == NULL) {
|
407
|
+
yp_buffer_append_u8(buffer, 0);
|
408
|
+
} else {
|
409
|
+
yp_buffer_append_u8(buffer, 1);
|
410
|
+
yp_serialize_location(parser, &((yp_call_operator_write_node_t *)node)->closing_loc, buffer);
|
411
|
+
}
|
412
|
+
yp_buffer_append_u32(buffer, node->flags >> 1);
|
413
|
+
yp_serialize_string(parser, &((yp_call_operator_write_node_t *)node)->read_name, buffer);
|
414
|
+
yp_serialize_string(parser, &((yp_call_operator_write_node_t *)node)->write_name, buffer);
|
415
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_call_operator_write_node_t *)node)->operator));
|
344
416
|
yp_serialize_location(parser, &((yp_call_operator_write_node_t *)node)->operator_loc, buffer);
|
345
417
|
yp_serialize_node(parser, (yp_node_t *)((yp_call_operator_write_node_t *)node)->value, buffer);
|
346
|
-
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_call_operator_write_node_t *)node)->operator_id));
|
347
418
|
break;
|
348
419
|
}
|
349
|
-
case
|
420
|
+
case YP_CALL_OR_WRITE_NODE: {
|
421
|
+
if (((yp_call_or_write_node_t *)node)->receiver == NULL) {
|
422
|
+
yp_buffer_append_u8(buffer, 0);
|
423
|
+
} else {
|
424
|
+
yp_serialize_node(parser, (yp_node_t *)((yp_call_or_write_node_t *)node)->receiver, buffer);
|
425
|
+
}
|
426
|
+
if (((yp_call_or_write_node_t *)node)->call_operator_loc.start == NULL) {
|
427
|
+
yp_buffer_append_u8(buffer, 0);
|
428
|
+
} else {
|
429
|
+
yp_buffer_append_u8(buffer, 1);
|
430
|
+
yp_serialize_location(parser, &((yp_call_or_write_node_t *)node)->call_operator_loc, buffer);
|
431
|
+
}
|
432
|
+
if (((yp_call_or_write_node_t *)node)->message_loc.start == NULL) {
|
433
|
+
yp_buffer_append_u8(buffer, 0);
|
434
|
+
} else {
|
435
|
+
yp_buffer_append_u8(buffer, 1);
|
436
|
+
yp_serialize_location(parser, &((yp_call_or_write_node_t *)node)->message_loc, buffer);
|
437
|
+
}
|
438
|
+
if (((yp_call_or_write_node_t *)node)->opening_loc.start == NULL) {
|
439
|
+
yp_buffer_append_u8(buffer, 0);
|
440
|
+
} else {
|
441
|
+
yp_buffer_append_u8(buffer, 1);
|
442
|
+
yp_serialize_location(parser, &((yp_call_or_write_node_t *)node)->opening_loc, buffer);
|
443
|
+
}
|
444
|
+
if (((yp_call_or_write_node_t *)node)->arguments == NULL) {
|
445
|
+
yp_buffer_append_u8(buffer, 0);
|
446
|
+
} else {
|
447
|
+
yp_serialize_node(parser, (yp_node_t *)((yp_call_or_write_node_t *)node)->arguments, buffer);
|
448
|
+
}
|
449
|
+
if (((yp_call_or_write_node_t *)node)->closing_loc.start == NULL) {
|
450
|
+
yp_buffer_append_u8(buffer, 0);
|
451
|
+
} else {
|
452
|
+
yp_buffer_append_u8(buffer, 1);
|
453
|
+
yp_serialize_location(parser, &((yp_call_or_write_node_t *)node)->closing_loc, buffer);
|
454
|
+
}
|
455
|
+
yp_buffer_append_u32(buffer, node->flags >> 1);
|
456
|
+
yp_serialize_string(parser, &((yp_call_or_write_node_t *)node)->read_name, buffer);
|
457
|
+
yp_serialize_string(parser, &((yp_call_or_write_node_t *)node)->write_name, buffer);
|
458
|
+
yp_serialize_location(parser, &((yp_call_or_write_node_t *)node)->operator_loc, buffer);
|
459
|
+
yp_serialize_node(parser, (yp_node_t *)((yp_call_or_write_node_t *)node)->value, buffer);
|
460
|
+
break;
|
461
|
+
}
|
462
|
+
case YP_CAPTURE_PATTERN_NODE: {
|
350
463
|
yp_serialize_node(parser, (yp_node_t *)((yp_capture_pattern_node_t *)node)->value, buffer);
|
351
464
|
yp_serialize_node(parser, (yp_node_t *)((yp_capture_pattern_node_t *)node)->target, buffer);
|
352
465
|
yp_serialize_location(parser, &((yp_capture_pattern_node_t *)node)->operator_loc, buffer);
|
353
466
|
break;
|
354
467
|
}
|
355
|
-
case
|
468
|
+
case YP_CASE_NODE: {
|
356
469
|
if (((yp_case_node_t *)node)->predicate == NULL) {
|
357
470
|
yp_buffer_append_u8(buffer, 0);
|
358
471
|
} else {
|
@@ -372,7 +485,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
372
485
|
yp_serialize_location(parser, &((yp_case_node_t *)node)->end_keyword_loc, buffer);
|
373
486
|
break;
|
374
487
|
}
|
375
|
-
case
|
488
|
+
case YP_CLASS_NODE: {
|
376
489
|
uint32_t locals_size = yp_sizet_to_u32(((yp_class_node_t *)node)->locals.size);
|
377
490
|
yp_buffer_append_u32(buffer, locals_size);
|
378
491
|
for (uint32_t index = 0; index < locals_size; index++) {
|
@@ -397,41 +510,43 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
397
510
|
yp_serialize_node(parser, (yp_node_t *)((yp_class_node_t *)node)->body, buffer);
|
398
511
|
}
|
399
512
|
yp_serialize_location(parser, &((yp_class_node_t *)node)->end_keyword_loc, buffer);
|
400
|
-
|
513
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_class_node_t *)node)->name));
|
401
514
|
break;
|
402
515
|
}
|
403
|
-
case
|
516
|
+
case YP_CLASS_VARIABLE_AND_WRITE_NODE: {
|
517
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_class_variable_and_write_node_t *)node)->name));
|
404
518
|
yp_serialize_location(parser, &((yp_class_variable_and_write_node_t *)node)->name_loc, buffer);
|
405
519
|
yp_serialize_location(parser, &((yp_class_variable_and_write_node_t *)node)->operator_loc, buffer);
|
406
520
|
yp_serialize_node(parser, (yp_node_t *)((yp_class_variable_and_write_node_t *)node)->value, buffer);
|
407
521
|
break;
|
408
522
|
}
|
409
|
-
case
|
523
|
+
case YP_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
|
524
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_class_variable_operator_write_node_t *)node)->name));
|
410
525
|
yp_serialize_location(parser, &((yp_class_variable_operator_write_node_t *)node)->name_loc, buffer);
|
411
526
|
yp_serialize_location(parser, &((yp_class_variable_operator_write_node_t *)node)->operator_loc, buffer);
|
412
527
|
yp_serialize_node(parser, (yp_node_t *)((yp_class_variable_operator_write_node_t *)node)->value, buffer);
|
413
528
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_class_variable_operator_write_node_t *)node)->operator));
|
414
529
|
break;
|
415
530
|
}
|
416
|
-
case
|
531
|
+
case YP_CLASS_VARIABLE_OR_WRITE_NODE: {
|
532
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_class_variable_or_write_node_t *)node)->name));
|
417
533
|
yp_serialize_location(parser, &((yp_class_variable_or_write_node_t *)node)->name_loc, buffer);
|
418
534
|
yp_serialize_location(parser, &((yp_class_variable_or_write_node_t *)node)->operator_loc, buffer);
|
419
535
|
yp_serialize_node(parser, (yp_node_t *)((yp_class_variable_or_write_node_t *)node)->value, buffer);
|
420
536
|
break;
|
421
537
|
}
|
422
|
-
case
|
538
|
+
case YP_CLASS_VARIABLE_READ_NODE: {
|
539
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_class_variable_read_node_t *)node)->name));
|
423
540
|
break;
|
424
541
|
}
|
425
|
-
case
|
542
|
+
case YP_CLASS_VARIABLE_TARGET_NODE: {
|
543
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_class_variable_target_node_t *)node)->name));
|
426
544
|
break;
|
427
545
|
}
|
428
|
-
case
|
546
|
+
case YP_CLASS_VARIABLE_WRITE_NODE: {
|
547
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_class_variable_write_node_t *)node)->name));
|
429
548
|
yp_serialize_location(parser, &((yp_class_variable_write_node_t *)node)->name_loc, buffer);
|
430
|
-
|
431
|
-
yp_buffer_append_u8(buffer, 0);
|
432
|
-
} else {
|
433
|
-
yp_serialize_node(parser, (yp_node_t *)((yp_class_variable_write_node_t *)node)->value, buffer);
|
434
|
-
}
|
549
|
+
yp_serialize_node(parser, (yp_node_t *)((yp_class_variable_write_node_t *)node)->value, buffer);
|
435
550
|
if (((yp_class_variable_write_node_t *)node)->operator_loc.start == NULL) {
|
436
551
|
yp_buffer_append_u8(buffer, 0);
|
437
552
|
} else {
|
@@ -440,32 +555,35 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
440
555
|
}
|
441
556
|
break;
|
442
557
|
}
|
443
|
-
case
|
558
|
+
case YP_CONSTANT_AND_WRITE_NODE: {
|
559
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_constant_and_write_node_t *)node)->name));
|
444
560
|
yp_serialize_location(parser, &((yp_constant_and_write_node_t *)node)->name_loc, buffer);
|
445
561
|
yp_serialize_location(parser, &((yp_constant_and_write_node_t *)node)->operator_loc, buffer);
|
446
562
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_and_write_node_t *)node)->value, buffer);
|
447
563
|
break;
|
448
564
|
}
|
449
|
-
case
|
565
|
+
case YP_CONSTANT_OPERATOR_WRITE_NODE: {
|
566
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_constant_operator_write_node_t *)node)->name));
|
450
567
|
yp_serialize_location(parser, &((yp_constant_operator_write_node_t *)node)->name_loc, buffer);
|
451
568
|
yp_serialize_location(parser, &((yp_constant_operator_write_node_t *)node)->operator_loc, buffer);
|
452
569
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_operator_write_node_t *)node)->value, buffer);
|
453
570
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_constant_operator_write_node_t *)node)->operator));
|
454
571
|
break;
|
455
572
|
}
|
456
|
-
case
|
573
|
+
case YP_CONSTANT_OR_WRITE_NODE: {
|
574
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_constant_or_write_node_t *)node)->name));
|
457
575
|
yp_serialize_location(parser, &((yp_constant_or_write_node_t *)node)->name_loc, buffer);
|
458
576
|
yp_serialize_location(parser, &((yp_constant_or_write_node_t *)node)->operator_loc, buffer);
|
459
577
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_or_write_node_t *)node)->value, buffer);
|
460
578
|
break;
|
461
579
|
}
|
462
|
-
case
|
580
|
+
case YP_CONSTANT_PATH_AND_WRITE_NODE: {
|
463
581
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_path_and_write_node_t *)node)->target, buffer);
|
464
582
|
yp_serialize_location(parser, &((yp_constant_path_and_write_node_t *)node)->operator_loc, buffer);
|
465
583
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_path_and_write_node_t *)node)->value, buffer);
|
466
584
|
break;
|
467
585
|
}
|
468
|
-
case
|
586
|
+
case YP_CONSTANT_PATH_NODE: {
|
469
587
|
if (((yp_constant_path_node_t *)node)->parent == NULL) {
|
470
588
|
yp_buffer_append_u8(buffer, 0);
|
471
589
|
} else {
|
@@ -475,20 +593,20 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
475
593
|
yp_serialize_location(parser, &((yp_constant_path_node_t *)node)->delimiter_loc, buffer);
|
476
594
|
break;
|
477
595
|
}
|
478
|
-
case
|
596
|
+
case YP_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
|
479
597
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_path_operator_write_node_t *)node)->target, buffer);
|
480
598
|
yp_serialize_location(parser, &((yp_constant_path_operator_write_node_t *)node)->operator_loc, buffer);
|
481
599
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_path_operator_write_node_t *)node)->value, buffer);
|
482
600
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_constant_path_operator_write_node_t *)node)->operator));
|
483
601
|
break;
|
484
602
|
}
|
485
|
-
case
|
603
|
+
case YP_CONSTANT_PATH_OR_WRITE_NODE: {
|
486
604
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_path_or_write_node_t *)node)->target, buffer);
|
487
605
|
yp_serialize_location(parser, &((yp_constant_path_or_write_node_t *)node)->operator_loc, buffer);
|
488
606
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_path_or_write_node_t *)node)->value, buffer);
|
489
607
|
break;
|
490
608
|
}
|
491
|
-
case
|
609
|
+
case YP_CONSTANT_PATH_TARGET_NODE: {
|
492
610
|
if (((yp_constant_path_target_node_t *)node)->parent == NULL) {
|
493
611
|
yp_buffer_append_u8(buffer, 0);
|
494
612
|
} else {
|
@@ -498,29 +616,33 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
498
616
|
yp_serialize_location(parser, &((yp_constant_path_target_node_t *)node)->delimiter_loc, buffer);
|
499
617
|
break;
|
500
618
|
}
|
501
|
-
case
|
619
|
+
case YP_CONSTANT_PATH_WRITE_NODE: {
|
502
620
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_path_write_node_t *)node)->target, buffer);
|
503
621
|
yp_serialize_location(parser, &((yp_constant_path_write_node_t *)node)->operator_loc, buffer);
|
504
622
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_path_write_node_t *)node)->value, buffer);
|
505
623
|
break;
|
506
624
|
}
|
507
|
-
case
|
625
|
+
case YP_CONSTANT_READ_NODE: {
|
626
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_constant_read_node_t *)node)->name));
|
508
627
|
break;
|
509
628
|
}
|
510
|
-
case
|
629
|
+
case YP_CONSTANT_TARGET_NODE: {
|
630
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_constant_target_node_t *)node)->name));
|
511
631
|
break;
|
512
632
|
}
|
513
|
-
case
|
633
|
+
case YP_CONSTANT_WRITE_NODE: {
|
634
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_constant_write_node_t *)node)->name));
|
514
635
|
yp_serialize_location(parser, &((yp_constant_write_node_t *)node)->name_loc, buffer);
|
515
636
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_write_node_t *)node)->value, buffer);
|
516
637
|
yp_serialize_location(parser, &((yp_constant_write_node_t *)node)->operator_loc, buffer);
|
517
638
|
break;
|
518
639
|
}
|
519
|
-
case
|
640
|
+
case YP_DEF_NODE: {
|
520
641
|
// serialize length
|
521
642
|
// encoding of location u32s make us need to save this offset.
|
522
643
|
size_t length_offset = buffer->length;
|
523
644
|
yp_buffer_append_str(buffer, "\0\0\0\0", 4); /* consume 4 bytes, updated below */
|
645
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_def_node_t *)node)->name));
|
524
646
|
yp_serialize_location(parser, &((yp_def_node_t *)node)->name_loc, buffer);
|
525
647
|
if (((yp_def_node_t *)node)->receiver == NULL) {
|
526
648
|
yp_buffer_append_u8(buffer, 0);
|
@@ -578,7 +700,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
578
700
|
memcpy(buffer->value + length_offset, &length, sizeof(uint32_t));
|
579
701
|
break;
|
580
702
|
}
|
581
|
-
case
|
703
|
+
case YP_DEFINED_NODE: {
|
582
704
|
if (((yp_defined_node_t *)node)->lparen_loc.start == NULL) {
|
583
705
|
yp_buffer_append_u8(buffer, 0);
|
584
706
|
} else {
|
@@ -595,7 +717,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
595
717
|
yp_serialize_location(parser, &((yp_defined_node_t *)node)->keyword_loc, buffer);
|
596
718
|
break;
|
597
719
|
}
|
598
|
-
case
|
720
|
+
case YP_ELSE_NODE: {
|
599
721
|
yp_serialize_location(parser, &((yp_else_node_t *)node)->else_keyword_loc, buffer);
|
600
722
|
if (((yp_else_node_t *)node)->statements == NULL) {
|
601
723
|
yp_buffer_append_u8(buffer, 0);
|
@@ -610,7 +732,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
610
732
|
}
|
611
733
|
break;
|
612
734
|
}
|
613
|
-
case
|
735
|
+
case YP_EMBEDDED_STATEMENTS_NODE: {
|
614
736
|
yp_serialize_location(parser, &((yp_embedded_statements_node_t *)node)->opening_loc, buffer);
|
615
737
|
if (((yp_embedded_statements_node_t *)node)->statements == NULL) {
|
616
738
|
yp_buffer_append_u8(buffer, 0);
|
@@ -620,12 +742,12 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
620
742
|
yp_serialize_location(parser, &((yp_embedded_statements_node_t *)node)->closing_loc, buffer);
|
621
743
|
break;
|
622
744
|
}
|
623
|
-
case
|
745
|
+
case YP_EMBEDDED_VARIABLE_NODE: {
|
624
746
|
yp_serialize_location(parser, &((yp_embedded_variable_node_t *)node)->operator_loc, buffer);
|
625
747
|
yp_serialize_node(parser, (yp_node_t *)((yp_embedded_variable_node_t *)node)->variable, buffer);
|
626
748
|
break;
|
627
749
|
}
|
628
|
-
case
|
750
|
+
case YP_ENSURE_NODE: {
|
629
751
|
yp_serialize_location(parser, &((yp_ensure_node_t *)node)->ensure_keyword_loc, buffer);
|
630
752
|
if (((yp_ensure_node_t *)node)->statements == NULL) {
|
631
753
|
yp_buffer_append_u8(buffer, 0);
|
@@ -635,10 +757,10 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
635
757
|
yp_serialize_location(parser, &((yp_ensure_node_t *)node)->end_keyword_loc, buffer);
|
636
758
|
break;
|
637
759
|
}
|
638
|
-
case
|
760
|
+
case YP_FALSE_NODE: {
|
639
761
|
break;
|
640
762
|
}
|
641
|
-
case
|
763
|
+
case YP_FIND_PATTERN_NODE: {
|
642
764
|
if (((yp_find_pattern_node_t *)node)->constant == NULL) {
|
643
765
|
yp_buffer_append_u8(buffer, 0);
|
644
766
|
} else {
|
@@ -665,7 +787,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
665
787
|
}
|
666
788
|
break;
|
667
789
|
}
|
668
|
-
case
|
790
|
+
case YP_FLIP_FLOP_NODE: {
|
669
791
|
if (((yp_flip_flop_node_t *)node)->left == NULL) {
|
670
792
|
yp_buffer_append_u8(buffer, 0);
|
671
793
|
} else {
|
@@ -680,10 +802,10 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
680
802
|
yp_buffer_append_u32(buffer, node->flags >> 1);
|
681
803
|
break;
|
682
804
|
}
|
683
|
-
case
|
805
|
+
case YP_FLOAT_NODE: {
|
684
806
|
break;
|
685
807
|
}
|
686
|
-
case
|
808
|
+
case YP_FOR_NODE: {
|
687
809
|
yp_serialize_node(parser, (yp_node_t *)((yp_for_node_t *)node)->index, buffer);
|
688
810
|
yp_serialize_node(parser, (yp_node_t *)((yp_for_node_t *)node)->collection, buffer);
|
689
811
|
if (((yp_for_node_t *)node)->statements == NULL) {
|
@@ -702,13 +824,13 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
702
824
|
yp_serialize_location(parser, &((yp_for_node_t *)node)->end_keyword_loc, buffer);
|
703
825
|
break;
|
704
826
|
}
|
705
|
-
case
|
827
|
+
case YP_FORWARDING_ARGUMENTS_NODE: {
|
706
828
|
break;
|
707
829
|
}
|
708
|
-
case
|
830
|
+
case YP_FORWARDING_PARAMETER_NODE: {
|
709
831
|
break;
|
710
832
|
}
|
711
|
-
case
|
833
|
+
case YP_FORWARDING_SUPER_NODE: {
|
712
834
|
if (((yp_forwarding_super_node_t *)node)->block == NULL) {
|
713
835
|
yp_buffer_append_u8(buffer, 0);
|
714
836
|
} else {
|
@@ -716,38 +838,44 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
716
838
|
}
|
717
839
|
break;
|
718
840
|
}
|
719
|
-
case
|
841
|
+
case YP_GLOBAL_VARIABLE_AND_WRITE_NODE: {
|
842
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_global_variable_and_write_node_t *)node)->name));
|
720
843
|
yp_serialize_location(parser, &((yp_global_variable_and_write_node_t *)node)->name_loc, buffer);
|
721
844
|
yp_serialize_location(parser, &((yp_global_variable_and_write_node_t *)node)->operator_loc, buffer);
|
722
845
|
yp_serialize_node(parser, (yp_node_t *)((yp_global_variable_and_write_node_t *)node)->value, buffer);
|
723
846
|
break;
|
724
847
|
}
|
725
|
-
case
|
848
|
+
case YP_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
849
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_global_variable_operator_write_node_t *)node)->name));
|
726
850
|
yp_serialize_location(parser, &((yp_global_variable_operator_write_node_t *)node)->name_loc, buffer);
|
727
851
|
yp_serialize_location(parser, &((yp_global_variable_operator_write_node_t *)node)->operator_loc, buffer);
|
728
852
|
yp_serialize_node(parser, (yp_node_t *)((yp_global_variable_operator_write_node_t *)node)->value, buffer);
|
729
853
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_global_variable_operator_write_node_t *)node)->operator));
|
730
854
|
break;
|
731
855
|
}
|
732
|
-
case
|
856
|
+
case YP_GLOBAL_VARIABLE_OR_WRITE_NODE: {
|
857
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_global_variable_or_write_node_t *)node)->name));
|
733
858
|
yp_serialize_location(parser, &((yp_global_variable_or_write_node_t *)node)->name_loc, buffer);
|
734
859
|
yp_serialize_location(parser, &((yp_global_variable_or_write_node_t *)node)->operator_loc, buffer);
|
735
860
|
yp_serialize_node(parser, (yp_node_t *)((yp_global_variable_or_write_node_t *)node)->value, buffer);
|
736
861
|
break;
|
737
862
|
}
|
738
|
-
case
|
863
|
+
case YP_GLOBAL_VARIABLE_READ_NODE: {
|
864
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_global_variable_read_node_t *)node)->name));
|
739
865
|
break;
|
740
866
|
}
|
741
|
-
case
|
867
|
+
case YP_GLOBAL_VARIABLE_TARGET_NODE: {
|
868
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_global_variable_target_node_t *)node)->name));
|
742
869
|
break;
|
743
870
|
}
|
744
|
-
case
|
871
|
+
case YP_GLOBAL_VARIABLE_WRITE_NODE: {
|
872
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_global_variable_write_node_t *)node)->name));
|
745
873
|
yp_serialize_location(parser, &((yp_global_variable_write_node_t *)node)->name_loc, buffer);
|
746
|
-
yp_serialize_location(parser, &((yp_global_variable_write_node_t *)node)->operator_loc, buffer);
|
747
874
|
yp_serialize_node(parser, (yp_node_t *)((yp_global_variable_write_node_t *)node)->value, buffer);
|
875
|
+
yp_serialize_location(parser, &((yp_global_variable_write_node_t *)node)->operator_loc, buffer);
|
748
876
|
break;
|
749
877
|
}
|
750
|
-
case
|
878
|
+
case YP_HASH_NODE: {
|
751
879
|
yp_serialize_location(parser, &((yp_hash_node_t *)node)->opening_loc, buffer);
|
752
880
|
uint32_t elements_size = yp_sizet_to_u32(((yp_hash_node_t *)node)->elements.size);
|
753
881
|
yp_buffer_append_u32(buffer, elements_size);
|
@@ -757,7 +885,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
757
885
|
yp_serialize_location(parser, &((yp_hash_node_t *)node)->closing_loc, buffer);
|
758
886
|
break;
|
759
887
|
}
|
760
|
-
case
|
888
|
+
case YP_HASH_PATTERN_NODE: {
|
761
889
|
if (((yp_hash_pattern_node_t *)node)->constant == NULL) {
|
762
890
|
yp_buffer_append_u8(buffer, 0);
|
763
891
|
} else {
|
@@ -787,7 +915,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
787
915
|
}
|
788
916
|
break;
|
789
917
|
}
|
790
|
-
case
|
918
|
+
case YP_IF_NODE: {
|
791
919
|
if (((yp_if_node_t *)node)->if_keyword_loc.start == NULL) {
|
792
920
|
yp_buffer_append_u8(buffer, 0);
|
793
921
|
} else {
|
@@ -813,11 +941,11 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
813
941
|
}
|
814
942
|
break;
|
815
943
|
}
|
816
|
-
case
|
944
|
+
case YP_IMAGINARY_NODE: {
|
817
945
|
yp_serialize_node(parser, (yp_node_t *)((yp_imaginary_node_t *)node)->numeric, buffer);
|
818
946
|
break;
|
819
947
|
}
|
820
|
-
case
|
948
|
+
case YP_IN_NODE: {
|
821
949
|
yp_serialize_node(parser, (yp_node_t *)((yp_in_node_t *)node)->pattern, buffer);
|
822
950
|
if (((yp_in_node_t *)node)->statements == NULL) {
|
823
951
|
yp_buffer_append_u8(buffer, 0);
|
@@ -833,41 +961,47 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
833
961
|
}
|
834
962
|
break;
|
835
963
|
}
|
836
|
-
case
|
964
|
+
case YP_INSTANCE_VARIABLE_AND_WRITE_NODE: {
|
965
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_instance_variable_and_write_node_t *)node)->name));
|
837
966
|
yp_serialize_location(parser, &((yp_instance_variable_and_write_node_t *)node)->name_loc, buffer);
|
838
967
|
yp_serialize_location(parser, &((yp_instance_variable_and_write_node_t *)node)->operator_loc, buffer);
|
839
968
|
yp_serialize_node(parser, (yp_node_t *)((yp_instance_variable_and_write_node_t *)node)->value, buffer);
|
840
969
|
break;
|
841
970
|
}
|
842
|
-
case
|
971
|
+
case YP_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
|
972
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_instance_variable_operator_write_node_t *)node)->name));
|
843
973
|
yp_serialize_location(parser, &((yp_instance_variable_operator_write_node_t *)node)->name_loc, buffer);
|
844
974
|
yp_serialize_location(parser, &((yp_instance_variable_operator_write_node_t *)node)->operator_loc, buffer);
|
845
975
|
yp_serialize_node(parser, (yp_node_t *)((yp_instance_variable_operator_write_node_t *)node)->value, buffer);
|
846
976
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_instance_variable_operator_write_node_t *)node)->operator));
|
847
977
|
break;
|
848
978
|
}
|
849
|
-
case
|
979
|
+
case YP_INSTANCE_VARIABLE_OR_WRITE_NODE: {
|
980
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_instance_variable_or_write_node_t *)node)->name));
|
850
981
|
yp_serialize_location(parser, &((yp_instance_variable_or_write_node_t *)node)->name_loc, buffer);
|
851
982
|
yp_serialize_location(parser, &((yp_instance_variable_or_write_node_t *)node)->operator_loc, buffer);
|
852
983
|
yp_serialize_node(parser, (yp_node_t *)((yp_instance_variable_or_write_node_t *)node)->value, buffer);
|
853
984
|
break;
|
854
985
|
}
|
855
|
-
case
|
986
|
+
case YP_INSTANCE_VARIABLE_READ_NODE: {
|
987
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_instance_variable_read_node_t *)node)->name));
|
856
988
|
break;
|
857
989
|
}
|
858
|
-
case
|
990
|
+
case YP_INSTANCE_VARIABLE_TARGET_NODE: {
|
991
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_instance_variable_target_node_t *)node)->name));
|
859
992
|
break;
|
860
993
|
}
|
861
|
-
case
|
994
|
+
case YP_INSTANCE_VARIABLE_WRITE_NODE: {
|
995
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_instance_variable_write_node_t *)node)->name));
|
862
996
|
yp_serialize_location(parser, &((yp_instance_variable_write_node_t *)node)->name_loc, buffer);
|
863
997
|
yp_serialize_node(parser, (yp_node_t *)((yp_instance_variable_write_node_t *)node)->value, buffer);
|
864
998
|
yp_serialize_location(parser, &((yp_instance_variable_write_node_t *)node)->operator_loc, buffer);
|
865
999
|
break;
|
866
1000
|
}
|
867
|
-
case
|
1001
|
+
case YP_INTEGER_NODE: {
|
868
1002
|
break;
|
869
1003
|
}
|
870
|
-
case
|
1004
|
+
case YP_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
|
871
1005
|
yp_serialize_location(parser, &((yp_interpolated_regular_expression_node_t *)node)->opening_loc, buffer);
|
872
1006
|
uint32_t parts_size = yp_sizet_to_u32(((yp_interpolated_regular_expression_node_t *)node)->parts.size);
|
873
1007
|
yp_buffer_append_u32(buffer, parts_size);
|
@@ -878,7 +1012,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
878
1012
|
yp_buffer_append_u32(buffer, node->flags >> 1);
|
879
1013
|
break;
|
880
1014
|
}
|
881
|
-
case
|
1015
|
+
case YP_INTERPOLATED_STRING_NODE: {
|
882
1016
|
if (((yp_interpolated_string_node_t *)node)->opening_loc.start == NULL) {
|
883
1017
|
yp_buffer_append_u8(buffer, 0);
|
884
1018
|
} else {
|
@@ -898,7 +1032,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
898
1032
|
}
|
899
1033
|
break;
|
900
1034
|
}
|
901
|
-
case
|
1035
|
+
case YP_INTERPOLATED_SYMBOL_NODE: {
|
902
1036
|
if (((yp_interpolated_symbol_node_t *)node)->opening_loc.start == NULL) {
|
903
1037
|
yp_buffer_append_u8(buffer, 0);
|
904
1038
|
} else {
|
@@ -918,7 +1052,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
918
1052
|
}
|
919
1053
|
break;
|
920
1054
|
}
|
921
|
-
case
|
1055
|
+
case YP_INTERPOLATED_X_STRING_NODE: {
|
922
1056
|
yp_serialize_location(parser, &((yp_interpolated_x_string_node_t *)node)->opening_loc, buffer);
|
923
1057
|
uint32_t parts_size = yp_sizet_to_u32(((yp_interpolated_x_string_node_t *)node)->parts.size);
|
924
1058
|
yp_buffer_append_u32(buffer, parts_size);
|
@@ -928,7 +1062,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
928
1062
|
yp_serialize_location(parser, &((yp_interpolated_x_string_node_t *)node)->closing_loc, buffer);
|
929
1063
|
break;
|
930
1064
|
}
|
931
|
-
case
|
1065
|
+
case YP_KEYWORD_HASH_NODE: {
|
932
1066
|
uint32_t elements_size = yp_sizet_to_u32(((yp_keyword_hash_node_t *)node)->elements.size);
|
933
1067
|
yp_buffer_append_u32(buffer, elements_size);
|
934
1068
|
for (uint32_t index = 0; index < elements_size; index++) {
|
@@ -936,7 +1070,8 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
936
1070
|
}
|
937
1071
|
break;
|
938
1072
|
}
|
939
|
-
case
|
1073
|
+
case YP_KEYWORD_PARAMETER_NODE: {
|
1074
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_keyword_parameter_node_t *)node)->name));
|
940
1075
|
yp_serialize_location(parser, &((yp_keyword_parameter_node_t *)node)->name_loc, buffer);
|
941
1076
|
if (((yp_keyword_parameter_node_t *)node)->value == NULL) {
|
942
1077
|
yp_buffer_append_u8(buffer, 0);
|
@@ -945,17 +1080,18 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
945
1080
|
}
|
946
1081
|
break;
|
947
1082
|
}
|
948
|
-
case
|
949
|
-
|
1083
|
+
case YP_KEYWORD_REST_PARAMETER_NODE: {
|
1084
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_keyword_rest_parameter_node_t *)node)->name));
|
950
1085
|
if (((yp_keyword_rest_parameter_node_t *)node)->name_loc.start == NULL) {
|
951
1086
|
yp_buffer_append_u8(buffer, 0);
|
952
1087
|
} else {
|
953
1088
|
yp_buffer_append_u8(buffer, 1);
|
954
1089
|
yp_serialize_location(parser, &((yp_keyword_rest_parameter_node_t *)node)->name_loc, buffer);
|
955
1090
|
}
|
1091
|
+
yp_serialize_location(parser, &((yp_keyword_rest_parameter_node_t *)node)->operator_loc, buffer);
|
956
1092
|
break;
|
957
1093
|
}
|
958
|
-
case
|
1094
|
+
case YP_LAMBDA_NODE: {
|
959
1095
|
uint32_t locals_size = yp_sizet_to_u32(((yp_lambda_node_t *)node)->locals.size);
|
960
1096
|
yp_buffer_append_u32(buffer, locals_size);
|
961
1097
|
for (uint32_t index = 0; index < locals_size; index++) {
|
@@ -976,65 +1112,65 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
976
1112
|
}
|
977
1113
|
break;
|
978
1114
|
}
|
979
|
-
case
|
1115
|
+
case YP_LOCAL_VARIABLE_AND_WRITE_NODE: {
|
980
1116
|
yp_serialize_location(parser, &((yp_local_variable_and_write_node_t *)node)->name_loc, buffer);
|
981
1117
|
yp_serialize_location(parser, &((yp_local_variable_and_write_node_t *)node)->operator_loc, buffer);
|
982
1118
|
yp_serialize_node(parser, (yp_node_t *)((yp_local_variable_and_write_node_t *)node)->value, buffer);
|
983
|
-
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_and_write_node_t *)node)->
|
1119
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_and_write_node_t *)node)->name));
|
984
1120
|
yp_buffer_append_u32(buffer, ((yp_local_variable_and_write_node_t *)node)->depth);
|
985
1121
|
break;
|
986
1122
|
}
|
987
|
-
case
|
1123
|
+
case YP_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
988
1124
|
yp_serialize_location(parser, &((yp_local_variable_operator_write_node_t *)node)->name_loc, buffer);
|
989
1125
|
yp_serialize_location(parser, &((yp_local_variable_operator_write_node_t *)node)->operator_loc, buffer);
|
990
1126
|
yp_serialize_node(parser, (yp_node_t *)((yp_local_variable_operator_write_node_t *)node)->value, buffer);
|
991
|
-
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_operator_write_node_t *)node)->
|
992
|
-
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_operator_write_node_t *)node)->
|
1127
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_operator_write_node_t *)node)->name));
|
1128
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_operator_write_node_t *)node)->operator));
|
993
1129
|
yp_buffer_append_u32(buffer, ((yp_local_variable_operator_write_node_t *)node)->depth);
|
994
1130
|
break;
|
995
1131
|
}
|
996
|
-
case
|
1132
|
+
case YP_LOCAL_VARIABLE_OR_WRITE_NODE: {
|
997
1133
|
yp_serialize_location(parser, &((yp_local_variable_or_write_node_t *)node)->name_loc, buffer);
|
998
1134
|
yp_serialize_location(parser, &((yp_local_variable_or_write_node_t *)node)->operator_loc, buffer);
|
999
1135
|
yp_serialize_node(parser, (yp_node_t *)((yp_local_variable_or_write_node_t *)node)->value, buffer);
|
1000
|
-
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_or_write_node_t *)node)->
|
1136
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_or_write_node_t *)node)->name));
|
1001
1137
|
yp_buffer_append_u32(buffer, ((yp_local_variable_or_write_node_t *)node)->depth);
|
1002
1138
|
break;
|
1003
1139
|
}
|
1004
|
-
case
|
1005
|
-
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_read_node_t *)node)->
|
1140
|
+
case YP_LOCAL_VARIABLE_READ_NODE: {
|
1141
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_read_node_t *)node)->name));
|
1006
1142
|
yp_buffer_append_u32(buffer, ((yp_local_variable_read_node_t *)node)->depth);
|
1007
1143
|
break;
|
1008
1144
|
}
|
1009
|
-
case
|
1010
|
-
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_target_node_t *)node)->
|
1145
|
+
case YP_LOCAL_VARIABLE_TARGET_NODE: {
|
1146
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_target_node_t *)node)->name));
|
1011
1147
|
yp_buffer_append_u32(buffer, ((yp_local_variable_target_node_t *)node)->depth);
|
1012
1148
|
break;
|
1013
1149
|
}
|
1014
|
-
case
|
1015
|
-
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_write_node_t *)node)->
|
1150
|
+
case YP_LOCAL_VARIABLE_WRITE_NODE: {
|
1151
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_write_node_t *)node)->name));
|
1016
1152
|
yp_buffer_append_u32(buffer, ((yp_local_variable_write_node_t *)node)->depth);
|
1017
|
-
yp_serialize_node(parser, (yp_node_t *)((yp_local_variable_write_node_t *)node)->value, buffer);
|
1018
1153
|
yp_serialize_location(parser, &((yp_local_variable_write_node_t *)node)->name_loc, buffer);
|
1154
|
+
yp_serialize_node(parser, (yp_node_t *)((yp_local_variable_write_node_t *)node)->value, buffer);
|
1019
1155
|
yp_serialize_location(parser, &((yp_local_variable_write_node_t *)node)->operator_loc, buffer);
|
1020
1156
|
break;
|
1021
1157
|
}
|
1022
|
-
case
|
1158
|
+
case YP_MATCH_PREDICATE_NODE: {
|
1023
1159
|
yp_serialize_node(parser, (yp_node_t *)((yp_match_predicate_node_t *)node)->value, buffer);
|
1024
1160
|
yp_serialize_node(parser, (yp_node_t *)((yp_match_predicate_node_t *)node)->pattern, buffer);
|
1025
1161
|
yp_serialize_location(parser, &((yp_match_predicate_node_t *)node)->operator_loc, buffer);
|
1026
1162
|
break;
|
1027
1163
|
}
|
1028
|
-
case
|
1164
|
+
case YP_MATCH_REQUIRED_NODE: {
|
1029
1165
|
yp_serialize_node(parser, (yp_node_t *)((yp_match_required_node_t *)node)->value, buffer);
|
1030
1166
|
yp_serialize_node(parser, (yp_node_t *)((yp_match_required_node_t *)node)->pattern, buffer);
|
1031
1167
|
yp_serialize_location(parser, &((yp_match_required_node_t *)node)->operator_loc, buffer);
|
1032
1168
|
break;
|
1033
1169
|
}
|
1034
|
-
case
|
1170
|
+
case YP_MISSING_NODE: {
|
1035
1171
|
break;
|
1036
1172
|
}
|
1037
|
-
case
|
1173
|
+
case YP_MODULE_NODE: {
|
1038
1174
|
uint32_t locals_size = yp_sizet_to_u32(((yp_module_node_t *)node)->locals.size);
|
1039
1175
|
yp_buffer_append_u32(buffer, locals_size);
|
1040
1176
|
for (uint32_t index = 0; index < locals_size; index++) {
|
@@ -1048,25 +1184,34 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1048
1184
|
yp_serialize_node(parser, (yp_node_t *)((yp_module_node_t *)node)->body, buffer);
|
1049
1185
|
}
|
1050
1186
|
yp_serialize_location(parser, &((yp_module_node_t *)node)->end_keyword_loc, buffer);
|
1051
|
-
|
1187
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_module_node_t *)node)->name));
|
1052
1188
|
break;
|
1053
1189
|
}
|
1054
|
-
case
|
1055
|
-
uint32_t targets_size = yp_sizet_to_u32(((
|
1190
|
+
case YP_MULTI_TARGET_NODE: {
|
1191
|
+
uint32_t targets_size = yp_sizet_to_u32(((yp_multi_target_node_t *)node)->targets.size);
|
1056
1192
|
yp_buffer_append_u32(buffer, targets_size);
|
1057
1193
|
for (uint32_t index = 0; index < targets_size; index++) {
|
1058
|
-
yp_serialize_node(parser, (yp_node_t *) ((
|
1194
|
+
yp_serialize_node(parser, (yp_node_t *) ((yp_multi_target_node_t *)node)->targets.nodes[index], buffer);
|
1059
1195
|
}
|
1060
|
-
if (((
|
1196
|
+
if (((yp_multi_target_node_t *)node)->lparen_loc.start == NULL) {
|
1061
1197
|
yp_buffer_append_u8(buffer, 0);
|
1062
1198
|
} else {
|
1063
1199
|
yp_buffer_append_u8(buffer, 1);
|
1064
|
-
yp_serialize_location(parser, &((
|
1200
|
+
yp_serialize_location(parser, &((yp_multi_target_node_t *)node)->lparen_loc, buffer);
|
1065
1201
|
}
|
1066
|
-
if (((
|
1202
|
+
if (((yp_multi_target_node_t *)node)->rparen_loc.start == NULL) {
|
1067
1203
|
yp_buffer_append_u8(buffer, 0);
|
1068
1204
|
} else {
|
1069
|
-
|
1205
|
+
yp_buffer_append_u8(buffer, 1);
|
1206
|
+
yp_serialize_location(parser, &((yp_multi_target_node_t *)node)->rparen_loc, buffer);
|
1207
|
+
}
|
1208
|
+
break;
|
1209
|
+
}
|
1210
|
+
case YP_MULTI_WRITE_NODE: {
|
1211
|
+
uint32_t targets_size = yp_sizet_to_u32(((yp_multi_write_node_t *)node)->targets.size);
|
1212
|
+
yp_buffer_append_u32(buffer, targets_size);
|
1213
|
+
for (uint32_t index = 0; index < targets_size; index++) {
|
1214
|
+
yp_serialize_node(parser, (yp_node_t *) ((yp_multi_write_node_t *)node)->targets.nodes[index], buffer);
|
1070
1215
|
}
|
1071
1216
|
if (((yp_multi_write_node_t *)node)->lparen_loc.start == NULL) {
|
1072
1217
|
yp_buffer_append_u8(buffer, 0);
|
@@ -1080,9 +1225,11 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1080
1225
|
yp_buffer_append_u8(buffer, 1);
|
1081
1226
|
yp_serialize_location(parser, &((yp_multi_write_node_t *)node)->rparen_loc, buffer);
|
1082
1227
|
}
|
1228
|
+
yp_serialize_location(parser, &((yp_multi_write_node_t *)node)->operator_loc, buffer);
|
1229
|
+
yp_serialize_node(parser, (yp_node_t *)((yp_multi_write_node_t *)node)->value, buffer);
|
1083
1230
|
break;
|
1084
1231
|
}
|
1085
|
-
case
|
1232
|
+
case YP_NEXT_NODE: {
|
1086
1233
|
if (((yp_next_node_t *)node)->arguments == NULL) {
|
1087
1234
|
yp_buffer_append_u8(buffer, 0);
|
1088
1235
|
} else {
|
@@ -1091,31 +1238,32 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1091
1238
|
yp_serialize_location(parser, &((yp_next_node_t *)node)->keyword_loc, buffer);
|
1092
1239
|
break;
|
1093
1240
|
}
|
1094
|
-
case
|
1241
|
+
case YP_NIL_NODE: {
|
1095
1242
|
break;
|
1096
1243
|
}
|
1097
|
-
case
|
1244
|
+
case YP_NO_KEYWORDS_PARAMETER_NODE: {
|
1098
1245
|
yp_serialize_location(parser, &((yp_no_keywords_parameter_node_t *)node)->operator_loc, buffer);
|
1099
1246
|
yp_serialize_location(parser, &((yp_no_keywords_parameter_node_t *)node)->keyword_loc, buffer);
|
1100
1247
|
break;
|
1101
1248
|
}
|
1102
|
-
case
|
1249
|
+
case YP_NUMBERED_REFERENCE_READ_NODE: {
|
1250
|
+
yp_buffer_append_u32(buffer, ((yp_numbered_reference_read_node_t *)node)->number);
|
1103
1251
|
break;
|
1104
1252
|
}
|
1105
|
-
case
|
1106
|
-
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_optional_parameter_node_t *)node)->
|
1253
|
+
case YP_OPTIONAL_PARAMETER_NODE: {
|
1254
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_optional_parameter_node_t *)node)->name));
|
1107
1255
|
yp_serialize_location(parser, &((yp_optional_parameter_node_t *)node)->name_loc, buffer);
|
1108
1256
|
yp_serialize_location(parser, &((yp_optional_parameter_node_t *)node)->operator_loc, buffer);
|
1109
1257
|
yp_serialize_node(parser, (yp_node_t *)((yp_optional_parameter_node_t *)node)->value, buffer);
|
1110
1258
|
break;
|
1111
1259
|
}
|
1112
|
-
case
|
1260
|
+
case YP_OR_NODE: {
|
1113
1261
|
yp_serialize_node(parser, (yp_node_t *)((yp_or_node_t *)node)->left, buffer);
|
1114
1262
|
yp_serialize_node(parser, (yp_node_t *)((yp_or_node_t *)node)->right, buffer);
|
1115
1263
|
yp_serialize_location(parser, &((yp_or_node_t *)node)->operator_loc, buffer);
|
1116
1264
|
break;
|
1117
1265
|
}
|
1118
|
-
case
|
1266
|
+
case YP_PARAMETERS_NODE: {
|
1119
1267
|
uint32_t requireds_size = yp_sizet_to_u32(((yp_parameters_node_t *)node)->requireds.size);
|
1120
1268
|
yp_buffer_append_u32(buffer, requireds_size);
|
1121
1269
|
for (uint32_t index = 0; index < requireds_size; index++) {
|
@@ -1153,7 +1301,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1153
1301
|
}
|
1154
1302
|
break;
|
1155
1303
|
}
|
1156
|
-
case
|
1304
|
+
case YP_PARENTHESES_NODE: {
|
1157
1305
|
if (((yp_parentheses_node_t *)node)->body == NULL) {
|
1158
1306
|
yp_buffer_append_u8(buffer, 0);
|
1159
1307
|
} else {
|
@@ -1163,19 +1311,19 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1163
1311
|
yp_serialize_location(parser, &((yp_parentheses_node_t *)node)->closing_loc, buffer);
|
1164
1312
|
break;
|
1165
1313
|
}
|
1166
|
-
case
|
1314
|
+
case YP_PINNED_EXPRESSION_NODE: {
|
1167
1315
|
yp_serialize_node(parser, (yp_node_t *)((yp_pinned_expression_node_t *)node)->expression, buffer);
|
1168
1316
|
yp_serialize_location(parser, &((yp_pinned_expression_node_t *)node)->operator_loc, buffer);
|
1169
1317
|
yp_serialize_location(parser, &((yp_pinned_expression_node_t *)node)->lparen_loc, buffer);
|
1170
1318
|
yp_serialize_location(parser, &((yp_pinned_expression_node_t *)node)->rparen_loc, buffer);
|
1171
1319
|
break;
|
1172
1320
|
}
|
1173
|
-
case
|
1321
|
+
case YP_PINNED_VARIABLE_NODE: {
|
1174
1322
|
yp_serialize_node(parser, (yp_node_t *)((yp_pinned_variable_node_t *)node)->variable, buffer);
|
1175
1323
|
yp_serialize_location(parser, &((yp_pinned_variable_node_t *)node)->operator_loc, buffer);
|
1176
1324
|
break;
|
1177
1325
|
}
|
1178
|
-
case
|
1326
|
+
case YP_POST_EXECUTION_NODE: {
|
1179
1327
|
if (((yp_post_execution_node_t *)node)->statements == NULL) {
|
1180
1328
|
yp_buffer_append_u8(buffer, 0);
|
1181
1329
|
} else {
|
@@ -1186,7 +1334,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1186
1334
|
yp_serialize_location(parser, &((yp_post_execution_node_t *)node)->closing_loc, buffer);
|
1187
1335
|
break;
|
1188
1336
|
}
|
1189
|
-
case
|
1337
|
+
case YP_PRE_EXECUTION_NODE: {
|
1190
1338
|
if (((yp_pre_execution_node_t *)node)->statements == NULL) {
|
1191
1339
|
yp_buffer_append_u8(buffer, 0);
|
1192
1340
|
} else {
|
@@ -1197,7 +1345,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1197
1345
|
yp_serialize_location(parser, &((yp_pre_execution_node_t *)node)->closing_loc, buffer);
|
1198
1346
|
break;
|
1199
1347
|
}
|
1200
|
-
case
|
1348
|
+
case YP_PROGRAM_NODE: {
|
1201
1349
|
uint32_t locals_size = yp_sizet_to_u32(((yp_program_node_t *)node)->locals.size);
|
1202
1350
|
yp_buffer_append_u32(buffer, locals_size);
|
1203
1351
|
for (uint32_t index = 0; index < locals_size; index++) {
|
@@ -1206,7 +1354,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1206
1354
|
yp_serialize_node(parser, (yp_node_t *)((yp_program_node_t *)node)->statements, buffer);
|
1207
1355
|
break;
|
1208
1356
|
}
|
1209
|
-
case
|
1357
|
+
case YP_RANGE_NODE: {
|
1210
1358
|
if (((yp_range_node_t *)node)->left == NULL) {
|
1211
1359
|
yp_buffer_append_u8(buffer, 0);
|
1212
1360
|
} else {
|
@@ -1221,14 +1369,14 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1221
1369
|
yp_buffer_append_u32(buffer, node->flags >> 1);
|
1222
1370
|
break;
|
1223
1371
|
}
|
1224
|
-
case
|
1372
|
+
case YP_RATIONAL_NODE: {
|
1225
1373
|
yp_serialize_node(parser, (yp_node_t *)((yp_rational_node_t *)node)->numeric, buffer);
|
1226
1374
|
break;
|
1227
1375
|
}
|
1228
|
-
case
|
1376
|
+
case YP_REDO_NODE: {
|
1229
1377
|
break;
|
1230
1378
|
}
|
1231
|
-
case
|
1379
|
+
case YP_REGULAR_EXPRESSION_NODE: {
|
1232
1380
|
yp_serialize_location(parser, &((yp_regular_expression_node_t *)node)->opening_loc, buffer);
|
1233
1381
|
yp_serialize_location(parser, &((yp_regular_expression_node_t *)node)->content_loc, buffer);
|
1234
1382
|
yp_serialize_location(parser, &((yp_regular_expression_node_t *)node)->closing_loc, buffer);
|
@@ -1236,7 +1384,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1236
1384
|
yp_buffer_append_u32(buffer, node->flags >> 1);
|
1237
1385
|
break;
|
1238
1386
|
}
|
1239
|
-
case
|
1387
|
+
case YP_REQUIRED_DESTRUCTURED_PARAMETER_NODE: {
|
1240
1388
|
uint32_t parameters_size = yp_sizet_to_u32(((yp_required_destructured_parameter_node_t *)node)->parameters.size);
|
1241
1389
|
yp_buffer_append_u32(buffer, parameters_size);
|
1242
1390
|
for (uint32_t index = 0; index < parameters_size; index++) {
|
@@ -1246,17 +1394,17 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1246
1394
|
yp_serialize_location(parser, &((yp_required_destructured_parameter_node_t *)node)->closing_loc, buffer);
|
1247
1395
|
break;
|
1248
1396
|
}
|
1249
|
-
case
|
1250
|
-
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_required_parameter_node_t *)node)->
|
1397
|
+
case YP_REQUIRED_PARAMETER_NODE: {
|
1398
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_required_parameter_node_t *)node)->name));
|
1251
1399
|
break;
|
1252
1400
|
}
|
1253
|
-
case
|
1401
|
+
case YP_RESCUE_MODIFIER_NODE: {
|
1254
1402
|
yp_serialize_node(parser, (yp_node_t *)((yp_rescue_modifier_node_t *)node)->expression, buffer);
|
1255
1403
|
yp_serialize_location(parser, &((yp_rescue_modifier_node_t *)node)->keyword_loc, buffer);
|
1256
1404
|
yp_serialize_node(parser, (yp_node_t *)((yp_rescue_modifier_node_t *)node)->rescue_expression, buffer);
|
1257
1405
|
break;
|
1258
1406
|
}
|
1259
|
-
case
|
1407
|
+
case YP_RESCUE_NODE: {
|
1260
1408
|
yp_serialize_location(parser, &((yp_rescue_node_t *)node)->keyword_loc, buffer);
|
1261
1409
|
uint32_t exceptions_size = yp_sizet_to_u32(((yp_rescue_node_t *)node)->exceptions.size);
|
1262
1410
|
yp_buffer_append_u32(buffer, exceptions_size);
|
@@ -1286,20 +1434,21 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1286
1434
|
}
|
1287
1435
|
break;
|
1288
1436
|
}
|
1289
|
-
case
|
1290
|
-
|
1437
|
+
case YP_REST_PARAMETER_NODE: {
|
1438
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_rest_parameter_node_t *)node)->name));
|
1291
1439
|
if (((yp_rest_parameter_node_t *)node)->name_loc.start == NULL) {
|
1292
1440
|
yp_buffer_append_u8(buffer, 0);
|
1293
1441
|
} else {
|
1294
1442
|
yp_buffer_append_u8(buffer, 1);
|
1295
1443
|
yp_serialize_location(parser, &((yp_rest_parameter_node_t *)node)->name_loc, buffer);
|
1296
1444
|
}
|
1445
|
+
yp_serialize_location(parser, &((yp_rest_parameter_node_t *)node)->operator_loc, buffer);
|
1297
1446
|
break;
|
1298
1447
|
}
|
1299
|
-
case
|
1448
|
+
case YP_RETRY_NODE: {
|
1300
1449
|
break;
|
1301
1450
|
}
|
1302
|
-
case
|
1451
|
+
case YP_RETURN_NODE: {
|
1303
1452
|
yp_serialize_location(parser, &((yp_return_node_t *)node)->keyword_loc, buffer);
|
1304
1453
|
if (((yp_return_node_t *)node)->arguments == NULL) {
|
1305
1454
|
yp_buffer_append_u8(buffer, 0);
|
@@ -1308,10 +1457,10 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1308
1457
|
}
|
1309
1458
|
break;
|
1310
1459
|
}
|
1311
|
-
case
|
1460
|
+
case YP_SELF_NODE: {
|
1312
1461
|
break;
|
1313
1462
|
}
|
1314
|
-
case
|
1463
|
+
case YP_SINGLETON_CLASS_NODE: {
|
1315
1464
|
uint32_t locals_size = yp_sizet_to_u32(((yp_singleton_class_node_t *)node)->locals.size);
|
1316
1465
|
yp_buffer_append_u32(buffer, locals_size);
|
1317
1466
|
for (uint32_t index = 0; index < locals_size; index++) {
|
@@ -1328,17 +1477,17 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1328
1477
|
yp_serialize_location(parser, &((yp_singleton_class_node_t *)node)->end_keyword_loc, buffer);
|
1329
1478
|
break;
|
1330
1479
|
}
|
1331
|
-
case
|
1480
|
+
case YP_SOURCE_ENCODING_NODE: {
|
1332
1481
|
break;
|
1333
1482
|
}
|
1334
|
-
case
|
1483
|
+
case YP_SOURCE_FILE_NODE: {
|
1335
1484
|
yp_serialize_string(parser, &((yp_source_file_node_t *)node)->filepath, buffer);
|
1336
1485
|
break;
|
1337
1486
|
}
|
1338
|
-
case
|
1487
|
+
case YP_SOURCE_LINE_NODE: {
|
1339
1488
|
break;
|
1340
1489
|
}
|
1341
|
-
case
|
1490
|
+
case YP_SPLAT_NODE: {
|
1342
1491
|
yp_serialize_location(parser, &((yp_splat_node_t *)node)->operator_loc, buffer);
|
1343
1492
|
if (((yp_splat_node_t *)node)->expression == NULL) {
|
1344
1493
|
yp_buffer_append_u8(buffer, 0);
|
@@ -1347,7 +1496,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1347
1496
|
}
|
1348
1497
|
break;
|
1349
1498
|
}
|
1350
|
-
case
|
1499
|
+
case YP_STATEMENTS_NODE: {
|
1351
1500
|
uint32_t body_size = yp_sizet_to_u32(((yp_statements_node_t *)node)->body.size);
|
1352
1501
|
yp_buffer_append_u32(buffer, body_size);
|
1353
1502
|
for (uint32_t index = 0; index < body_size; index++) {
|
@@ -1355,12 +1504,12 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1355
1504
|
}
|
1356
1505
|
break;
|
1357
1506
|
}
|
1358
|
-
case
|
1507
|
+
case YP_STRING_CONCAT_NODE: {
|
1359
1508
|
yp_serialize_node(parser, (yp_node_t *)((yp_string_concat_node_t *)node)->left, buffer);
|
1360
1509
|
yp_serialize_node(parser, (yp_node_t *)((yp_string_concat_node_t *)node)->right, buffer);
|
1361
1510
|
break;
|
1362
1511
|
}
|
1363
|
-
case
|
1512
|
+
case YP_STRING_NODE: {
|
1364
1513
|
if (((yp_string_node_t *)node)->opening_loc.start == NULL) {
|
1365
1514
|
yp_buffer_append_u8(buffer, 0);
|
1366
1515
|
} else {
|
@@ -1377,7 +1526,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1377
1526
|
yp_serialize_string(parser, &((yp_string_node_t *)node)->unescaped, buffer);
|
1378
1527
|
break;
|
1379
1528
|
}
|
1380
|
-
case
|
1529
|
+
case YP_SUPER_NODE: {
|
1381
1530
|
yp_serialize_location(parser, &((yp_super_node_t *)node)->keyword_loc, buffer);
|
1382
1531
|
if (((yp_super_node_t *)node)->lparen_loc.start == NULL) {
|
1383
1532
|
yp_buffer_append_u8(buffer, 0);
|
@@ -1403,7 +1552,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1403
1552
|
}
|
1404
1553
|
break;
|
1405
1554
|
}
|
1406
|
-
case
|
1555
|
+
case YP_SYMBOL_NODE: {
|
1407
1556
|
if (((yp_symbol_node_t *)node)->opening_loc.start == NULL) {
|
1408
1557
|
yp_buffer_append_u8(buffer, 0);
|
1409
1558
|
} else {
|
@@ -1425,10 +1574,10 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1425
1574
|
yp_serialize_string(parser, &((yp_symbol_node_t *)node)->unescaped, buffer);
|
1426
1575
|
break;
|
1427
1576
|
}
|
1428
|
-
case
|
1577
|
+
case YP_TRUE_NODE: {
|
1429
1578
|
break;
|
1430
1579
|
}
|
1431
|
-
case
|
1580
|
+
case YP_UNDEF_NODE: {
|
1432
1581
|
uint32_t names_size = yp_sizet_to_u32(((yp_undef_node_t *)node)->names.size);
|
1433
1582
|
yp_buffer_append_u32(buffer, names_size);
|
1434
1583
|
for (uint32_t index = 0; index < names_size; index++) {
|
@@ -1437,7 +1586,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1437
1586
|
yp_serialize_location(parser, &((yp_undef_node_t *)node)->keyword_loc, buffer);
|
1438
1587
|
break;
|
1439
1588
|
}
|
1440
|
-
case
|
1589
|
+
case YP_UNLESS_NODE: {
|
1441
1590
|
yp_serialize_location(parser, &((yp_unless_node_t *)node)->keyword_loc, buffer);
|
1442
1591
|
yp_serialize_node(parser, (yp_node_t *)((yp_unless_node_t *)node)->predicate, buffer);
|
1443
1592
|
if (((yp_unless_node_t *)node)->statements == NULL) {
|
@@ -1458,7 +1607,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1458
1607
|
}
|
1459
1608
|
break;
|
1460
1609
|
}
|
1461
|
-
case
|
1610
|
+
case YP_UNTIL_NODE: {
|
1462
1611
|
yp_serialize_location(parser, &((yp_until_node_t *)node)->keyword_loc, buffer);
|
1463
1612
|
if (((yp_until_node_t *)node)->closing_loc.start == NULL) {
|
1464
1613
|
yp_buffer_append_u8(buffer, 0);
|
@@ -1475,7 +1624,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1475
1624
|
yp_buffer_append_u32(buffer, node->flags >> 1);
|
1476
1625
|
break;
|
1477
1626
|
}
|
1478
|
-
case
|
1627
|
+
case YP_WHEN_NODE: {
|
1479
1628
|
yp_serialize_location(parser, &((yp_when_node_t *)node)->keyword_loc, buffer);
|
1480
1629
|
uint32_t conditions_size = yp_sizet_to_u32(((yp_when_node_t *)node)->conditions.size);
|
1481
1630
|
yp_buffer_append_u32(buffer, conditions_size);
|
@@ -1489,7 +1638,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1489
1638
|
}
|
1490
1639
|
break;
|
1491
1640
|
}
|
1492
|
-
case
|
1641
|
+
case YP_WHILE_NODE: {
|
1493
1642
|
yp_serialize_location(parser, &((yp_while_node_t *)node)->keyword_loc, buffer);
|
1494
1643
|
if (((yp_while_node_t *)node)->closing_loc.start == NULL) {
|
1495
1644
|
yp_buffer_append_u8(buffer, 0);
|
@@ -1506,14 +1655,14 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1506
1655
|
yp_buffer_append_u32(buffer, node->flags >> 1);
|
1507
1656
|
break;
|
1508
1657
|
}
|
1509
|
-
case
|
1658
|
+
case YP_X_STRING_NODE: {
|
1510
1659
|
yp_serialize_location(parser, &((yp_x_string_node_t *)node)->opening_loc, buffer);
|
1511
1660
|
yp_serialize_location(parser, &((yp_x_string_node_t *)node)->content_loc, buffer);
|
1512
1661
|
yp_serialize_location(parser, &((yp_x_string_node_t *)node)->closing_loc, buffer);
|
1513
1662
|
yp_serialize_string(parser, &((yp_x_string_node_t *)node)->unescaped, buffer);
|
1514
1663
|
break;
|
1515
1664
|
}
|
1516
|
-
case
|
1665
|
+
case YP_YIELD_NODE: {
|
1517
1666
|
yp_serialize_location(parser, &((yp_yield_node_t *)node)->keyword_loc, buffer);
|
1518
1667
|
if (((yp_yield_node_t *)node)->lparen_loc.start == NULL) {
|
1519
1668
|
yp_buffer_append_u8(buffer, 0);
|
@@ -1586,7 +1735,7 @@ yp_serialize_encoding(yp_encoding_t *encoding, yp_buffer_t *buffer) {
|
|
1586
1735
|
yp_buffer_append_str(buffer, encoding->name, encoding_length);
|
1587
1736
|
}
|
1588
1737
|
|
1589
|
-
#line
|
1738
|
+
#line 175 "serialize.c.erb"
|
1590
1739
|
void
|
1591
1740
|
yp_serialize_content(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
1592
1741
|
yp_serialize_encoding(&parser->encoding, buffer);
|
@@ -1621,12 +1770,31 @@ yp_serialize_content(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer)
|
|
1621
1770
|
// If we find a constant at this index, serialize it at the correct
|
1622
1771
|
// index in the buffer.
|
1623
1772
|
if (constant->id != 0) {
|
1624
|
-
size_t buffer_offset = offset + ((constant->id - 1) * 8);
|
1773
|
+
size_t buffer_offset = offset + ((((size_t) constant->id) - 1) * 8);
|
1625
1774
|
|
1626
|
-
|
1627
|
-
|
1775
|
+
if (constant->owned) {
|
1776
|
+
// Since this is an owned constant, we are going to write its
|
1777
|
+
// contents into the buffer after the constant pool. So
|
1778
|
+
// effectively in place of the source offset, we have a buffer
|
1779
|
+
// offset. We will add a leading 1 to indicate that this is a
|
1780
|
+
// buffer offset.
|
1781
|
+
uint32_t content_offset = yp_sizet_to_u32(buffer->length);
|
1782
|
+
uint32_t owned_mask = (uint32_t) (1 << 31);
|
1783
|
+
|
1784
|
+
assert(content_offset < owned_mask);
|
1785
|
+
content_offset |= owned_mask;
|
1786
|
+
|
1787
|
+
memcpy(buffer->value + buffer_offset, &content_offset, 4);
|
1788
|
+
yp_buffer_append_bytes(buffer, constant->start, constant->length);
|
1789
|
+
} else {
|
1790
|
+
// Since this is a shared constant, we are going to write its
|
1791
|
+
// source offset directly into the buffer.
|
1792
|
+
uint32_t source_offset = yp_ptrdifft_to_u32(constant->start - parser->start);
|
1793
|
+
memcpy(buffer->value + buffer_offset, &source_offset, 4);
|
1794
|
+
}
|
1628
1795
|
|
1629
|
-
|
1796
|
+
// Now we can write the length of the constant into the buffer.
|
1797
|
+
uint32_t constant_length = yp_sizet_to_u32(constant->length);
|
1630
1798
|
memcpy(buffer->value + buffer_offset + 4, &constant_length, 4);
|
1631
1799
|
}
|
1632
1800
|
}
|
@@ -1643,7 +1811,7 @@ serialize_token(void *data, yp_parser_t *parser, yp_token_t *token) {
|
|
1643
1811
|
}
|
1644
1812
|
|
1645
1813
|
YP_EXPORTED_FUNCTION void
|
1646
|
-
yp_lex_serialize(const
|
1814
|
+
yp_lex_serialize(const uint8_t *source, size_t size, const char *filepath, yp_buffer_t *buffer) {
|
1647
1815
|
yp_parser_t parser;
|
1648
1816
|
yp_parser_init(&parser, source, size, filepath);
|
1649
1817
|
|
@@ -1670,7 +1838,7 @@ yp_lex_serialize(const char *source, size_t size, const char *filepath, yp_buffe
|
|
1670
1838
|
// Parse and serialize both the AST and the tokens represented by the given
|
1671
1839
|
// source to the given buffer.
|
1672
1840
|
YP_EXPORTED_FUNCTION void
|
1673
|
-
yp_parse_lex_serialize(const
|
1841
|
+
yp_parse_lex_serialize(const uint8_t *source, size_t size, yp_buffer_t *buffer, const char *metadata) {
|
1674
1842
|
yp_parser_t parser;
|
1675
1843
|
yp_parser_init(&parser, source, size, NULL);
|
1676
1844
|
if (metadata) yp_parser_metadata(&parser, metadata);
|