yarp 0.10.0 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +25 -1
- data/CONTRIBUTING.md +7 -0
- data/config.yml +154 -43
- data/docs/configuration.md +0 -1
- data/docs/mapping.md +91 -91
- data/docs/serialization.md +23 -20
- data/ext/yarp/api_node.c +1074 -391
- data/ext/yarp/extension.c +1 -1
- data/ext/yarp/extension.h +2 -2
- data/include/yarp/ast.h +501 -301
- data/include/yarp/diagnostic.h +198 -1
- data/include/yarp/node.h +0 -4
- data/include/yarp/util/yp_char.h +1 -1
- data/include/yarp/util/yp_constant_pool.h +11 -4
- data/include/yarp/version.h +2 -2
- data/lib/yarp/desugar_visitor.rb +19 -19
- data/lib/yarp/mutation_visitor.rb +22 -12
- data/lib/yarp/node.rb +2883 -293
- 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 +104 -44
- data/src/diagnostic.c +254 -2
- data/src/node.c +901 -868
- data/src/prettyprint.c +380 -186
- data/src/serialize.c +325 -170
- data/src/unescape.c +20 -20
- data/src/util/yp_char.c +2 -7
- data/src/util/yp_constant_pool.c +41 -8
- data/src/util/yp_newline_list.c +5 -1
- data/src/util/yp_string_list.c +4 -1
- data/src/yarp.c +946 -818
- data/yarp.gemspec +4 -1
- metadata +6 -3
data/src/serialize.c
CHANGED
@@ -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));
|
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,17 +510,17 @@ 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: {
|
404
517
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_class_variable_and_write_node_t *)node)->name));
|
405
518
|
yp_serialize_location(parser, &((yp_class_variable_and_write_node_t *)node)->name_loc, buffer);
|
406
519
|
yp_serialize_location(parser, &((yp_class_variable_and_write_node_t *)node)->operator_loc, buffer);
|
407
520
|
yp_serialize_node(parser, (yp_node_t *)((yp_class_variable_and_write_node_t *)node)->value, buffer);
|
408
521
|
break;
|
409
522
|
}
|
410
|
-
case
|
523
|
+
case YP_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
|
411
524
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_class_variable_operator_write_node_t *)node)->name));
|
412
525
|
yp_serialize_location(parser, &((yp_class_variable_operator_write_node_t *)node)->name_loc, buffer);
|
413
526
|
yp_serialize_location(parser, &((yp_class_variable_operator_write_node_t *)node)->operator_loc, buffer);
|
@@ -415,29 +528,25 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
415
528
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_class_variable_operator_write_node_t *)node)->operator));
|
416
529
|
break;
|
417
530
|
}
|
418
|
-
case
|
531
|
+
case YP_CLASS_VARIABLE_OR_WRITE_NODE: {
|
419
532
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_class_variable_or_write_node_t *)node)->name));
|
420
533
|
yp_serialize_location(parser, &((yp_class_variable_or_write_node_t *)node)->name_loc, buffer);
|
421
534
|
yp_serialize_location(parser, &((yp_class_variable_or_write_node_t *)node)->operator_loc, buffer);
|
422
535
|
yp_serialize_node(parser, (yp_node_t *)((yp_class_variable_or_write_node_t *)node)->value, buffer);
|
423
536
|
break;
|
424
537
|
}
|
425
|
-
case
|
538
|
+
case YP_CLASS_VARIABLE_READ_NODE: {
|
426
539
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_class_variable_read_node_t *)node)->name));
|
427
540
|
break;
|
428
541
|
}
|
429
|
-
case
|
542
|
+
case YP_CLASS_VARIABLE_TARGET_NODE: {
|
430
543
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_class_variable_target_node_t *)node)->name));
|
431
544
|
break;
|
432
545
|
}
|
433
|
-
case
|
546
|
+
case YP_CLASS_VARIABLE_WRITE_NODE: {
|
434
547
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_class_variable_write_node_t *)node)->name));
|
435
548
|
yp_serialize_location(parser, &((yp_class_variable_write_node_t *)node)->name_loc, buffer);
|
436
|
-
|
437
|
-
yp_buffer_append_u8(buffer, 0);
|
438
|
-
} else {
|
439
|
-
yp_serialize_node(parser, (yp_node_t *)((yp_class_variable_write_node_t *)node)->value, buffer);
|
440
|
-
}
|
549
|
+
yp_serialize_node(parser, (yp_node_t *)((yp_class_variable_write_node_t *)node)->value, buffer);
|
441
550
|
if (((yp_class_variable_write_node_t *)node)->operator_loc.start == NULL) {
|
442
551
|
yp_buffer_append_u8(buffer, 0);
|
443
552
|
} else {
|
@@ -446,32 +555,35 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
446
555
|
}
|
447
556
|
break;
|
448
557
|
}
|
449
|
-
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));
|
450
560
|
yp_serialize_location(parser, &((yp_constant_and_write_node_t *)node)->name_loc, buffer);
|
451
561
|
yp_serialize_location(parser, &((yp_constant_and_write_node_t *)node)->operator_loc, buffer);
|
452
562
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_and_write_node_t *)node)->value, buffer);
|
453
563
|
break;
|
454
564
|
}
|
455
|
-
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));
|
456
567
|
yp_serialize_location(parser, &((yp_constant_operator_write_node_t *)node)->name_loc, buffer);
|
457
568
|
yp_serialize_location(parser, &((yp_constant_operator_write_node_t *)node)->operator_loc, buffer);
|
458
569
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_operator_write_node_t *)node)->value, buffer);
|
459
570
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_constant_operator_write_node_t *)node)->operator));
|
460
571
|
break;
|
461
572
|
}
|
462
|
-
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));
|
463
575
|
yp_serialize_location(parser, &((yp_constant_or_write_node_t *)node)->name_loc, buffer);
|
464
576
|
yp_serialize_location(parser, &((yp_constant_or_write_node_t *)node)->operator_loc, buffer);
|
465
577
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_or_write_node_t *)node)->value, buffer);
|
466
578
|
break;
|
467
579
|
}
|
468
|
-
case
|
580
|
+
case YP_CONSTANT_PATH_AND_WRITE_NODE: {
|
469
581
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_path_and_write_node_t *)node)->target, buffer);
|
470
582
|
yp_serialize_location(parser, &((yp_constant_path_and_write_node_t *)node)->operator_loc, buffer);
|
471
583
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_path_and_write_node_t *)node)->value, buffer);
|
472
584
|
break;
|
473
585
|
}
|
474
|
-
case
|
586
|
+
case YP_CONSTANT_PATH_NODE: {
|
475
587
|
if (((yp_constant_path_node_t *)node)->parent == NULL) {
|
476
588
|
yp_buffer_append_u8(buffer, 0);
|
477
589
|
} else {
|
@@ -481,20 +593,20 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
481
593
|
yp_serialize_location(parser, &((yp_constant_path_node_t *)node)->delimiter_loc, buffer);
|
482
594
|
break;
|
483
595
|
}
|
484
|
-
case
|
596
|
+
case YP_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
|
485
597
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_path_operator_write_node_t *)node)->target, buffer);
|
486
598
|
yp_serialize_location(parser, &((yp_constant_path_operator_write_node_t *)node)->operator_loc, buffer);
|
487
599
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_path_operator_write_node_t *)node)->value, buffer);
|
488
600
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_constant_path_operator_write_node_t *)node)->operator));
|
489
601
|
break;
|
490
602
|
}
|
491
|
-
case
|
603
|
+
case YP_CONSTANT_PATH_OR_WRITE_NODE: {
|
492
604
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_path_or_write_node_t *)node)->target, buffer);
|
493
605
|
yp_serialize_location(parser, &((yp_constant_path_or_write_node_t *)node)->operator_loc, buffer);
|
494
606
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_path_or_write_node_t *)node)->value, buffer);
|
495
607
|
break;
|
496
608
|
}
|
497
|
-
case
|
609
|
+
case YP_CONSTANT_PATH_TARGET_NODE: {
|
498
610
|
if (((yp_constant_path_target_node_t *)node)->parent == NULL) {
|
499
611
|
yp_buffer_append_u8(buffer, 0);
|
500
612
|
} else {
|
@@ -504,29 +616,33 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
504
616
|
yp_serialize_location(parser, &((yp_constant_path_target_node_t *)node)->delimiter_loc, buffer);
|
505
617
|
break;
|
506
618
|
}
|
507
|
-
case
|
619
|
+
case YP_CONSTANT_PATH_WRITE_NODE: {
|
508
620
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_path_write_node_t *)node)->target, buffer);
|
509
621
|
yp_serialize_location(parser, &((yp_constant_path_write_node_t *)node)->operator_loc, buffer);
|
510
622
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_path_write_node_t *)node)->value, buffer);
|
511
623
|
break;
|
512
624
|
}
|
513
|
-
case
|
625
|
+
case YP_CONSTANT_READ_NODE: {
|
626
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_constant_read_node_t *)node)->name));
|
514
627
|
break;
|
515
628
|
}
|
516
|
-
case
|
629
|
+
case YP_CONSTANT_TARGET_NODE: {
|
630
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_constant_target_node_t *)node)->name));
|
517
631
|
break;
|
518
632
|
}
|
519
|
-
case
|
633
|
+
case YP_CONSTANT_WRITE_NODE: {
|
634
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_constant_write_node_t *)node)->name));
|
520
635
|
yp_serialize_location(parser, &((yp_constant_write_node_t *)node)->name_loc, buffer);
|
521
636
|
yp_serialize_node(parser, (yp_node_t *)((yp_constant_write_node_t *)node)->value, buffer);
|
522
637
|
yp_serialize_location(parser, &((yp_constant_write_node_t *)node)->operator_loc, buffer);
|
523
638
|
break;
|
524
639
|
}
|
525
|
-
case
|
640
|
+
case YP_DEF_NODE: {
|
526
641
|
// serialize length
|
527
642
|
// encoding of location u32s make us need to save this offset.
|
528
643
|
size_t length_offset = buffer->length;
|
529
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));
|
530
646
|
yp_serialize_location(parser, &((yp_def_node_t *)node)->name_loc, buffer);
|
531
647
|
if (((yp_def_node_t *)node)->receiver == NULL) {
|
532
648
|
yp_buffer_append_u8(buffer, 0);
|
@@ -584,7 +700,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
584
700
|
memcpy(buffer->value + length_offset, &length, sizeof(uint32_t));
|
585
701
|
break;
|
586
702
|
}
|
587
|
-
case
|
703
|
+
case YP_DEFINED_NODE: {
|
588
704
|
if (((yp_defined_node_t *)node)->lparen_loc.start == NULL) {
|
589
705
|
yp_buffer_append_u8(buffer, 0);
|
590
706
|
} else {
|
@@ -601,7 +717,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
601
717
|
yp_serialize_location(parser, &((yp_defined_node_t *)node)->keyword_loc, buffer);
|
602
718
|
break;
|
603
719
|
}
|
604
|
-
case
|
720
|
+
case YP_ELSE_NODE: {
|
605
721
|
yp_serialize_location(parser, &((yp_else_node_t *)node)->else_keyword_loc, buffer);
|
606
722
|
if (((yp_else_node_t *)node)->statements == NULL) {
|
607
723
|
yp_buffer_append_u8(buffer, 0);
|
@@ -616,7 +732,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
616
732
|
}
|
617
733
|
break;
|
618
734
|
}
|
619
|
-
case
|
735
|
+
case YP_EMBEDDED_STATEMENTS_NODE: {
|
620
736
|
yp_serialize_location(parser, &((yp_embedded_statements_node_t *)node)->opening_loc, buffer);
|
621
737
|
if (((yp_embedded_statements_node_t *)node)->statements == NULL) {
|
622
738
|
yp_buffer_append_u8(buffer, 0);
|
@@ -626,12 +742,12 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
626
742
|
yp_serialize_location(parser, &((yp_embedded_statements_node_t *)node)->closing_loc, buffer);
|
627
743
|
break;
|
628
744
|
}
|
629
|
-
case
|
745
|
+
case YP_EMBEDDED_VARIABLE_NODE: {
|
630
746
|
yp_serialize_location(parser, &((yp_embedded_variable_node_t *)node)->operator_loc, buffer);
|
631
747
|
yp_serialize_node(parser, (yp_node_t *)((yp_embedded_variable_node_t *)node)->variable, buffer);
|
632
748
|
break;
|
633
749
|
}
|
634
|
-
case
|
750
|
+
case YP_ENSURE_NODE: {
|
635
751
|
yp_serialize_location(parser, &((yp_ensure_node_t *)node)->ensure_keyword_loc, buffer);
|
636
752
|
if (((yp_ensure_node_t *)node)->statements == NULL) {
|
637
753
|
yp_buffer_append_u8(buffer, 0);
|
@@ -641,10 +757,10 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
641
757
|
yp_serialize_location(parser, &((yp_ensure_node_t *)node)->end_keyword_loc, buffer);
|
642
758
|
break;
|
643
759
|
}
|
644
|
-
case
|
760
|
+
case YP_FALSE_NODE: {
|
645
761
|
break;
|
646
762
|
}
|
647
|
-
case
|
763
|
+
case YP_FIND_PATTERN_NODE: {
|
648
764
|
if (((yp_find_pattern_node_t *)node)->constant == NULL) {
|
649
765
|
yp_buffer_append_u8(buffer, 0);
|
650
766
|
} else {
|
@@ -671,7 +787,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
671
787
|
}
|
672
788
|
break;
|
673
789
|
}
|
674
|
-
case
|
790
|
+
case YP_FLIP_FLOP_NODE: {
|
675
791
|
if (((yp_flip_flop_node_t *)node)->left == NULL) {
|
676
792
|
yp_buffer_append_u8(buffer, 0);
|
677
793
|
} else {
|
@@ -686,10 +802,10 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
686
802
|
yp_buffer_append_u32(buffer, node->flags >> 1);
|
687
803
|
break;
|
688
804
|
}
|
689
|
-
case
|
805
|
+
case YP_FLOAT_NODE: {
|
690
806
|
break;
|
691
807
|
}
|
692
|
-
case
|
808
|
+
case YP_FOR_NODE: {
|
693
809
|
yp_serialize_node(parser, (yp_node_t *)((yp_for_node_t *)node)->index, buffer);
|
694
810
|
yp_serialize_node(parser, (yp_node_t *)((yp_for_node_t *)node)->collection, buffer);
|
695
811
|
if (((yp_for_node_t *)node)->statements == NULL) {
|
@@ -708,13 +824,13 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
708
824
|
yp_serialize_location(parser, &((yp_for_node_t *)node)->end_keyword_loc, buffer);
|
709
825
|
break;
|
710
826
|
}
|
711
|
-
case
|
827
|
+
case YP_FORWARDING_ARGUMENTS_NODE: {
|
712
828
|
break;
|
713
829
|
}
|
714
|
-
case
|
830
|
+
case YP_FORWARDING_PARAMETER_NODE: {
|
715
831
|
break;
|
716
832
|
}
|
717
|
-
case
|
833
|
+
case YP_FORWARDING_SUPER_NODE: {
|
718
834
|
if (((yp_forwarding_super_node_t *)node)->block == NULL) {
|
719
835
|
yp_buffer_append_u8(buffer, 0);
|
720
836
|
} else {
|
@@ -722,38 +838,44 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
722
838
|
}
|
723
839
|
break;
|
724
840
|
}
|
725
|
-
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));
|
726
843
|
yp_serialize_location(parser, &((yp_global_variable_and_write_node_t *)node)->name_loc, buffer);
|
727
844
|
yp_serialize_location(parser, &((yp_global_variable_and_write_node_t *)node)->operator_loc, buffer);
|
728
845
|
yp_serialize_node(parser, (yp_node_t *)((yp_global_variable_and_write_node_t *)node)->value, buffer);
|
729
846
|
break;
|
730
847
|
}
|
731
|
-
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));
|
732
850
|
yp_serialize_location(parser, &((yp_global_variable_operator_write_node_t *)node)->name_loc, buffer);
|
733
851
|
yp_serialize_location(parser, &((yp_global_variable_operator_write_node_t *)node)->operator_loc, buffer);
|
734
852
|
yp_serialize_node(parser, (yp_node_t *)((yp_global_variable_operator_write_node_t *)node)->value, buffer);
|
735
853
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_global_variable_operator_write_node_t *)node)->operator));
|
736
854
|
break;
|
737
855
|
}
|
738
|
-
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));
|
739
858
|
yp_serialize_location(parser, &((yp_global_variable_or_write_node_t *)node)->name_loc, buffer);
|
740
859
|
yp_serialize_location(parser, &((yp_global_variable_or_write_node_t *)node)->operator_loc, buffer);
|
741
860
|
yp_serialize_node(parser, (yp_node_t *)((yp_global_variable_or_write_node_t *)node)->value, buffer);
|
742
861
|
break;
|
743
862
|
}
|
744
|
-
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));
|
745
865
|
break;
|
746
866
|
}
|
747
|
-
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));
|
748
869
|
break;
|
749
870
|
}
|
750
|
-
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));
|
751
873
|
yp_serialize_location(parser, &((yp_global_variable_write_node_t *)node)->name_loc, buffer);
|
752
874
|
yp_serialize_node(parser, (yp_node_t *)((yp_global_variable_write_node_t *)node)->value, buffer);
|
753
875
|
yp_serialize_location(parser, &((yp_global_variable_write_node_t *)node)->operator_loc, buffer);
|
754
876
|
break;
|
755
877
|
}
|
756
|
-
case
|
878
|
+
case YP_HASH_NODE: {
|
757
879
|
yp_serialize_location(parser, &((yp_hash_node_t *)node)->opening_loc, buffer);
|
758
880
|
uint32_t elements_size = yp_sizet_to_u32(((yp_hash_node_t *)node)->elements.size);
|
759
881
|
yp_buffer_append_u32(buffer, elements_size);
|
@@ -763,7 +885,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
763
885
|
yp_serialize_location(parser, &((yp_hash_node_t *)node)->closing_loc, buffer);
|
764
886
|
break;
|
765
887
|
}
|
766
|
-
case
|
888
|
+
case YP_HASH_PATTERN_NODE: {
|
767
889
|
if (((yp_hash_pattern_node_t *)node)->constant == NULL) {
|
768
890
|
yp_buffer_append_u8(buffer, 0);
|
769
891
|
} else {
|
@@ -793,7 +915,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
793
915
|
}
|
794
916
|
break;
|
795
917
|
}
|
796
|
-
case
|
918
|
+
case YP_IF_NODE: {
|
797
919
|
if (((yp_if_node_t *)node)->if_keyword_loc.start == NULL) {
|
798
920
|
yp_buffer_append_u8(buffer, 0);
|
799
921
|
} else {
|
@@ -819,11 +941,11 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
819
941
|
}
|
820
942
|
break;
|
821
943
|
}
|
822
|
-
case
|
944
|
+
case YP_IMAGINARY_NODE: {
|
823
945
|
yp_serialize_node(parser, (yp_node_t *)((yp_imaginary_node_t *)node)->numeric, buffer);
|
824
946
|
break;
|
825
947
|
}
|
826
|
-
case
|
948
|
+
case YP_IN_NODE: {
|
827
949
|
yp_serialize_node(parser, (yp_node_t *)((yp_in_node_t *)node)->pattern, buffer);
|
828
950
|
if (((yp_in_node_t *)node)->statements == NULL) {
|
829
951
|
yp_buffer_append_u8(buffer, 0);
|
@@ -839,14 +961,14 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
839
961
|
}
|
840
962
|
break;
|
841
963
|
}
|
842
|
-
case
|
964
|
+
case YP_INSTANCE_VARIABLE_AND_WRITE_NODE: {
|
843
965
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_instance_variable_and_write_node_t *)node)->name));
|
844
966
|
yp_serialize_location(parser, &((yp_instance_variable_and_write_node_t *)node)->name_loc, buffer);
|
845
967
|
yp_serialize_location(parser, &((yp_instance_variable_and_write_node_t *)node)->operator_loc, buffer);
|
846
968
|
yp_serialize_node(parser, (yp_node_t *)((yp_instance_variable_and_write_node_t *)node)->value, buffer);
|
847
969
|
break;
|
848
970
|
}
|
849
|
-
case
|
971
|
+
case YP_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
|
850
972
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_instance_variable_operator_write_node_t *)node)->name));
|
851
973
|
yp_serialize_location(parser, &((yp_instance_variable_operator_write_node_t *)node)->name_loc, buffer);
|
852
974
|
yp_serialize_location(parser, &((yp_instance_variable_operator_write_node_t *)node)->operator_loc, buffer);
|
@@ -854,32 +976,32 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
854
976
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_instance_variable_operator_write_node_t *)node)->operator));
|
855
977
|
break;
|
856
978
|
}
|
857
|
-
case
|
979
|
+
case YP_INSTANCE_VARIABLE_OR_WRITE_NODE: {
|
858
980
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_instance_variable_or_write_node_t *)node)->name));
|
859
981
|
yp_serialize_location(parser, &((yp_instance_variable_or_write_node_t *)node)->name_loc, buffer);
|
860
982
|
yp_serialize_location(parser, &((yp_instance_variable_or_write_node_t *)node)->operator_loc, buffer);
|
861
983
|
yp_serialize_node(parser, (yp_node_t *)((yp_instance_variable_or_write_node_t *)node)->value, buffer);
|
862
984
|
break;
|
863
985
|
}
|
864
|
-
case
|
986
|
+
case YP_INSTANCE_VARIABLE_READ_NODE: {
|
865
987
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_instance_variable_read_node_t *)node)->name));
|
866
988
|
break;
|
867
989
|
}
|
868
|
-
case
|
990
|
+
case YP_INSTANCE_VARIABLE_TARGET_NODE: {
|
869
991
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_instance_variable_target_node_t *)node)->name));
|
870
992
|
break;
|
871
993
|
}
|
872
|
-
case
|
994
|
+
case YP_INSTANCE_VARIABLE_WRITE_NODE: {
|
873
995
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_instance_variable_write_node_t *)node)->name));
|
874
996
|
yp_serialize_location(parser, &((yp_instance_variable_write_node_t *)node)->name_loc, buffer);
|
875
997
|
yp_serialize_node(parser, (yp_node_t *)((yp_instance_variable_write_node_t *)node)->value, buffer);
|
876
998
|
yp_serialize_location(parser, &((yp_instance_variable_write_node_t *)node)->operator_loc, buffer);
|
877
999
|
break;
|
878
1000
|
}
|
879
|
-
case
|
1001
|
+
case YP_INTEGER_NODE: {
|
880
1002
|
break;
|
881
1003
|
}
|
882
|
-
case
|
1004
|
+
case YP_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
|
883
1005
|
yp_serialize_location(parser, &((yp_interpolated_regular_expression_node_t *)node)->opening_loc, buffer);
|
884
1006
|
uint32_t parts_size = yp_sizet_to_u32(((yp_interpolated_regular_expression_node_t *)node)->parts.size);
|
885
1007
|
yp_buffer_append_u32(buffer, parts_size);
|
@@ -890,7 +1012,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
890
1012
|
yp_buffer_append_u32(buffer, node->flags >> 1);
|
891
1013
|
break;
|
892
1014
|
}
|
893
|
-
case
|
1015
|
+
case YP_INTERPOLATED_STRING_NODE: {
|
894
1016
|
if (((yp_interpolated_string_node_t *)node)->opening_loc.start == NULL) {
|
895
1017
|
yp_buffer_append_u8(buffer, 0);
|
896
1018
|
} else {
|
@@ -910,7 +1032,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
910
1032
|
}
|
911
1033
|
break;
|
912
1034
|
}
|
913
|
-
case
|
1035
|
+
case YP_INTERPOLATED_SYMBOL_NODE: {
|
914
1036
|
if (((yp_interpolated_symbol_node_t *)node)->opening_loc.start == NULL) {
|
915
1037
|
yp_buffer_append_u8(buffer, 0);
|
916
1038
|
} else {
|
@@ -930,7 +1052,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
930
1052
|
}
|
931
1053
|
break;
|
932
1054
|
}
|
933
|
-
case
|
1055
|
+
case YP_INTERPOLATED_X_STRING_NODE: {
|
934
1056
|
yp_serialize_location(parser, &((yp_interpolated_x_string_node_t *)node)->opening_loc, buffer);
|
935
1057
|
uint32_t parts_size = yp_sizet_to_u32(((yp_interpolated_x_string_node_t *)node)->parts.size);
|
936
1058
|
yp_buffer_append_u32(buffer, parts_size);
|
@@ -940,7 +1062,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
940
1062
|
yp_serialize_location(parser, &((yp_interpolated_x_string_node_t *)node)->closing_loc, buffer);
|
941
1063
|
break;
|
942
1064
|
}
|
943
|
-
case
|
1065
|
+
case YP_KEYWORD_HASH_NODE: {
|
944
1066
|
uint32_t elements_size = yp_sizet_to_u32(((yp_keyword_hash_node_t *)node)->elements.size);
|
945
1067
|
yp_buffer_append_u32(buffer, elements_size);
|
946
1068
|
for (uint32_t index = 0; index < elements_size; index++) {
|
@@ -948,7 +1070,8 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
948
1070
|
}
|
949
1071
|
break;
|
950
1072
|
}
|
951
|
-
case
|
1073
|
+
case YP_KEYWORD_PARAMETER_NODE: {
|
1074
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_keyword_parameter_node_t *)node)->name));
|
952
1075
|
yp_serialize_location(parser, &((yp_keyword_parameter_node_t *)node)->name_loc, buffer);
|
953
1076
|
if (((yp_keyword_parameter_node_t *)node)->value == NULL) {
|
954
1077
|
yp_buffer_append_u8(buffer, 0);
|
@@ -957,17 +1080,18 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
957
1080
|
}
|
958
1081
|
break;
|
959
1082
|
}
|
960
|
-
case
|
961
|
-
|
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));
|
962
1085
|
if (((yp_keyword_rest_parameter_node_t *)node)->name_loc.start == NULL) {
|
963
1086
|
yp_buffer_append_u8(buffer, 0);
|
964
1087
|
} else {
|
965
1088
|
yp_buffer_append_u8(buffer, 1);
|
966
1089
|
yp_serialize_location(parser, &((yp_keyword_rest_parameter_node_t *)node)->name_loc, buffer);
|
967
1090
|
}
|
1091
|
+
yp_serialize_location(parser, &((yp_keyword_rest_parameter_node_t *)node)->operator_loc, buffer);
|
968
1092
|
break;
|
969
1093
|
}
|
970
|
-
case
|
1094
|
+
case YP_LAMBDA_NODE: {
|
971
1095
|
uint32_t locals_size = yp_sizet_to_u32(((yp_lambda_node_t *)node)->locals.size);
|
972
1096
|
yp_buffer_append_u32(buffer, locals_size);
|
973
1097
|
for (uint32_t index = 0; index < locals_size; index++) {
|
@@ -988,7 +1112,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
988
1112
|
}
|
989
1113
|
break;
|
990
1114
|
}
|
991
|
-
case
|
1115
|
+
case YP_LOCAL_VARIABLE_AND_WRITE_NODE: {
|
992
1116
|
yp_serialize_location(parser, &((yp_local_variable_and_write_node_t *)node)->name_loc, buffer);
|
993
1117
|
yp_serialize_location(parser, &((yp_local_variable_and_write_node_t *)node)->operator_loc, buffer);
|
994
1118
|
yp_serialize_node(parser, (yp_node_t *)((yp_local_variable_and_write_node_t *)node)->value, buffer);
|
@@ -996,7 +1120,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
996
1120
|
yp_buffer_append_u32(buffer, ((yp_local_variable_and_write_node_t *)node)->depth);
|
997
1121
|
break;
|
998
1122
|
}
|
999
|
-
case
|
1123
|
+
case YP_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
1000
1124
|
yp_serialize_location(parser, &((yp_local_variable_operator_write_node_t *)node)->name_loc, buffer);
|
1001
1125
|
yp_serialize_location(parser, &((yp_local_variable_operator_write_node_t *)node)->operator_loc, buffer);
|
1002
1126
|
yp_serialize_node(parser, (yp_node_t *)((yp_local_variable_operator_write_node_t *)node)->value, buffer);
|
@@ -1005,7 +1129,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1005
1129
|
yp_buffer_append_u32(buffer, ((yp_local_variable_operator_write_node_t *)node)->depth);
|
1006
1130
|
break;
|
1007
1131
|
}
|
1008
|
-
case
|
1132
|
+
case YP_LOCAL_VARIABLE_OR_WRITE_NODE: {
|
1009
1133
|
yp_serialize_location(parser, &((yp_local_variable_or_write_node_t *)node)->name_loc, buffer);
|
1010
1134
|
yp_serialize_location(parser, &((yp_local_variable_or_write_node_t *)node)->operator_loc, buffer);
|
1011
1135
|
yp_serialize_node(parser, (yp_node_t *)((yp_local_variable_or_write_node_t *)node)->value, buffer);
|
@@ -1013,17 +1137,17 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1013
1137
|
yp_buffer_append_u32(buffer, ((yp_local_variable_or_write_node_t *)node)->depth);
|
1014
1138
|
break;
|
1015
1139
|
}
|
1016
|
-
case
|
1140
|
+
case YP_LOCAL_VARIABLE_READ_NODE: {
|
1017
1141
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_read_node_t *)node)->name));
|
1018
1142
|
yp_buffer_append_u32(buffer, ((yp_local_variable_read_node_t *)node)->depth);
|
1019
1143
|
break;
|
1020
1144
|
}
|
1021
|
-
case
|
1145
|
+
case YP_LOCAL_VARIABLE_TARGET_NODE: {
|
1022
1146
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_target_node_t *)node)->name));
|
1023
1147
|
yp_buffer_append_u32(buffer, ((yp_local_variable_target_node_t *)node)->depth);
|
1024
1148
|
break;
|
1025
1149
|
}
|
1026
|
-
case
|
1150
|
+
case YP_LOCAL_VARIABLE_WRITE_NODE: {
|
1027
1151
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_local_variable_write_node_t *)node)->name));
|
1028
1152
|
yp_buffer_append_u32(buffer, ((yp_local_variable_write_node_t *)node)->depth);
|
1029
1153
|
yp_serialize_location(parser, &((yp_local_variable_write_node_t *)node)->name_loc, buffer);
|
@@ -1031,22 +1155,22 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1031
1155
|
yp_serialize_location(parser, &((yp_local_variable_write_node_t *)node)->operator_loc, buffer);
|
1032
1156
|
break;
|
1033
1157
|
}
|
1034
|
-
case
|
1158
|
+
case YP_MATCH_PREDICATE_NODE: {
|
1035
1159
|
yp_serialize_node(parser, (yp_node_t *)((yp_match_predicate_node_t *)node)->value, buffer);
|
1036
1160
|
yp_serialize_node(parser, (yp_node_t *)((yp_match_predicate_node_t *)node)->pattern, buffer);
|
1037
1161
|
yp_serialize_location(parser, &((yp_match_predicate_node_t *)node)->operator_loc, buffer);
|
1038
1162
|
break;
|
1039
1163
|
}
|
1040
|
-
case
|
1164
|
+
case YP_MATCH_REQUIRED_NODE: {
|
1041
1165
|
yp_serialize_node(parser, (yp_node_t *)((yp_match_required_node_t *)node)->value, buffer);
|
1042
1166
|
yp_serialize_node(parser, (yp_node_t *)((yp_match_required_node_t *)node)->pattern, buffer);
|
1043
1167
|
yp_serialize_location(parser, &((yp_match_required_node_t *)node)->operator_loc, buffer);
|
1044
1168
|
break;
|
1045
1169
|
}
|
1046
|
-
case
|
1170
|
+
case YP_MISSING_NODE: {
|
1047
1171
|
break;
|
1048
1172
|
}
|
1049
|
-
case
|
1173
|
+
case YP_MODULE_NODE: {
|
1050
1174
|
uint32_t locals_size = yp_sizet_to_u32(((yp_module_node_t *)node)->locals.size);
|
1051
1175
|
yp_buffer_append_u32(buffer, locals_size);
|
1052
1176
|
for (uint32_t index = 0; index < locals_size; index++) {
|
@@ -1060,25 +1184,34 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1060
1184
|
yp_serialize_node(parser, (yp_node_t *)((yp_module_node_t *)node)->body, buffer);
|
1061
1185
|
}
|
1062
1186
|
yp_serialize_location(parser, &((yp_module_node_t *)node)->end_keyword_loc, buffer);
|
1063
|
-
|
1187
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_module_node_t *)node)->name));
|
1064
1188
|
break;
|
1065
1189
|
}
|
1066
|
-
case
|
1067
|
-
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);
|
1068
1192
|
yp_buffer_append_u32(buffer, targets_size);
|
1069
1193
|
for (uint32_t index = 0; index < targets_size; index++) {
|
1070
|
-
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);
|
1071
1195
|
}
|
1072
|
-
if (((
|
1196
|
+
if (((yp_multi_target_node_t *)node)->lparen_loc.start == NULL) {
|
1073
1197
|
yp_buffer_append_u8(buffer, 0);
|
1074
1198
|
} else {
|
1075
1199
|
yp_buffer_append_u8(buffer, 1);
|
1076
|
-
yp_serialize_location(parser, &((
|
1200
|
+
yp_serialize_location(parser, &((yp_multi_target_node_t *)node)->lparen_loc, buffer);
|
1077
1201
|
}
|
1078
|
-
if (((
|
1202
|
+
if (((yp_multi_target_node_t *)node)->rparen_loc.start == NULL) {
|
1079
1203
|
yp_buffer_append_u8(buffer, 0);
|
1080
1204
|
} else {
|
1081
|
-
|
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);
|
1082
1215
|
}
|
1083
1216
|
if (((yp_multi_write_node_t *)node)->lparen_loc.start == NULL) {
|
1084
1217
|
yp_buffer_append_u8(buffer, 0);
|
@@ -1092,9 +1225,11 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1092
1225
|
yp_buffer_append_u8(buffer, 1);
|
1093
1226
|
yp_serialize_location(parser, &((yp_multi_write_node_t *)node)->rparen_loc, buffer);
|
1094
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);
|
1095
1230
|
break;
|
1096
1231
|
}
|
1097
|
-
case
|
1232
|
+
case YP_NEXT_NODE: {
|
1098
1233
|
if (((yp_next_node_t *)node)->arguments == NULL) {
|
1099
1234
|
yp_buffer_append_u8(buffer, 0);
|
1100
1235
|
} else {
|
@@ -1103,32 +1238,32 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1103
1238
|
yp_serialize_location(parser, &((yp_next_node_t *)node)->keyword_loc, buffer);
|
1104
1239
|
break;
|
1105
1240
|
}
|
1106
|
-
case
|
1241
|
+
case YP_NIL_NODE: {
|
1107
1242
|
break;
|
1108
1243
|
}
|
1109
|
-
case
|
1244
|
+
case YP_NO_KEYWORDS_PARAMETER_NODE: {
|
1110
1245
|
yp_serialize_location(parser, &((yp_no_keywords_parameter_node_t *)node)->operator_loc, buffer);
|
1111
1246
|
yp_serialize_location(parser, &((yp_no_keywords_parameter_node_t *)node)->keyword_loc, buffer);
|
1112
1247
|
break;
|
1113
1248
|
}
|
1114
|
-
case
|
1249
|
+
case YP_NUMBERED_REFERENCE_READ_NODE: {
|
1115
1250
|
yp_buffer_append_u32(buffer, ((yp_numbered_reference_read_node_t *)node)->number);
|
1116
1251
|
break;
|
1117
1252
|
}
|
1118
|
-
case
|
1253
|
+
case YP_OPTIONAL_PARAMETER_NODE: {
|
1119
1254
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_optional_parameter_node_t *)node)->name));
|
1120
1255
|
yp_serialize_location(parser, &((yp_optional_parameter_node_t *)node)->name_loc, buffer);
|
1121
1256
|
yp_serialize_location(parser, &((yp_optional_parameter_node_t *)node)->operator_loc, buffer);
|
1122
1257
|
yp_serialize_node(parser, (yp_node_t *)((yp_optional_parameter_node_t *)node)->value, buffer);
|
1123
1258
|
break;
|
1124
1259
|
}
|
1125
|
-
case
|
1260
|
+
case YP_OR_NODE: {
|
1126
1261
|
yp_serialize_node(parser, (yp_node_t *)((yp_or_node_t *)node)->left, buffer);
|
1127
1262
|
yp_serialize_node(parser, (yp_node_t *)((yp_or_node_t *)node)->right, buffer);
|
1128
1263
|
yp_serialize_location(parser, &((yp_or_node_t *)node)->operator_loc, buffer);
|
1129
1264
|
break;
|
1130
1265
|
}
|
1131
|
-
case
|
1266
|
+
case YP_PARAMETERS_NODE: {
|
1132
1267
|
uint32_t requireds_size = yp_sizet_to_u32(((yp_parameters_node_t *)node)->requireds.size);
|
1133
1268
|
yp_buffer_append_u32(buffer, requireds_size);
|
1134
1269
|
for (uint32_t index = 0; index < requireds_size; index++) {
|
@@ -1166,7 +1301,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1166
1301
|
}
|
1167
1302
|
break;
|
1168
1303
|
}
|
1169
|
-
case
|
1304
|
+
case YP_PARENTHESES_NODE: {
|
1170
1305
|
if (((yp_parentheses_node_t *)node)->body == NULL) {
|
1171
1306
|
yp_buffer_append_u8(buffer, 0);
|
1172
1307
|
} else {
|
@@ -1176,19 +1311,19 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1176
1311
|
yp_serialize_location(parser, &((yp_parentheses_node_t *)node)->closing_loc, buffer);
|
1177
1312
|
break;
|
1178
1313
|
}
|
1179
|
-
case
|
1314
|
+
case YP_PINNED_EXPRESSION_NODE: {
|
1180
1315
|
yp_serialize_node(parser, (yp_node_t *)((yp_pinned_expression_node_t *)node)->expression, buffer);
|
1181
1316
|
yp_serialize_location(parser, &((yp_pinned_expression_node_t *)node)->operator_loc, buffer);
|
1182
1317
|
yp_serialize_location(parser, &((yp_pinned_expression_node_t *)node)->lparen_loc, buffer);
|
1183
1318
|
yp_serialize_location(parser, &((yp_pinned_expression_node_t *)node)->rparen_loc, buffer);
|
1184
1319
|
break;
|
1185
1320
|
}
|
1186
|
-
case
|
1321
|
+
case YP_PINNED_VARIABLE_NODE: {
|
1187
1322
|
yp_serialize_node(parser, (yp_node_t *)((yp_pinned_variable_node_t *)node)->variable, buffer);
|
1188
1323
|
yp_serialize_location(parser, &((yp_pinned_variable_node_t *)node)->operator_loc, buffer);
|
1189
1324
|
break;
|
1190
1325
|
}
|
1191
|
-
case
|
1326
|
+
case YP_POST_EXECUTION_NODE: {
|
1192
1327
|
if (((yp_post_execution_node_t *)node)->statements == NULL) {
|
1193
1328
|
yp_buffer_append_u8(buffer, 0);
|
1194
1329
|
} else {
|
@@ -1199,7 +1334,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1199
1334
|
yp_serialize_location(parser, &((yp_post_execution_node_t *)node)->closing_loc, buffer);
|
1200
1335
|
break;
|
1201
1336
|
}
|
1202
|
-
case
|
1337
|
+
case YP_PRE_EXECUTION_NODE: {
|
1203
1338
|
if (((yp_pre_execution_node_t *)node)->statements == NULL) {
|
1204
1339
|
yp_buffer_append_u8(buffer, 0);
|
1205
1340
|
} else {
|
@@ -1210,7 +1345,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1210
1345
|
yp_serialize_location(parser, &((yp_pre_execution_node_t *)node)->closing_loc, buffer);
|
1211
1346
|
break;
|
1212
1347
|
}
|
1213
|
-
case
|
1348
|
+
case YP_PROGRAM_NODE: {
|
1214
1349
|
uint32_t locals_size = yp_sizet_to_u32(((yp_program_node_t *)node)->locals.size);
|
1215
1350
|
yp_buffer_append_u32(buffer, locals_size);
|
1216
1351
|
for (uint32_t index = 0; index < locals_size; index++) {
|
@@ -1219,7 +1354,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1219
1354
|
yp_serialize_node(parser, (yp_node_t *)((yp_program_node_t *)node)->statements, buffer);
|
1220
1355
|
break;
|
1221
1356
|
}
|
1222
|
-
case
|
1357
|
+
case YP_RANGE_NODE: {
|
1223
1358
|
if (((yp_range_node_t *)node)->left == NULL) {
|
1224
1359
|
yp_buffer_append_u8(buffer, 0);
|
1225
1360
|
} else {
|
@@ -1234,14 +1369,14 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1234
1369
|
yp_buffer_append_u32(buffer, node->flags >> 1);
|
1235
1370
|
break;
|
1236
1371
|
}
|
1237
|
-
case
|
1372
|
+
case YP_RATIONAL_NODE: {
|
1238
1373
|
yp_serialize_node(parser, (yp_node_t *)((yp_rational_node_t *)node)->numeric, buffer);
|
1239
1374
|
break;
|
1240
1375
|
}
|
1241
|
-
case
|
1376
|
+
case YP_REDO_NODE: {
|
1242
1377
|
break;
|
1243
1378
|
}
|
1244
|
-
case
|
1379
|
+
case YP_REGULAR_EXPRESSION_NODE: {
|
1245
1380
|
yp_serialize_location(parser, &((yp_regular_expression_node_t *)node)->opening_loc, buffer);
|
1246
1381
|
yp_serialize_location(parser, &((yp_regular_expression_node_t *)node)->content_loc, buffer);
|
1247
1382
|
yp_serialize_location(parser, &((yp_regular_expression_node_t *)node)->closing_loc, buffer);
|
@@ -1249,7 +1384,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1249
1384
|
yp_buffer_append_u32(buffer, node->flags >> 1);
|
1250
1385
|
break;
|
1251
1386
|
}
|
1252
|
-
case
|
1387
|
+
case YP_REQUIRED_DESTRUCTURED_PARAMETER_NODE: {
|
1253
1388
|
uint32_t parameters_size = yp_sizet_to_u32(((yp_required_destructured_parameter_node_t *)node)->parameters.size);
|
1254
1389
|
yp_buffer_append_u32(buffer, parameters_size);
|
1255
1390
|
for (uint32_t index = 0; index < parameters_size; index++) {
|
@@ -1259,17 +1394,17 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1259
1394
|
yp_serialize_location(parser, &((yp_required_destructured_parameter_node_t *)node)->closing_loc, buffer);
|
1260
1395
|
break;
|
1261
1396
|
}
|
1262
|
-
case
|
1397
|
+
case YP_REQUIRED_PARAMETER_NODE: {
|
1263
1398
|
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_required_parameter_node_t *)node)->name));
|
1264
1399
|
break;
|
1265
1400
|
}
|
1266
|
-
case
|
1401
|
+
case YP_RESCUE_MODIFIER_NODE: {
|
1267
1402
|
yp_serialize_node(parser, (yp_node_t *)((yp_rescue_modifier_node_t *)node)->expression, buffer);
|
1268
1403
|
yp_serialize_location(parser, &((yp_rescue_modifier_node_t *)node)->keyword_loc, buffer);
|
1269
1404
|
yp_serialize_node(parser, (yp_node_t *)((yp_rescue_modifier_node_t *)node)->rescue_expression, buffer);
|
1270
1405
|
break;
|
1271
1406
|
}
|
1272
|
-
case
|
1407
|
+
case YP_RESCUE_NODE: {
|
1273
1408
|
yp_serialize_location(parser, &((yp_rescue_node_t *)node)->keyword_loc, buffer);
|
1274
1409
|
uint32_t exceptions_size = yp_sizet_to_u32(((yp_rescue_node_t *)node)->exceptions.size);
|
1275
1410
|
yp_buffer_append_u32(buffer, exceptions_size);
|
@@ -1299,20 +1434,21 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1299
1434
|
}
|
1300
1435
|
break;
|
1301
1436
|
}
|
1302
|
-
case
|
1303
|
-
|
1437
|
+
case YP_REST_PARAMETER_NODE: {
|
1438
|
+
yp_buffer_append_u32(buffer, yp_sizet_to_u32(((yp_rest_parameter_node_t *)node)->name));
|
1304
1439
|
if (((yp_rest_parameter_node_t *)node)->name_loc.start == NULL) {
|
1305
1440
|
yp_buffer_append_u8(buffer, 0);
|
1306
1441
|
} else {
|
1307
1442
|
yp_buffer_append_u8(buffer, 1);
|
1308
1443
|
yp_serialize_location(parser, &((yp_rest_parameter_node_t *)node)->name_loc, buffer);
|
1309
1444
|
}
|
1445
|
+
yp_serialize_location(parser, &((yp_rest_parameter_node_t *)node)->operator_loc, buffer);
|
1310
1446
|
break;
|
1311
1447
|
}
|
1312
|
-
case
|
1448
|
+
case YP_RETRY_NODE: {
|
1313
1449
|
break;
|
1314
1450
|
}
|
1315
|
-
case
|
1451
|
+
case YP_RETURN_NODE: {
|
1316
1452
|
yp_serialize_location(parser, &((yp_return_node_t *)node)->keyword_loc, buffer);
|
1317
1453
|
if (((yp_return_node_t *)node)->arguments == NULL) {
|
1318
1454
|
yp_buffer_append_u8(buffer, 0);
|
@@ -1321,10 +1457,10 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1321
1457
|
}
|
1322
1458
|
break;
|
1323
1459
|
}
|
1324
|
-
case
|
1460
|
+
case YP_SELF_NODE: {
|
1325
1461
|
break;
|
1326
1462
|
}
|
1327
|
-
case
|
1463
|
+
case YP_SINGLETON_CLASS_NODE: {
|
1328
1464
|
uint32_t locals_size = yp_sizet_to_u32(((yp_singleton_class_node_t *)node)->locals.size);
|
1329
1465
|
yp_buffer_append_u32(buffer, locals_size);
|
1330
1466
|
for (uint32_t index = 0; index < locals_size; index++) {
|
@@ -1341,17 +1477,17 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1341
1477
|
yp_serialize_location(parser, &((yp_singleton_class_node_t *)node)->end_keyword_loc, buffer);
|
1342
1478
|
break;
|
1343
1479
|
}
|
1344
|
-
case
|
1480
|
+
case YP_SOURCE_ENCODING_NODE: {
|
1345
1481
|
break;
|
1346
1482
|
}
|
1347
|
-
case
|
1483
|
+
case YP_SOURCE_FILE_NODE: {
|
1348
1484
|
yp_serialize_string(parser, &((yp_source_file_node_t *)node)->filepath, buffer);
|
1349
1485
|
break;
|
1350
1486
|
}
|
1351
|
-
case
|
1487
|
+
case YP_SOURCE_LINE_NODE: {
|
1352
1488
|
break;
|
1353
1489
|
}
|
1354
|
-
case
|
1490
|
+
case YP_SPLAT_NODE: {
|
1355
1491
|
yp_serialize_location(parser, &((yp_splat_node_t *)node)->operator_loc, buffer);
|
1356
1492
|
if (((yp_splat_node_t *)node)->expression == NULL) {
|
1357
1493
|
yp_buffer_append_u8(buffer, 0);
|
@@ -1360,7 +1496,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1360
1496
|
}
|
1361
1497
|
break;
|
1362
1498
|
}
|
1363
|
-
case
|
1499
|
+
case YP_STATEMENTS_NODE: {
|
1364
1500
|
uint32_t body_size = yp_sizet_to_u32(((yp_statements_node_t *)node)->body.size);
|
1365
1501
|
yp_buffer_append_u32(buffer, body_size);
|
1366
1502
|
for (uint32_t index = 0; index < body_size; index++) {
|
@@ -1368,12 +1504,12 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1368
1504
|
}
|
1369
1505
|
break;
|
1370
1506
|
}
|
1371
|
-
case
|
1507
|
+
case YP_STRING_CONCAT_NODE: {
|
1372
1508
|
yp_serialize_node(parser, (yp_node_t *)((yp_string_concat_node_t *)node)->left, buffer);
|
1373
1509
|
yp_serialize_node(parser, (yp_node_t *)((yp_string_concat_node_t *)node)->right, buffer);
|
1374
1510
|
break;
|
1375
1511
|
}
|
1376
|
-
case
|
1512
|
+
case YP_STRING_NODE: {
|
1377
1513
|
if (((yp_string_node_t *)node)->opening_loc.start == NULL) {
|
1378
1514
|
yp_buffer_append_u8(buffer, 0);
|
1379
1515
|
} else {
|
@@ -1390,7 +1526,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1390
1526
|
yp_serialize_string(parser, &((yp_string_node_t *)node)->unescaped, buffer);
|
1391
1527
|
break;
|
1392
1528
|
}
|
1393
|
-
case
|
1529
|
+
case YP_SUPER_NODE: {
|
1394
1530
|
yp_serialize_location(parser, &((yp_super_node_t *)node)->keyword_loc, buffer);
|
1395
1531
|
if (((yp_super_node_t *)node)->lparen_loc.start == NULL) {
|
1396
1532
|
yp_buffer_append_u8(buffer, 0);
|
@@ -1416,7 +1552,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1416
1552
|
}
|
1417
1553
|
break;
|
1418
1554
|
}
|
1419
|
-
case
|
1555
|
+
case YP_SYMBOL_NODE: {
|
1420
1556
|
if (((yp_symbol_node_t *)node)->opening_loc.start == NULL) {
|
1421
1557
|
yp_buffer_append_u8(buffer, 0);
|
1422
1558
|
} else {
|
@@ -1438,10 +1574,10 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1438
1574
|
yp_serialize_string(parser, &((yp_symbol_node_t *)node)->unescaped, buffer);
|
1439
1575
|
break;
|
1440
1576
|
}
|
1441
|
-
case
|
1577
|
+
case YP_TRUE_NODE: {
|
1442
1578
|
break;
|
1443
1579
|
}
|
1444
|
-
case
|
1580
|
+
case YP_UNDEF_NODE: {
|
1445
1581
|
uint32_t names_size = yp_sizet_to_u32(((yp_undef_node_t *)node)->names.size);
|
1446
1582
|
yp_buffer_append_u32(buffer, names_size);
|
1447
1583
|
for (uint32_t index = 0; index < names_size; index++) {
|
@@ -1450,7 +1586,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1450
1586
|
yp_serialize_location(parser, &((yp_undef_node_t *)node)->keyword_loc, buffer);
|
1451
1587
|
break;
|
1452
1588
|
}
|
1453
|
-
case
|
1589
|
+
case YP_UNLESS_NODE: {
|
1454
1590
|
yp_serialize_location(parser, &((yp_unless_node_t *)node)->keyword_loc, buffer);
|
1455
1591
|
yp_serialize_node(parser, (yp_node_t *)((yp_unless_node_t *)node)->predicate, buffer);
|
1456
1592
|
if (((yp_unless_node_t *)node)->statements == NULL) {
|
@@ -1471,7 +1607,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1471
1607
|
}
|
1472
1608
|
break;
|
1473
1609
|
}
|
1474
|
-
case
|
1610
|
+
case YP_UNTIL_NODE: {
|
1475
1611
|
yp_serialize_location(parser, &((yp_until_node_t *)node)->keyword_loc, buffer);
|
1476
1612
|
if (((yp_until_node_t *)node)->closing_loc.start == NULL) {
|
1477
1613
|
yp_buffer_append_u8(buffer, 0);
|
@@ -1488,7 +1624,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1488
1624
|
yp_buffer_append_u32(buffer, node->flags >> 1);
|
1489
1625
|
break;
|
1490
1626
|
}
|
1491
|
-
case
|
1627
|
+
case YP_WHEN_NODE: {
|
1492
1628
|
yp_serialize_location(parser, &((yp_when_node_t *)node)->keyword_loc, buffer);
|
1493
1629
|
uint32_t conditions_size = yp_sizet_to_u32(((yp_when_node_t *)node)->conditions.size);
|
1494
1630
|
yp_buffer_append_u32(buffer, conditions_size);
|
@@ -1502,7 +1638,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1502
1638
|
}
|
1503
1639
|
break;
|
1504
1640
|
}
|
1505
|
-
case
|
1641
|
+
case YP_WHILE_NODE: {
|
1506
1642
|
yp_serialize_location(parser, &((yp_while_node_t *)node)->keyword_loc, buffer);
|
1507
1643
|
if (((yp_while_node_t *)node)->closing_loc.start == NULL) {
|
1508
1644
|
yp_buffer_append_u8(buffer, 0);
|
@@ -1519,14 +1655,14 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
|
1519
1655
|
yp_buffer_append_u32(buffer, node->flags >> 1);
|
1520
1656
|
break;
|
1521
1657
|
}
|
1522
|
-
case
|
1658
|
+
case YP_X_STRING_NODE: {
|
1523
1659
|
yp_serialize_location(parser, &((yp_x_string_node_t *)node)->opening_loc, buffer);
|
1524
1660
|
yp_serialize_location(parser, &((yp_x_string_node_t *)node)->content_loc, buffer);
|
1525
1661
|
yp_serialize_location(parser, &((yp_x_string_node_t *)node)->closing_loc, buffer);
|
1526
1662
|
yp_serialize_string(parser, &((yp_x_string_node_t *)node)->unescaped, buffer);
|
1527
1663
|
break;
|
1528
1664
|
}
|
1529
|
-
case
|
1665
|
+
case YP_YIELD_NODE: {
|
1530
1666
|
yp_serialize_location(parser, &((yp_yield_node_t *)node)->keyword_loc, buffer);
|
1531
1667
|
if (((yp_yield_node_t *)node)->lparen_loc.start == NULL) {
|
1532
1668
|
yp_buffer_append_u8(buffer, 0);
|
@@ -1599,7 +1735,7 @@ yp_serialize_encoding(yp_encoding_t *encoding, yp_buffer_t *buffer) {
|
|
1599
1735
|
yp_buffer_append_str(buffer, encoding->name, encoding_length);
|
1600
1736
|
}
|
1601
1737
|
|
1602
|
-
#line
|
1738
|
+
#line 175 "serialize.c.erb"
|
1603
1739
|
void
|
1604
1740
|
yp_serialize_content(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
|
1605
1741
|
yp_serialize_encoding(&parser->encoding, buffer);
|
@@ -1634,12 +1770,31 @@ yp_serialize_content(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer)
|
|
1634
1770
|
// If we find a constant at this index, serialize it at the correct
|
1635
1771
|
// index in the buffer.
|
1636
1772
|
if (constant->id != 0) {
|
1637
|
-
size_t buffer_offset = offset + ((constant->id - 1) * 8);
|
1773
|
+
size_t buffer_offset = offset + ((((size_t) constant->id) - 1) * 8);
|
1638
1774
|
|
1639
|
-
|
1640
|
-
|
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
|
+
}
|
1641
1795
|
|
1642
|
-
|
1796
|
+
// Now we can write the length of the constant into the buffer.
|
1797
|
+
uint32_t constant_length = yp_sizet_to_u32(constant->length);
|
1643
1798
|
memcpy(buffer->value + buffer_offset + 4, &constant_length, 4);
|
1644
1799
|
}
|
1645
1800
|
}
|