12typedef int pm_json_unused_t;
14#ifndef PRISM_EXCLUDE_JSON
16#include "prism/internal/buffer.h"
17#include "prism/internal/constant_pool.h"
18#include "prism/internal/integer.h"
19#include "prism/internal/parser.h"
26 pm_buffer_append_byte(buffer,
'"');
27 pm_buffer_append_source(buffer,
constant->start,
constant->length, PM_BUFFER_ESCAPING_JSON);
28 pm_buffer_append_byte(buffer,
'"');
33 pm_buffer_append_format(buffer,
"{\"start\":%" PRIu32
",\"length\":%" PRIu32
"}", location->
start, location->
length);
41 switch (PM_NODE_TYPE(node)) {
42 case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
43 pm_buffer_append_string(buffer,
"{\"type\":\"AliasGlobalVariableNode\",\"location\":", 45);
46 pm_dump_json_location(buffer, &
cast->base.location);
49 pm_buffer_append_byte(buffer,
',');
50 pm_buffer_append_string(buffer,
"\"new_name\":", 11);
51 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->new_name);
54 pm_buffer_append_byte(buffer,
',');
55 pm_buffer_append_string(buffer,
"\"old_name\":", 11);
56 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->old_name);
59 pm_buffer_append_byte(buffer,
',');
60 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
61 pm_dump_json_location(buffer, &
cast->keyword_loc);
63 pm_buffer_append_byte(buffer,
'}');
66 case PM_ALIAS_METHOD_NODE: {
67 pm_buffer_append_string(buffer,
"{\"type\":\"AliasMethodNode\",\"location\":", 37);
70 pm_dump_json_location(buffer, &
cast->base.location);
73 pm_buffer_append_byte(buffer,
',');
74 pm_buffer_append_string(buffer,
"\"new_name\":", 11);
75 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->new_name);
78 pm_buffer_append_byte(buffer,
',');
79 pm_buffer_append_string(buffer,
"\"old_name\":", 11);
80 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->old_name);
83 pm_buffer_append_byte(buffer,
',');
84 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
85 pm_dump_json_location(buffer, &
cast->keyword_loc);
87 pm_buffer_append_byte(buffer,
'}');
90 case PM_ALTERNATION_PATTERN_NODE: {
91 pm_buffer_append_string(buffer,
"{\"type\":\"AlternationPatternNode\",\"location\":", 44);
94 pm_dump_json_location(buffer, &
cast->base.location);
97 pm_buffer_append_byte(buffer,
',');
98 pm_buffer_append_string(buffer,
"\"left\":", 7);
102 pm_buffer_append_byte(buffer,
',');
103 pm_buffer_append_string(buffer,
"\"right\":", 8);
104 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->right);
107 pm_buffer_append_byte(buffer,
',');
108 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
109 pm_dump_json_location(buffer, &
cast->operator_loc);
111 pm_buffer_append_byte(buffer,
'}');
115 pm_buffer_append_string(buffer,
"{\"type\":\"AndNode\",\"location\":", 29);
118 pm_dump_json_location(buffer, &
cast->base.location);
121 pm_buffer_append_byte(buffer,
',');
122 pm_buffer_append_string(buffer,
"\"left\":", 7);
123 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->left);
126 pm_buffer_append_byte(buffer,
',');
127 pm_buffer_append_string(buffer,
"\"right\":", 8);
128 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->right);
131 pm_buffer_append_byte(buffer,
',');
132 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
133 pm_dump_json_location(buffer, &
cast->operator_loc);
135 pm_buffer_append_byte(buffer,
'}');
138 case PM_ARGUMENTS_NODE: {
139 pm_buffer_append_string(buffer,
"{\"type\":\"ArgumentsNode\",\"location\":", 35);
142 pm_dump_json_location(buffer, &
cast->base.location);
145 pm_buffer_append_byte(buffer,
',');
146 pm_buffer_append_string(buffer,
"\"flags\":", 8);
148 pm_buffer_append_byte(buffer,
'[');
149 if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_FORWARDING)) {
150 if (flags != 0) pm_buffer_append_byte(buffer,
',');
151 pm_buffer_append_string(buffer,
"\"CONTAINS_FORWARDING\"", 21);
154 if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS)) {
155 if (flags != 0) pm_buffer_append_byte(buffer,
',');
156 pm_buffer_append_string(buffer,
"\"CONTAINS_KEYWORDS\"", 19);
159 if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT)) {
160 if (flags != 0) pm_buffer_append_byte(buffer,
',');
161 pm_buffer_append_string(buffer,
"\"CONTAINS_KEYWORD_SPLAT\"", 24);
164 if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT)) {
165 if (flags != 0) pm_buffer_append_byte(buffer,
',');
166 pm_buffer_append_string(buffer,
"\"CONTAINS_SPLAT\"", 16);
169 if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_MULTIPLE_SPLATS)) {
170 if (flags != 0) pm_buffer_append_byte(buffer,
',');
171 pm_buffer_append_string(buffer,
"\"CONTAINS_MULTIPLE_SPLATS\"", 26);
174 pm_buffer_append_byte(buffer,
']');
177 pm_buffer_append_byte(buffer,
',');
178 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
180 pm_buffer_append_byte(buffer,
'[');
182 for (
size_t index = 0; index < arguments->
size; index++) {
183 if (index != 0) pm_buffer_append_byte(buffer,
',');
184 pm_dump_json(buffer, parser, arguments->
nodes[index]);
186 pm_buffer_append_byte(buffer,
']');
188 pm_buffer_append_byte(buffer,
'}');
191 case PM_ARRAY_NODE: {
192 pm_buffer_append_string(buffer,
"{\"type\":\"ArrayNode\",\"location\":", 31);
195 pm_dump_json_location(buffer, &
cast->base.location);
198 pm_buffer_append_byte(buffer,
',');
199 pm_buffer_append_string(buffer,
"\"flags\":", 8);
201 pm_buffer_append_byte(buffer,
'[');
202 if (PM_NODE_FLAG_P(cast, PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT)) {
203 if (flags != 0) pm_buffer_append_byte(buffer,
',');
204 pm_buffer_append_string(buffer,
"\"CONTAINS_SPLAT\"", 16);
207 pm_buffer_append_byte(buffer,
']');
210 pm_buffer_append_byte(buffer,
',');
211 pm_buffer_append_string(buffer,
"\"elements\":", 11);
213 pm_buffer_append_byte(buffer,
'[');
215 for (
size_t index = 0; index < elements->
size; index++) {
216 if (index != 0) pm_buffer_append_byte(buffer,
',');
217 pm_dump_json(buffer, parser, elements->
nodes[index]);
219 pm_buffer_append_byte(buffer,
']');
222 pm_buffer_append_byte(buffer,
',');
223 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
224 if (
cast->opening_loc.length != 0) {
225 pm_dump_json_location(buffer, &
cast->opening_loc);
227 pm_buffer_append_string(buffer,
"null", 4);
231 pm_buffer_append_byte(buffer,
',');
232 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
233 if (
cast->closing_loc.length != 0) {
234 pm_dump_json_location(buffer, &
cast->closing_loc);
236 pm_buffer_append_string(buffer,
"null", 4);
239 pm_buffer_append_byte(buffer,
'}');
242 case PM_ARRAY_PATTERN_NODE: {
243 pm_buffer_append_string(buffer,
"{\"type\":\"ArrayPatternNode\",\"location\":", 38);
246 pm_dump_json_location(buffer, &
cast->base.location);
249 pm_buffer_append_byte(buffer,
',');
250 pm_buffer_append_string(buffer,
"\"constant\":", 11);
251 if (
cast->constant != NULL) {
252 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->constant);
254 pm_buffer_append_string(buffer,
"null", 4);
258 pm_buffer_append_byte(buffer,
',');
259 pm_buffer_append_string(buffer,
"\"requireds\":", 12);
261 pm_buffer_append_byte(buffer,
'[');
263 for (
size_t index = 0; index < requireds->
size; index++) {
264 if (index != 0) pm_buffer_append_byte(buffer,
',');
265 pm_dump_json(buffer, parser, requireds->
nodes[index]);
267 pm_buffer_append_byte(buffer,
']');
270 pm_buffer_append_byte(buffer,
',');
271 pm_buffer_append_string(buffer,
"\"rest\":", 7);
272 if (
cast->rest != NULL) {
273 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->rest);
275 pm_buffer_append_string(buffer,
"null", 4);
279 pm_buffer_append_byte(buffer,
',');
280 pm_buffer_append_string(buffer,
"\"posts\":", 8);
282 pm_buffer_append_byte(buffer,
'[');
284 for (
size_t index = 0; index < posts->
size; index++) {
285 if (index != 0) pm_buffer_append_byte(buffer,
',');
286 pm_dump_json(buffer, parser, posts->
nodes[index]);
288 pm_buffer_append_byte(buffer,
']');
291 pm_buffer_append_byte(buffer,
',');
292 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
293 if (
cast->opening_loc.length != 0) {
294 pm_dump_json_location(buffer, &
cast->opening_loc);
296 pm_buffer_append_string(buffer,
"null", 4);
300 pm_buffer_append_byte(buffer,
',');
301 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
302 if (
cast->closing_loc.length != 0) {
303 pm_dump_json_location(buffer, &
cast->closing_loc);
305 pm_buffer_append_string(buffer,
"null", 4);
308 pm_buffer_append_byte(buffer,
'}');
311 case PM_ASSOC_NODE: {
312 pm_buffer_append_string(buffer,
"{\"type\":\"AssocNode\",\"location\":", 31);
315 pm_dump_json_location(buffer, &
cast->base.location);
318 pm_buffer_append_byte(buffer,
',');
319 pm_buffer_append_string(buffer,
"\"key\":", 6);
323 pm_buffer_append_byte(buffer,
',');
324 pm_buffer_append_string(buffer,
"\"value\":", 8);
325 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
328 pm_buffer_append_byte(buffer,
',');
329 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
330 if (
cast->operator_loc.length != 0) {
331 pm_dump_json_location(buffer, &
cast->operator_loc);
333 pm_buffer_append_string(buffer,
"null", 4);
336 pm_buffer_append_byte(buffer,
'}');
339 case PM_ASSOC_SPLAT_NODE: {
340 pm_buffer_append_string(buffer,
"{\"type\":\"AssocSplatNode\",\"location\":", 36);
343 pm_dump_json_location(buffer, &
cast->base.location);
346 pm_buffer_append_byte(buffer,
',');
347 pm_buffer_append_string(buffer,
"\"value\":", 8);
348 if (
cast->value != NULL) {
349 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
351 pm_buffer_append_string(buffer,
"null", 4);
355 pm_buffer_append_byte(buffer,
',');
356 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
357 pm_dump_json_location(buffer, &
cast->operator_loc);
359 pm_buffer_append_byte(buffer,
'}');
362 case PM_BACK_REFERENCE_READ_NODE: {
363 pm_buffer_append_string(buffer,
"{\"type\":\"BackReferenceReadNode\",\"location\":", 43);
366 pm_dump_json_location(buffer, &
cast->base.location);
369 pm_buffer_append_byte(buffer,
',');
370 pm_buffer_append_string(buffer,
"\"name\":", 7);
371 pm_dump_json_constant(buffer, parser,
cast->name);
373 pm_buffer_append_byte(buffer,
'}');
376 case PM_BEGIN_NODE: {
377 pm_buffer_append_string(buffer,
"{\"type\":\"BeginNode\",\"location\":", 31);
380 pm_dump_json_location(buffer, &
cast->base.location);
383 pm_buffer_append_byte(buffer,
',');
384 pm_buffer_append_string(buffer,
"\"begin_keyword_loc\":", 20);
385 if (
cast->begin_keyword_loc.length != 0) {
386 pm_dump_json_location(buffer, &
cast->begin_keyword_loc);
388 pm_buffer_append_string(buffer,
"null", 4);
392 pm_buffer_append_byte(buffer,
',');
393 pm_buffer_append_string(buffer,
"\"statements\":", 13);
394 if (
cast->statements != NULL) {
395 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->statements);
397 pm_buffer_append_string(buffer,
"null", 4);
401 pm_buffer_append_byte(buffer,
',');
402 pm_buffer_append_string(buffer,
"\"rescue_clause\":", 16);
403 if (
cast->rescue_clause != NULL) {
404 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->rescue_clause);
406 pm_buffer_append_string(buffer,
"null", 4);
410 pm_buffer_append_byte(buffer,
',');
411 pm_buffer_append_string(buffer,
"\"else_clause\":", 14);
412 if (
cast->else_clause != NULL) {
413 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->else_clause);
415 pm_buffer_append_string(buffer,
"null", 4);
419 pm_buffer_append_byte(buffer,
',');
420 pm_buffer_append_string(buffer,
"\"ensure_clause\":", 16);
421 if (
cast->ensure_clause != NULL) {
422 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->ensure_clause);
424 pm_buffer_append_string(buffer,
"null", 4);
428 pm_buffer_append_byte(buffer,
',');
429 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
430 if (
cast->end_keyword_loc.length != 0) {
431 pm_dump_json_location(buffer, &
cast->end_keyword_loc);
433 pm_buffer_append_string(buffer,
"null", 4);
436 pm_buffer_append_byte(buffer,
'}');
439 case PM_BLOCK_ARGUMENT_NODE: {
440 pm_buffer_append_string(buffer,
"{\"type\":\"BlockArgumentNode\",\"location\":", 39);
443 pm_dump_json_location(buffer, &
cast->base.location);
446 pm_buffer_append_byte(buffer,
',');
447 pm_buffer_append_string(buffer,
"\"expression\":", 13);
448 if (
cast->expression != NULL) {
449 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->expression);
451 pm_buffer_append_string(buffer,
"null", 4);
455 pm_buffer_append_byte(buffer,
',');
456 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
457 pm_dump_json_location(buffer, &
cast->operator_loc);
459 pm_buffer_append_byte(buffer,
'}');
462 case PM_BLOCK_LOCAL_VARIABLE_NODE: {
463 pm_buffer_append_string(buffer,
"{\"type\":\"BlockLocalVariableNode\",\"location\":", 44);
466 pm_dump_json_location(buffer, &
cast->base.location);
469 pm_buffer_append_byte(buffer,
',');
470 pm_buffer_append_string(buffer,
"\"flags\":", 8);
472 pm_buffer_append_byte(buffer,
'[');
473 if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
474 if (flags != 0) pm_buffer_append_byte(buffer,
',');
475 pm_buffer_append_string(buffer,
"\"REPEATED_PARAMETER\"", 20);
478 pm_buffer_append_byte(buffer,
']');
481 pm_buffer_append_byte(buffer,
',');
482 pm_buffer_append_string(buffer,
"\"name\":", 7);
483 pm_dump_json_constant(buffer, parser,
cast->name);
485 pm_buffer_append_byte(buffer,
'}');
488 case PM_BLOCK_NODE: {
489 pm_buffer_append_string(buffer,
"{\"type\":\"BlockNode\",\"location\":", 31);
492 pm_dump_json_location(buffer, &
cast->base.location);
495 pm_buffer_append_byte(buffer,
',');
496 pm_buffer_append_string(buffer,
"\"locals\":", 9);
498 pm_buffer_append_byte(buffer,
'[');
500 for (
size_t index = 0; index < locals->
size; index++) {
501 if (index != 0) pm_buffer_append_byte(buffer,
',');
502 pm_dump_json_constant(buffer, parser, locals->
ids[index]);
504 pm_buffer_append_byte(buffer,
']');
507 pm_buffer_append_byte(buffer,
',');
508 pm_buffer_append_string(buffer,
"\"parameters\":", 13);
509 if (
cast->parameters != NULL) {
510 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->parameters);
512 pm_buffer_append_string(buffer,
"null", 4);
516 pm_buffer_append_byte(buffer,
',');
517 pm_buffer_append_string(buffer,
"\"body\":", 7);
518 if (
cast->body != NULL) {
519 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->body);
521 pm_buffer_append_string(buffer,
"null", 4);
525 pm_buffer_append_byte(buffer,
',');
526 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
527 pm_dump_json_location(buffer, &
cast->opening_loc);
530 pm_buffer_append_byte(buffer,
',');
531 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
532 pm_dump_json_location(buffer, &
cast->closing_loc);
534 pm_buffer_append_byte(buffer,
'}');
537 case PM_BLOCK_PARAMETER_NODE: {
538 pm_buffer_append_string(buffer,
"{\"type\":\"BlockParameterNode\",\"location\":", 40);
541 pm_dump_json_location(buffer, &
cast->base.location);
544 pm_buffer_append_byte(buffer,
',');
545 pm_buffer_append_string(buffer,
"\"flags\":", 8);
547 pm_buffer_append_byte(buffer,
'[');
548 if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
549 if (flags != 0) pm_buffer_append_byte(buffer,
',');
550 pm_buffer_append_string(buffer,
"\"REPEATED_PARAMETER\"", 20);
553 pm_buffer_append_byte(buffer,
']');
556 pm_buffer_append_byte(buffer,
',');
557 pm_buffer_append_string(buffer,
"\"name\":", 7);
558 if (
cast->name != PM_CONSTANT_ID_UNSET) {
559 pm_dump_json_constant(buffer, parser,
cast->name);
561 pm_buffer_append_string(buffer,
"null", 4);
565 pm_buffer_append_byte(buffer,
',');
566 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
567 if (
cast->name_loc.length != 0) {
568 pm_dump_json_location(buffer, &
cast->name_loc);
570 pm_buffer_append_string(buffer,
"null", 4);
574 pm_buffer_append_byte(buffer,
',');
575 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
576 pm_dump_json_location(buffer, &
cast->operator_loc);
578 pm_buffer_append_byte(buffer,
'}');
581 case PM_BLOCK_PARAMETERS_NODE: {
582 pm_buffer_append_string(buffer,
"{\"type\":\"BlockParametersNode\",\"location\":", 41);
585 pm_dump_json_location(buffer, &
cast->base.location);
588 pm_buffer_append_byte(buffer,
',');
589 pm_buffer_append_string(buffer,
"\"parameters\":", 13);
590 if (
cast->parameters != NULL) {
591 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->parameters);
593 pm_buffer_append_string(buffer,
"null", 4);
597 pm_buffer_append_byte(buffer,
',');
598 pm_buffer_append_string(buffer,
"\"locals\":", 9);
600 pm_buffer_append_byte(buffer,
'[');
602 for (
size_t index = 0; index < locals->
size; index++) {
603 if (index != 0) pm_buffer_append_byte(buffer,
',');
604 pm_dump_json(buffer, parser, locals->
nodes[index]);
606 pm_buffer_append_byte(buffer,
']');
609 pm_buffer_append_byte(buffer,
',');
610 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
611 if (
cast->opening_loc.length != 0) {
612 pm_dump_json_location(buffer, &
cast->opening_loc);
614 pm_buffer_append_string(buffer,
"null", 4);
618 pm_buffer_append_byte(buffer,
',');
619 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
620 if (
cast->closing_loc.length != 0) {
621 pm_dump_json_location(buffer, &
cast->closing_loc);
623 pm_buffer_append_string(buffer,
"null", 4);
626 pm_buffer_append_byte(buffer,
'}');
629 case PM_BREAK_NODE: {
630 pm_buffer_append_string(buffer,
"{\"type\":\"BreakNode\",\"location\":", 31);
633 pm_dump_json_location(buffer, &
cast->base.location);
636 pm_buffer_append_byte(buffer,
',');
637 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
638 if (
cast->arguments != NULL) {
639 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->arguments);
641 pm_buffer_append_string(buffer,
"null", 4);
645 pm_buffer_append_byte(buffer,
',');
646 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
647 pm_dump_json_location(buffer, &
cast->keyword_loc);
649 pm_buffer_append_byte(buffer,
'}');
652 case PM_CALL_AND_WRITE_NODE: {
653 pm_buffer_append_string(buffer,
"{\"type\":\"CallAndWriteNode\",\"location\":", 38);
656 pm_dump_json_location(buffer, &
cast->base.location);
659 pm_buffer_append_byte(buffer,
',');
660 pm_buffer_append_string(buffer,
"\"flags\":", 8);
662 pm_buffer_append_byte(buffer,
'[');
663 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
664 if (flags != 0) pm_buffer_append_byte(buffer,
',');
665 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
668 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
669 if (flags != 0) pm_buffer_append_byte(buffer,
',');
670 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
673 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
674 if (flags != 0) pm_buffer_append_byte(buffer,
',');
675 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
678 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
679 if (flags != 0) pm_buffer_append_byte(buffer,
',');
680 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
683 pm_buffer_append_byte(buffer,
']');
686 pm_buffer_append_byte(buffer,
',');
687 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
688 if (
cast->receiver != NULL) {
689 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->receiver);
691 pm_buffer_append_string(buffer,
"null", 4);
695 pm_buffer_append_byte(buffer,
',');
696 pm_buffer_append_string(buffer,
"\"call_operator_loc\":", 20);
697 if (
cast->call_operator_loc.length != 0) {
698 pm_dump_json_location(buffer, &
cast->call_operator_loc);
700 pm_buffer_append_string(buffer,
"null", 4);
704 pm_buffer_append_byte(buffer,
',');
705 pm_buffer_append_string(buffer,
"\"message_loc\":", 14);
706 if (
cast->message_loc.length != 0) {
707 pm_dump_json_location(buffer, &
cast->message_loc);
709 pm_buffer_append_string(buffer,
"null", 4);
713 pm_buffer_append_byte(buffer,
',');
714 pm_buffer_append_string(buffer,
"\"read_name\":", 12);
715 pm_dump_json_constant(buffer, parser,
cast->read_name);
718 pm_buffer_append_byte(buffer,
',');
719 pm_buffer_append_string(buffer,
"\"write_name\":", 13);
720 pm_dump_json_constant(buffer, parser,
cast->write_name);
723 pm_buffer_append_byte(buffer,
',');
724 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
725 pm_dump_json_location(buffer, &
cast->operator_loc);
728 pm_buffer_append_byte(buffer,
',');
729 pm_buffer_append_string(buffer,
"\"value\":", 8);
730 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
732 pm_buffer_append_byte(buffer,
'}');
736 pm_buffer_append_string(buffer,
"{\"type\":\"CallNode\",\"location\":", 30);
739 pm_dump_json_location(buffer, &
cast->base.location);
742 pm_buffer_append_byte(buffer,
',');
743 pm_buffer_append_string(buffer,
"\"flags\":", 8);
745 pm_buffer_append_byte(buffer,
'[');
746 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
747 if (flags != 0) pm_buffer_append_byte(buffer,
',');
748 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
751 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
752 if (flags != 0) pm_buffer_append_byte(buffer,
',');
753 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
756 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
757 if (flags != 0) pm_buffer_append_byte(buffer,
',');
758 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
761 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
762 if (flags != 0) pm_buffer_append_byte(buffer,
',');
763 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
766 pm_buffer_append_byte(buffer,
']');
769 pm_buffer_append_byte(buffer,
',');
770 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
771 if (
cast->receiver != NULL) {
772 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->receiver);
774 pm_buffer_append_string(buffer,
"null", 4);
778 pm_buffer_append_byte(buffer,
',');
779 pm_buffer_append_string(buffer,
"\"call_operator_loc\":", 20);
780 if (
cast->call_operator_loc.length != 0) {
781 pm_dump_json_location(buffer, &
cast->call_operator_loc);
783 pm_buffer_append_string(buffer,
"null", 4);
787 pm_buffer_append_byte(buffer,
',');
788 pm_buffer_append_string(buffer,
"\"name\":", 7);
789 pm_dump_json_constant(buffer, parser,
cast->name);
792 pm_buffer_append_byte(buffer,
',');
793 pm_buffer_append_string(buffer,
"\"message_loc\":", 14);
794 if (
cast->message_loc.length != 0) {
795 pm_dump_json_location(buffer, &
cast->message_loc);
797 pm_buffer_append_string(buffer,
"null", 4);
801 pm_buffer_append_byte(buffer,
',');
802 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
803 if (
cast->opening_loc.length != 0) {
804 pm_dump_json_location(buffer, &
cast->opening_loc);
806 pm_buffer_append_string(buffer,
"null", 4);
810 pm_buffer_append_byte(buffer,
',');
811 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
812 if (
cast->arguments != NULL) {
813 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->arguments);
815 pm_buffer_append_string(buffer,
"null", 4);
819 pm_buffer_append_byte(buffer,
',');
820 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
821 if (
cast->closing_loc.length != 0) {
822 pm_dump_json_location(buffer, &
cast->closing_loc);
824 pm_buffer_append_string(buffer,
"null", 4);
828 pm_buffer_append_byte(buffer,
',');
829 pm_buffer_append_string(buffer,
"\"equal_loc\":", 12);
830 if (
cast->equal_loc.length != 0) {
831 pm_dump_json_location(buffer, &
cast->equal_loc);
833 pm_buffer_append_string(buffer,
"null", 4);
837 pm_buffer_append_byte(buffer,
',');
838 pm_buffer_append_string(buffer,
"\"block\":", 8);
839 if (
cast->block != NULL) {
840 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->block);
842 pm_buffer_append_string(buffer,
"null", 4);
845 pm_buffer_append_byte(buffer,
'}');
848 case PM_CALL_OPERATOR_WRITE_NODE: {
849 pm_buffer_append_string(buffer,
"{\"type\":\"CallOperatorWriteNode\",\"location\":", 43);
852 pm_dump_json_location(buffer, &
cast->base.location);
855 pm_buffer_append_byte(buffer,
',');
856 pm_buffer_append_string(buffer,
"\"flags\":", 8);
858 pm_buffer_append_byte(buffer,
'[');
859 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
860 if (flags != 0) pm_buffer_append_byte(buffer,
',');
861 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
864 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
865 if (flags != 0) pm_buffer_append_byte(buffer,
',');
866 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
869 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
870 if (flags != 0) pm_buffer_append_byte(buffer,
',');
871 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
874 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
875 if (flags != 0) pm_buffer_append_byte(buffer,
',');
876 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
879 pm_buffer_append_byte(buffer,
']');
882 pm_buffer_append_byte(buffer,
',');
883 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
884 if (
cast->receiver != NULL) {
885 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->receiver);
887 pm_buffer_append_string(buffer,
"null", 4);
891 pm_buffer_append_byte(buffer,
',');
892 pm_buffer_append_string(buffer,
"\"call_operator_loc\":", 20);
893 if (
cast->call_operator_loc.length != 0) {
894 pm_dump_json_location(buffer, &
cast->call_operator_loc);
896 pm_buffer_append_string(buffer,
"null", 4);
900 pm_buffer_append_byte(buffer,
',');
901 pm_buffer_append_string(buffer,
"\"message_loc\":", 14);
902 if (
cast->message_loc.length != 0) {
903 pm_dump_json_location(buffer, &
cast->message_loc);
905 pm_buffer_append_string(buffer,
"null", 4);
909 pm_buffer_append_byte(buffer,
',');
910 pm_buffer_append_string(buffer,
"\"read_name\":", 12);
911 pm_dump_json_constant(buffer, parser,
cast->read_name);
914 pm_buffer_append_byte(buffer,
',');
915 pm_buffer_append_string(buffer,
"\"write_name\":", 13);
916 pm_dump_json_constant(buffer, parser,
cast->write_name);
919 pm_buffer_append_byte(buffer,
',');
920 pm_buffer_append_string(buffer,
"\"binary_operator\":", 18);
921 pm_dump_json_constant(buffer, parser,
cast->binary_operator);
924 pm_buffer_append_byte(buffer,
',');
925 pm_buffer_append_string(buffer,
"\"binary_operator_loc\":", 22);
926 pm_dump_json_location(buffer, &
cast->binary_operator_loc);
929 pm_buffer_append_byte(buffer,
',');
930 pm_buffer_append_string(buffer,
"\"value\":", 8);
931 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
933 pm_buffer_append_byte(buffer,
'}');
936 case PM_CALL_OR_WRITE_NODE: {
937 pm_buffer_append_string(buffer,
"{\"type\":\"CallOrWriteNode\",\"location\":", 37);
940 pm_dump_json_location(buffer, &
cast->base.location);
943 pm_buffer_append_byte(buffer,
',');
944 pm_buffer_append_string(buffer,
"\"flags\":", 8);
946 pm_buffer_append_byte(buffer,
'[');
947 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
948 if (flags != 0) pm_buffer_append_byte(buffer,
',');
949 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
952 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
953 if (flags != 0) pm_buffer_append_byte(buffer,
',');
954 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
957 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
958 if (flags != 0) pm_buffer_append_byte(buffer,
',');
959 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
962 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
963 if (flags != 0) pm_buffer_append_byte(buffer,
',');
964 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
967 pm_buffer_append_byte(buffer,
']');
970 pm_buffer_append_byte(buffer,
',');
971 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
972 if (
cast->receiver != NULL) {
973 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->receiver);
975 pm_buffer_append_string(buffer,
"null", 4);
979 pm_buffer_append_byte(buffer,
',');
980 pm_buffer_append_string(buffer,
"\"call_operator_loc\":", 20);
981 if (
cast->call_operator_loc.length != 0) {
982 pm_dump_json_location(buffer, &
cast->call_operator_loc);
984 pm_buffer_append_string(buffer,
"null", 4);
988 pm_buffer_append_byte(buffer,
',');
989 pm_buffer_append_string(buffer,
"\"message_loc\":", 14);
990 if (
cast->message_loc.length != 0) {
991 pm_dump_json_location(buffer, &
cast->message_loc);
993 pm_buffer_append_string(buffer,
"null", 4);
997 pm_buffer_append_byte(buffer,
',');
998 pm_buffer_append_string(buffer,
"\"read_name\":", 12);
999 pm_dump_json_constant(buffer, parser,
cast->read_name);
1002 pm_buffer_append_byte(buffer,
',');
1003 pm_buffer_append_string(buffer,
"\"write_name\":", 13);
1004 pm_dump_json_constant(buffer, parser,
cast->write_name);
1007 pm_buffer_append_byte(buffer,
',');
1008 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1009 pm_dump_json_location(buffer, &
cast->operator_loc);
1012 pm_buffer_append_byte(buffer,
',');
1013 pm_buffer_append_string(buffer,
"\"value\":", 8);
1014 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
1016 pm_buffer_append_byte(buffer,
'}');
1019 case PM_CALL_TARGET_NODE: {
1020 pm_buffer_append_string(buffer,
"{\"type\":\"CallTargetNode\",\"location\":", 36);
1023 pm_dump_json_location(buffer, &
cast->base.location);
1026 pm_buffer_append_byte(buffer,
',');
1027 pm_buffer_append_string(buffer,
"\"flags\":", 8);
1029 pm_buffer_append_byte(buffer,
'[');
1030 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
1031 if (flags != 0) pm_buffer_append_byte(buffer,
',');
1032 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
1035 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
1036 if (flags != 0) pm_buffer_append_byte(buffer,
',');
1037 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
1040 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
1041 if (flags != 0) pm_buffer_append_byte(buffer,
',');
1042 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
1045 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
1046 if (flags != 0) pm_buffer_append_byte(buffer,
',');
1047 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
1050 pm_buffer_append_byte(buffer,
']');
1053 pm_buffer_append_byte(buffer,
',');
1054 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
1055 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->receiver);
1058 pm_buffer_append_byte(buffer,
',');
1059 pm_buffer_append_string(buffer,
"\"call_operator_loc\":", 20);
1060 pm_dump_json_location(buffer, &
cast->call_operator_loc);
1063 pm_buffer_append_byte(buffer,
',');
1064 pm_buffer_append_string(buffer,
"\"name\":", 7);
1065 pm_dump_json_constant(buffer, parser,
cast->name);
1068 pm_buffer_append_byte(buffer,
',');
1069 pm_buffer_append_string(buffer,
"\"message_loc\":", 14);
1070 pm_dump_json_location(buffer, &
cast->message_loc);
1072 pm_buffer_append_byte(buffer,
'}');
1075 case PM_CAPTURE_PATTERN_NODE: {
1076 pm_buffer_append_string(buffer,
"{\"type\":\"CapturePatternNode\",\"location\":", 40);
1079 pm_dump_json_location(buffer, &
cast->base.location);
1082 pm_buffer_append_byte(buffer,
',');
1083 pm_buffer_append_string(buffer,
"\"value\":", 8);
1084 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
1087 pm_buffer_append_byte(buffer,
',');
1088 pm_buffer_append_string(buffer,
"\"target\":", 9);
1089 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->target);
1092 pm_buffer_append_byte(buffer,
',');
1093 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1094 pm_dump_json_location(buffer, &
cast->operator_loc);
1096 pm_buffer_append_byte(buffer,
'}');
1099 case PM_CASE_MATCH_NODE: {
1100 pm_buffer_append_string(buffer,
"{\"type\":\"CaseMatchNode\",\"location\":", 35);
1103 pm_dump_json_location(buffer, &
cast->base.location);
1106 pm_buffer_append_byte(buffer,
',');
1107 pm_buffer_append_string(buffer,
"\"predicate\":", 12);
1108 if (
cast->predicate != NULL) {
1109 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->predicate);
1111 pm_buffer_append_string(buffer,
"null", 4);
1115 pm_buffer_append_byte(buffer,
',');
1116 pm_buffer_append_string(buffer,
"\"conditions\":", 13);
1118 pm_buffer_append_byte(buffer,
'[');
1120 for (
size_t index = 0; index < conditions->
size; index++) {
1121 if (index != 0) pm_buffer_append_byte(buffer,
',');
1122 pm_dump_json(buffer, parser, conditions->
nodes[index]);
1124 pm_buffer_append_byte(buffer,
']');
1127 pm_buffer_append_byte(buffer,
',');
1128 pm_buffer_append_string(buffer,
"\"else_clause\":", 14);
1129 if (
cast->else_clause != NULL) {
1130 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->else_clause);
1132 pm_buffer_append_string(buffer,
"null", 4);
1136 pm_buffer_append_byte(buffer,
',');
1137 pm_buffer_append_string(buffer,
"\"case_keyword_loc\":", 19);
1138 pm_dump_json_location(buffer, &
cast->case_keyword_loc);
1141 pm_buffer_append_byte(buffer,
',');
1142 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
1143 pm_dump_json_location(buffer, &
cast->end_keyword_loc);
1145 pm_buffer_append_byte(buffer,
'}');
1148 case PM_CASE_NODE: {
1149 pm_buffer_append_string(buffer,
"{\"type\":\"CaseNode\",\"location\":", 30);
1152 pm_dump_json_location(buffer, &
cast->base.location);
1155 pm_buffer_append_byte(buffer,
',');
1156 pm_buffer_append_string(buffer,
"\"predicate\":", 12);
1157 if (
cast->predicate != NULL) {
1158 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->predicate);
1160 pm_buffer_append_string(buffer,
"null", 4);
1164 pm_buffer_append_byte(buffer,
',');
1165 pm_buffer_append_string(buffer,
"\"conditions\":", 13);
1167 pm_buffer_append_byte(buffer,
'[');
1169 for (
size_t index = 0; index < conditions->
size; index++) {
1170 if (index != 0) pm_buffer_append_byte(buffer,
',');
1171 pm_dump_json(buffer, parser, conditions->
nodes[index]);
1173 pm_buffer_append_byte(buffer,
']');
1176 pm_buffer_append_byte(buffer,
',');
1177 pm_buffer_append_string(buffer,
"\"else_clause\":", 14);
1178 if (
cast->else_clause != NULL) {
1179 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->else_clause);
1181 pm_buffer_append_string(buffer,
"null", 4);
1185 pm_buffer_append_byte(buffer,
',');
1186 pm_buffer_append_string(buffer,
"\"case_keyword_loc\":", 19);
1187 pm_dump_json_location(buffer, &
cast->case_keyword_loc);
1190 pm_buffer_append_byte(buffer,
',');
1191 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
1192 pm_dump_json_location(buffer, &
cast->end_keyword_loc);
1194 pm_buffer_append_byte(buffer,
'}');
1197 case PM_CLASS_NODE: {
1198 pm_buffer_append_string(buffer,
"{\"type\":\"ClassNode\",\"location\":", 31);
1201 pm_dump_json_location(buffer, &
cast->base.location);
1204 pm_buffer_append_byte(buffer,
',');
1205 pm_buffer_append_string(buffer,
"\"locals\":", 9);
1207 pm_buffer_append_byte(buffer,
'[');
1209 for (
size_t index = 0; index < locals->
size; index++) {
1210 if (index != 0) pm_buffer_append_byte(buffer,
',');
1211 pm_dump_json_constant(buffer, parser, locals->
ids[index]);
1213 pm_buffer_append_byte(buffer,
']');
1216 pm_buffer_append_byte(buffer,
',');
1217 pm_buffer_append_string(buffer,
"\"class_keyword_loc\":", 20);
1218 pm_dump_json_location(buffer, &
cast->class_keyword_loc);
1221 pm_buffer_append_byte(buffer,
',');
1222 pm_buffer_append_string(buffer,
"\"constant_path\":", 16);
1223 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->constant_path);
1226 pm_buffer_append_byte(buffer,
',');
1227 pm_buffer_append_string(buffer,
"\"inheritance_operator_loc\":", 27);
1228 if (
cast->inheritance_operator_loc.length != 0) {
1229 pm_dump_json_location(buffer, &
cast->inheritance_operator_loc);
1231 pm_buffer_append_string(buffer,
"null", 4);
1235 pm_buffer_append_byte(buffer,
',');
1236 pm_buffer_append_string(buffer,
"\"superclass\":", 13);
1237 if (
cast->superclass != NULL) {
1238 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->superclass);
1240 pm_buffer_append_string(buffer,
"null", 4);
1244 pm_buffer_append_byte(buffer,
',');
1245 pm_buffer_append_string(buffer,
"\"body\":", 7);
1246 if (
cast->body != NULL) {
1247 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->body);
1249 pm_buffer_append_string(buffer,
"null", 4);
1253 pm_buffer_append_byte(buffer,
',');
1254 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
1255 pm_dump_json_location(buffer, &
cast->end_keyword_loc);
1258 pm_buffer_append_byte(buffer,
',');
1259 pm_buffer_append_string(buffer,
"\"name\":", 7);
1260 pm_dump_json_constant(buffer, parser,
cast->name);
1262 pm_buffer_append_byte(buffer,
'}');
1265 case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
1266 pm_buffer_append_string(buffer,
"{\"type\":\"ClassVariableAndWriteNode\",\"location\":", 47);
1269 pm_dump_json_location(buffer, &
cast->base.location);
1272 pm_buffer_append_byte(buffer,
',');
1273 pm_buffer_append_string(buffer,
"\"name\":", 7);
1274 pm_dump_json_constant(buffer, parser,
cast->name);
1277 pm_buffer_append_byte(buffer,
',');
1278 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1279 pm_dump_json_location(buffer, &
cast->name_loc);
1282 pm_buffer_append_byte(buffer,
',');
1283 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1284 pm_dump_json_location(buffer, &
cast->operator_loc);
1287 pm_buffer_append_byte(buffer,
',');
1288 pm_buffer_append_string(buffer,
"\"value\":", 8);
1289 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
1291 pm_buffer_append_byte(buffer,
'}');
1294 case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
1295 pm_buffer_append_string(buffer,
"{\"type\":\"ClassVariableOperatorWriteNode\",\"location\":", 52);
1298 pm_dump_json_location(buffer, &
cast->base.location);
1301 pm_buffer_append_byte(buffer,
',');
1302 pm_buffer_append_string(buffer,
"\"name\":", 7);
1303 pm_dump_json_constant(buffer, parser,
cast->name);
1306 pm_buffer_append_byte(buffer,
',');
1307 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1308 pm_dump_json_location(buffer, &
cast->name_loc);
1311 pm_buffer_append_byte(buffer,
',');
1312 pm_buffer_append_string(buffer,
"\"binary_operator_loc\":", 22);
1313 pm_dump_json_location(buffer, &
cast->binary_operator_loc);
1316 pm_buffer_append_byte(buffer,
',');
1317 pm_buffer_append_string(buffer,
"\"value\":", 8);
1318 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
1321 pm_buffer_append_byte(buffer,
',');
1322 pm_buffer_append_string(buffer,
"\"binary_operator\":", 18);
1323 pm_dump_json_constant(buffer, parser,
cast->binary_operator);
1325 pm_buffer_append_byte(buffer,
'}');
1328 case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
1329 pm_buffer_append_string(buffer,
"{\"type\":\"ClassVariableOrWriteNode\",\"location\":", 46);
1332 pm_dump_json_location(buffer, &
cast->base.location);
1335 pm_buffer_append_byte(buffer,
',');
1336 pm_buffer_append_string(buffer,
"\"name\":", 7);
1337 pm_dump_json_constant(buffer, parser,
cast->name);
1340 pm_buffer_append_byte(buffer,
',');
1341 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1342 pm_dump_json_location(buffer, &
cast->name_loc);
1345 pm_buffer_append_byte(buffer,
',');
1346 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1347 pm_dump_json_location(buffer, &
cast->operator_loc);
1350 pm_buffer_append_byte(buffer,
',');
1351 pm_buffer_append_string(buffer,
"\"value\":", 8);
1352 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
1354 pm_buffer_append_byte(buffer,
'}');
1357 case PM_CLASS_VARIABLE_READ_NODE: {
1358 pm_buffer_append_string(buffer,
"{\"type\":\"ClassVariableReadNode\",\"location\":", 43);
1361 pm_dump_json_location(buffer, &
cast->base.location);
1364 pm_buffer_append_byte(buffer,
',');
1365 pm_buffer_append_string(buffer,
"\"name\":", 7);
1366 pm_dump_json_constant(buffer, parser,
cast->name);
1368 pm_buffer_append_byte(buffer,
'}');
1371 case PM_CLASS_VARIABLE_TARGET_NODE: {
1372 pm_buffer_append_string(buffer,
"{\"type\":\"ClassVariableTargetNode\",\"location\":", 45);
1375 pm_dump_json_location(buffer, &
cast->base.location);
1378 pm_buffer_append_byte(buffer,
',');
1379 pm_buffer_append_string(buffer,
"\"name\":", 7);
1380 pm_dump_json_constant(buffer, parser,
cast->name);
1382 pm_buffer_append_byte(buffer,
'}');
1385 case PM_CLASS_VARIABLE_WRITE_NODE: {
1386 pm_buffer_append_string(buffer,
"{\"type\":\"ClassVariableWriteNode\",\"location\":", 44);
1389 pm_dump_json_location(buffer, &
cast->base.location);
1392 pm_buffer_append_byte(buffer,
',');
1393 pm_buffer_append_string(buffer,
"\"name\":", 7);
1394 pm_dump_json_constant(buffer, parser,
cast->name);
1397 pm_buffer_append_byte(buffer,
',');
1398 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1399 pm_dump_json_location(buffer, &
cast->name_loc);
1402 pm_buffer_append_byte(buffer,
',');
1403 pm_buffer_append_string(buffer,
"\"value\":", 8);
1404 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
1407 pm_buffer_append_byte(buffer,
',');
1408 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1409 pm_dump_json_location(buffer, &
cast->operator_loc);
1411 pm_buffer_append_byte(buffer,
'}');
1414 case PM_CONSTANT_AND_WRITE_NODE: {
1415 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantAndWriteNode\",\"location\":", 42);
1418 pm_dump_json_location(buffer, &
cast->base.location);
1421 pm_buffer_append_byte(buffer,
',');
1422 pm_buffer_append_string(buffer,
"\"name\":", 7);
1423 pm_dump_json_constant(buffer, parser,
cast->name);
1426 pm_buffer_append_byte(buffer,
',');
1427 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1428 pm_dump_json_location(buffer, &
cast->name_loc);
1431 pm_buffer_append_byte(buffer,
',');
1432 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1433 pm_dump_json_location(buffer, &
cast->operator_loc);
1436 pm_buffer_append_byte(buffer,
',');
1437 pm_buffer_append_string(buffer,
"\"value\":", 8);
1438 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
1440 pm_buffer_append_byte(buffer,
'}');
1443 case PM_CONSTANT_OPERATOR_WRITE_NODE: {
1444 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantOperatorWriteNode\",\"location\":", 47);
1447 pm_dump_json_location(buffer, &
cast->base.location);
1450 pm_buffer_append_byte(buffer,
',');
1451 pm_buffer_append_string(buffer,
"\"name\":", 7);
1452 pm_dump_json_constant(buffer, parser,
cast->name);
1455 pm_buffer_append_byte(buffer,
',');
1456 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1457 pm_dump_json_location(buffer, &
cast->name_loc);
1460 pm_buffer_append_byte(buffer,
',');
1461 pm_buffer_append_string(buffer,
"\"binary_operator_loc\":", 22);
1462 pm_dump_json_location(buffer, &
cast->binary_operator_loc);
1465 pm_buffer_append_byte(buffer,
',');
1466 pm_buffer_append_string(buffer,
"\"value\":", 8);
1467 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
1470 pm_buffer_append_byte(buffer,
',');
1471 pm_buffer_append_string(buffer,
"\"binary_operator\":", 18);
1472 pm_dump_json_constant(buffer, parser,
cast->binary_operator);
1474 pm_buffer_append_byte(buffer,
'}');
1477 case PM_CONSTANT_OR_WRITE_NODE: {
1478 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantOrWriteNode\",\"location\":", 41);
1481 pm_dump_json_location(buffer, &
cast->base.location);
1484 pm_buffer_append_byte(buffer,
',');
1485 pm_buffer_append_string(buffer,
"\"name\":", 7);
1486 pm_dump_json_constant(buffer, parser,
cast->name);
1489 pm_buffer_append_byte(buffer,
',');
1490 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1491 pm_dump_json_location(buffer, &
cast->name_loc);
1494 pm_buffer_append_byte(buffer,
',');
1495 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1496 pm_dump_json_location(buffer, &
cast->operator_loc);
1499 pm_buffer_append_byte(buffer,
',');
1500 pm_buffer_append_string(buffer,
"\"value\":", 8);
1501 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
1503 pm_buffer_append_byte(buffer,
'}');
1506 case PM_CONSTANT_PATH_AND_WRITE_NODE: {
1507 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantPathAndWriteNode\",\"location\":", 46);
1510 pm_dump_json_location(buffer, &
cast->base.location);
1513 pm_buffer_append_byte(buffer,
',');
1514 pm_buffer_append_string(buffer,
"\"target\":", 9);
1515 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->target);
1518 pm_buffer_append_byte(buffer,
',');
1519 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1520 pm_dump_json_location(buffer, &
cast->operator_loc);
1523 pm_buffer_append_byte(buffer,
',');
1524 pm_buffer_append_string(buffer,
"\"value\":", 8);
1525 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
1527 pm_buffer_append_byte(buffer,
'}');
1530 case PM_CONSTANT_PATH_NODE: {
1531 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantPathNode\",\"location\":", 38);
1534 pm_dump_json_location(buffer, &
cast->base.location);
1537 pm_buffer_append_byte(buffer,
',');
1538 pm_buffer_append_string(buffer,
"\"parent\":", 9);
1539 if (
cast->parent != NULL) {
1540 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->parent);
1542 pm_buffer_append_string(buffer,
"null", 4);
1546 pm_buffer_append_byte(buffer,
',');
1547 pm_buffer_append_string(buffer,
"\"name\":", 7);
1548 if (
cast->name != PM_CONSTANT_ID_UNSET) {
1549 pm_dump_json_constant(buffer, parser,
cast->name);
1551 pm_buffer_append_string(buffer,
"null", 4);
1555 pm_buffer_append_byte(buffer,
',');
1556 pm_buffer_append_string(buffer,
"\"delimiter_loc\":", 16);
1557 pm_dump_json_location(buffer, &
cast->delimiter_loc);
1560 pm_buffer_append_byte(buffer,
',');
1561 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1562 pm_dump_json_location(buffer, &
cast->name_loc);
1564 pm_buffer_append_byte(buffer,
'}');
1567 case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
1568 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantPathOperatorWriteNode\",\"location\":", 51);
1571 pm_dump_json_location(buffer, &
cast->base.location);
1574 pm_buffer_append_byte(buffer,
',');
1575 pm_buffer_append_string(buffer,
"\"target\":", 9);
1576 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->target);
1579 pm_buffer_append_byte(buffer,
',');
1580 pm_buffer_append_string(buffer,
"\"binary_operator_loc\":", 22);
1581 pm_dump_json_location(buffer, &
cast->binary_operator_loc);
1584 pm_buffer_append_byte(buffer,
',');
1585 pm_buffer_append_string(buffer,
"\"value\":", 8);
1586 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
1589 pm_buffer_append_byte(buffer,
',');
1590 pm_buffer_append_string(buffer,
"\"binary_operator\":", 18);
1591 pm_dump_json_constant(buffer, parser,
cast->binary_operator);
1593 pm_buffer_append_byte(buffer,
'}');
1596 case PM_CONSTANT_PATH_OR_WRITE_NODE: {
1597 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantPathOrWriteNode\",\"location\":", 45);
1600 pm_dump_json_location(buffer, &
cast->base.location);
1603 pm_buffer_append_byte(buffer,
',');
1604 pm_buffer_append_string(buffer,
"\"target\":", 9);
1605 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->target);
1608 pm_buffer_append_byte(buffer,
',');
1609 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1610 pm_dump_json_location(buffer, &
cast->operator_loc);
1613 pm_buffer_append_byte(buffer,
',');
1614 pm_buffer_append_string(buffer,
"\"value\":", 8);
1615 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
1617 pm_buffer_append_byte(buffer,
'}');
1620 case PM_CONSTANT_PATH_TARGET_NODE: {
1621 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantPathTargetNode\",\"location\":", 44);
1624 pm_dump_json_location(buffer, &
cast->base.location);
1627 pm_buffer_append_byte(buffer,
',');
1628 pm_buffer_append_string(buffer,
"\"parent\":", 9);
1629 if (
cast->parent != NULL) {
1630 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->parent);
1632 pm_buffer_append_string(buffer,
"null", 4);
1636 pm_buffer_append_byte(buffer,
',');
1637 pm_buffer_append_string(buffer,
"\"name\":", 7);
1638 if (
cast->name != PM_CONSTANT_ID_UNSET) {
1639 pm_dump_json_constant(buffer, parser,
cast->name);
1641 pm_buffer_append_string(buffer,
"null", 4);
1645 pm_buffer_append_byte(buffer,
',');
1646 pm_buffer_append_string(buffer,
"\"delimiter_loc\":", 16);
1647 pm_dump_json_location(buffer, &
cast->delimiter_loc);
1650 pm_buffer_append_byte(buffer,
',');
1651 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1652 pm_dump_json_location(buffer, &
cast->name_loc);
1654 pm_buffer_append_byte(buffer,
'}');
1657 case PM_CONSTANT_PATH_WRITE_NODE: {
1658 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantPathWriteNode\",\"location\":", 43);
1661 pm_dump_json_location(buffer, &
cast->base.location);
1664 pm_buffer_append_byte(buffer,
',');
1665 pm_buffer_append_string(buffer,
"\"target\":", 9);
1666 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->target);
1669 pm_buffer_append_byte(buffer,
',');
1670 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1671 pm_dump_json_location(buffer, &
cast->operator_loc);
1674 pm_buffer_append_byte(buffer,
',');
1675 pm_buffer_append_string(buffer,
"\"value\":", 8);
1676 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
1678 pm_buffer_append_byte(buffer,
'}');
1681 case PM_CONSTANT_READ_NODE: {
1682 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantReadNode\",\"location\":", 38);
1685 pm_dump_json_location(buffer, &
cast->base.location);
1688 pm_buffer_append_byte(buffer,
',');
1689 pm_buffer_append_string(buffer,
"\"name\":", 7);
1690 pm_dump_json_constant(buffer, parser,
cast->name);
1692 pm_buffer_append_byte(buffer,
'}');
1695 case PM_CONSTANT_TARGET_NODE: {
1696 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantTargetNode\",\"location\":", 40);
1699 pm_dump_json_location(buffer, &
cast->base.location);
1702 pm_buffer_append_byte(buffer,
',');
1703 pm_buffer_append_string(buffer,
"\"name\":", 7);
1704 pm_dump_json_constant(buffer, parser,
cast->name);
1706 pm_buffer_append_byte(buffer,
'}');
1709 case PM_CONSTANT_WRITE_NODE: {
1710 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantWriteNode\",\"location\":", 39);
1713 pm_dump_json_location(buffer, &
cast->base.location);
1716 pm_buffer_append_byte(buffer,
',');
1717 pm_buffer_append_string(buffer,
"\"name\":", 7);
1718 pm_dump_json_constant(buffer, parser,
cast->name);
1721 pm_buffer_append_byte(buffer,
',');
1722 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1723 pm_dump_json_location(buffer, &
cast->name_loc);
1726 pm_buffer_append_byte(buffer,
',');
1727 pm_buffer_append_string(buffer,
"\"value\":", 8);
1728 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
1731 pm_buffer_append_byte(buffer,
',');
1732 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1733 pm_dump_json_location(buffer, &
cast->operator_loc);
1735 pm_buffer_append_byte(buffer,
'}');
1739 pm_buffer_append_string(buffer,
"{\"type\":\"DefNode\",\"location\":", 29);
1742 pm_dump_json_location(buffer, &
cast->base.location);
1745 pm_buffer_append_byte(buffer,
',');
1746 pm_buffer_append_string(buffer,
"\"name\":", 7);
1747 pm_dump_json_constant(buffer, parser,
cast->name);
1750 pm_buffer_append_byte(buffer,
',');
1751 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1752 pm_dump_json_location(buffer, &
cast->name_loc);
1755 pm_buffer_append_byte(buffer,
',');
1756 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
1757 if (
cast->receiver != NULL) {
1758 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->receiver);
1760 pm_buffer_append_string(buffer,
"null", 4);
1764 pm_buffer_append_byte(buffer,
',');
1765 pm_buffer_append_string(buffer,
"\"parameters\":", 13);
1766 if (
cast->parameters != NULL) {
1767 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->parameters);
1769 pm_buffer_append_string(buffer,
"null", 4);
1773 pm_buffer_append_byte(buffer,
',');
1774 pm_buffer_append_string(buffer,
"\"body\":", 7);
1775 if (
cast->body != NULL) {
1776 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->body);
1778 pm_buffer_append_string(buffer,
"null", 4);
1782 pm_buffer_append_byte(buffer,
',');
1783 pm_buffer_append_string(buffer,
"\"locals\":", 9);
1785 pm_buffer_append_byte(buffer,
'[');
1787 for (
size_t index = 0; index < locals->
size; index++) {
1788 if (index != 0) pm_buffer_append_byte(buffer,
',');
1789 pm_dump_json_constant(buffer, parser, locals->
ids[index]);
1791 pm_buffer_append_byte(buffer,
']');
1794 pm_buffer_append_byte(buffer,
',');
1795 pm_buffer_append_string(buffer,
"\"def_keyword_loc\":", 18);
1796 pm_dump_json_location(buffer, &
cast->def_keyword_loc);
1799 pm_buffer_append_byte(buffer,
',');
1800 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1801 if (
cast->operator_loc.length != 0) {
1802 pm_dump_json_location(buffer, &
cast->operator_loc);
1804 pm_buffer_append_string(buffer,
"null", 4);
1808 pm_buffer_append_byte(buffer,
',');
1809 pm_buffer_append_string(buffer,
"\"lparen_loc\":", 13);
1810 if (
cast->lparen_loc.length != 0) {
1811 pm_dump_json_location(buffer, &
cast->lparen_loc);
1813 pm_buffer_append_string(buffer,
"null", 4);
1817 pm_buffer_append_byte(buffer,
',');
1818 pm_buffer_append_string(buffer,
"\"rparen_loc\":", 13);
1819 if (
cast->rparen_loc.length != 0) {
1820 pm_dump_json_location(buffer, &
cast->rparen_loc);
1822 pm_buffer_append_string(buffer,
"null", 4);
1826 pm_buffer_append_byte(buffer,
',');
1827 pm_buffer_append_string(buffer,
"\"equal_loc\":", 12);
1828 if (
cast->equal_loc.length != 0) {
1829 pm_dump_json_location(buffer, &
cast->equal_loc);
1831 pm_buffer_append_string(buffer,
"null", 4);
1835 pm_buffer_append_byte(buffer,
',');
1836 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
1837 if (
cast->end_keyword_loc.length != 0) {
1838 pm_dump_json_location(buffer, &
cast->end_keyword_loc);
1840 pm_buffer_append_string(buffer,
"null", 4);
1843 pm_buffer_append_byte(buffer,
'}');
1846 case PM_DEFINED_NODE: {
1847 pm_buffer_append_string(buffer,
"{\"type\":\"DefinedNode\",\"location\":", 33);
1850 pm_dump_json_location(buffer, &
cast->base.location);
1853 pm_buffer_append_byte(buffer,
',');
1854 pm_buffer_append_string(buffer,
"\"lparen_loc\":", 13);
1855 if (
cast->lparen_loc.length != 0) {
1856 pm_dump_json_location(buffer, &
cast->lparen_loc);
1858 pm_buffer_append_string(buffer,
"null", 4);
1862 pm_buffer_append_byte(buffer,
',');
1863 pm_buffer_append_string(buffer,
"\"value\":", 8);
1864 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
1867 pm_buffer_append_byte(buffer,
',');
1868 pm_buffer_append_string(buffer,
"\"rparen_loc\":", 13);
1869 if (
cast->rparen_loc.length != 0) {
1870 pm_dump_json_location(buffer, &
cast->rparen_loc);
1872 pm_buffer_append_string(buffer,
"null", 4);
1876 pm_buffer_append_byte(buffer,
',');
1877 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
1878 pm_dump_json_location(buffer, &
cast->keyword_loc);
1880 pm_buffer_append_byte(buffer,
'}');
1883 case PM_ELSE_NODE: {
1884 pm_buffer_append_string(buffer,
"{\"type\":\"ElseNode\",\"location\":", 30);
1887 pm_dump_json_location(buffer, &
cast->base.location);
1890 pm_buffer_append_byte(buffer,
',');
1891 pm_buffer_append_string(buffer,
"\"else_keyword_loc\":", 19);
1892 pm_dump_json_location(buffer, &
cast->else_keyword_loc);
1895 pm_buffer_append_byte(buffer,
',');
1896 pm_buffer_append_string(buffer,
"\"statements\":", 13);
1897 if (
cast->statements != NULL) {
1898 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->statements);
1900 pm_buffer_append_string(buffer,
"null", 4);
1904 pm_buffer_append_byte(buffer,
',');
1905 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
1906 if (
cast->end_keyword_loc.length != 0) {
1907 pm_dump_json_location(buffer, &
cast->end_keyword_loc);
1909 pm_buffer_append_string(buffer,
"null", 4);
1912 pm_buffer_append_byte(buffer,
'}');
1915 case PM_EMBEDDED_STATEMENTS_NODE: {
1916 pm_buffer_append_string(buffer,
"{\"type\":\"EmbeddedStatementsNode\",\"location\":", 44);
1919 pm_dump_json_location(buffer, &
cast->base.location);
1922 pm_buffer_append_byte(buffer,
',');
1923 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
1924 pm_dump_json_location(buffer, &
cast->opening_loc);
1927 pm_buffer_append_byte(buffer,
',');
1928 pm_buffer_append_string(buffer,
"\"statements\":", 13);
1929 if (
cast->statements != NULL) {
1930 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->statements);
1932 pm_buffer_append_string(buffer,
"null", 4);
1936 pm_buffer_append_byte(buffer,
',');
1937 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
1938 pm_dump_json_location(buffer, &
cast->closing_loc);
1940 pm_buffer_append_byte(buffer,
'}');
1943 case PM_EMBEDDED_VARIABLE_NODE: {
1944 pm_buffer_append_string(buffer,
"{\"type\":\"EmbeddedVariableNode\",\"location\":", 42);
1947 pm_dump_json_location(buffer, &
cast->base.location);
1950 pm_buffer_append_byte(buffer,
',');
1951 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1952 pm_dump_json_location(buffer, &
cast->operator_loc);
1955 pm_buffer_append_byte(buffer,
',');
1956 pm_buffer_append_string(buffer,
"\"variable\":", 11);
1957 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->variable);
1959 pm_buffer_append_byte(buffer,
'}');
1962 case PM_ENSURE_NODE: {
1963 pm_buffer_append_string(buffer,
"{\"type\":\"EnsureNode\",\"location\":", 32);
1966 pm_dump_json_location(buffer, &
cast->base.location);
1969 pm_buffer_append_byte(buffer,
',');
1970 pm_buffer_append_string(buffer,
"\"ensure_keyword_loc\":", 21);
1971 pm_dump_json_location(buffer, &
cast->ensure_keyword_loc);
1974 pm_buffer_append_byte(buffer,
',');
1975 pm_buffer_append_string(buffer,
"\"statements\":", 13);
1976 if (
cast->statements != NULL) {
1977 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->statements);
1979 pm_buffer_append_string(buffer,
"null", 4);
1983 pm_buffer_append_byte(buffer,
',');
1984 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
1985 pm_dump_json_location(buffer, &
cast->end_keyword_loc);
1987 pm_buffer_append_byte(buffer,
'}');
1990 case PM_ERROR_RECOVERY_NODE: {
1991 pm_buffer_append_string(buffer,
"{\"type\":\"ErrorRecoveryNode\",\"location\":", 39);
1994 pm_dump_json_location(buffer, &
cast->base.location);
1997 pm_buffer_append_byte(buffer,
',');
1998 pm_buffer_append_string(buffer,
"\"unexpected\":", 13);
1999 if (
cast->unexpected != NULL) {
2000 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->unexpected);
2002 pm_buffer_append_string(buffer,
"null", 4);
2005 pm_buffer_append_byte(buffer,
'}');
2008 case PM_FALSE_NODE: {
2009 pm_buffer_append_string(buffer,
"{\"type\":\"FalseNode\",\"location\":", 31);
2012 pm_dump_json_location(buffer, &
cast->base.location);
2014 pm_buffer_append_byte(buffer,
'}');
2017 case PM_FIND_PATTERN_NODE: {
2018 pm_buffer_append_string(buffer,
"{\"type\":\"FindPatternNode\",\"location\":", 37);
2021 pm_dump_json_location(buffer, &
cast->base.location);
2024 pm_buffer_append_byte(buffer,
',');
2025 pm_buffer_append_string(buffer,
"\"constant\":", 11);
2026 if (
cast->constant != NULL) {
2027 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->constant);
2029 pm_buffer_append_string(buffer,
"null", 4);
2033 pm_buffer_append_byte(buffer,
',');
2034 pm_buffer_append_string(buffer,
"\"left\":", 7);
2035 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->left);
2038 pm_buffer_append_byte(buffer,
',');
2039 pm_buffer_append_string(buffer,
"\"requireds\":", 12);
2041 pm_buffer_append_byte(buffer,
'[');
2043 for (
size_t index = 0; index < requireds->
size; index++) {
2044 if (index != 0) pm_buffer_append_byte(buffer,
',');
2045 pm_dump_json(buffer, parser, requireds->
nodes[index]);
2047 pm_buffer_append_byte(buffer,
']');
2050 pm_buffer_append_byte(buffer,
',');
2051 pm_buffer_append_string(buffer,
"\"right\":", 8);
2052 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->right);
2055 pm_buffer_append_byte(buffer,
',');
2056 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
2057 if (
cast->opening_loc.length != 0) {
2058 pm_dump_json_location(buffer, &
cast->opening_loc);
2060 pm_buffer_append_string(buffer,
"null", 4);
2064 pm_buffer_append_byte(buffer,
',');
2065 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
2066 if (
cast->closing_loc.length != 0) {
2067 pm_dump_json_location(buffer, &
cast->closing_loc);
2069 pm_buffer_append_string(buffer,
"null", 4);
2072 pm_buffer_append_byte(buffer,
'}');
2075 case PM_FLIP_FLOP_NODE: {
2076 pm_buffer_append_string(buffer,
"{\"type\":\"FlipFlopNode\",\"location\":", 34);
2079 pm_dump_json_location(buffer, &
cast->base.location);
2082 pm_buffer_append_byte(buffer,
',');
2083 pm_buffer_append_string(buffer,
"\"flags\":", 8);
2085 pm_buffer_append_byte(buffer,
'[');
2086 if (PM_NODE_FLAG_P(cast, PM_RANGE_FLAGS_EXCLUDE_END)) {
2087 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2088 pm_buffer_append_string(buffer,
"\"EXCLUDE_END\"", 13);
2091 pm_buffer_append_byte(buffer,
']');
2094 pm_buffer_append_byte(buffer,
',');
2095 pm_buffer_append_string(buffer,
"\"left\":", 7);
2096 if (
cast->left != NULL) {
2097 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->left);
2099 pm_buffer_append_string(buffer,
"null", 4);
2103 pm_buffer_append_byte(buffer,
',');
2104 pm_buffer_append_string(buffer,
"\"right\":", 8);
2105 if (
cast->right != NULL) {
2106 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->right);
2108 pm_buffer_append_string(buffer,
"null", 4);
2112 pm_buffer_append_byte(buffer,
',');
2113 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
2114 pm_dump_json_location(buffer, &
cast->operator_loc);
2116 pm_buffer_append_byte(buffer,
'}');
2119 case PM_FLOAT_NODE: {
2120 pm_buffer_append_string(buffer,
"{\"type\":\"FloatNode\",\"location\":", 31);
2123 pm_dump_json_location(buffer, &
cast->base.location);
2126 pm_buffer_append_byte(buffer,
',');
2127 pm_buffer_append_string(buffer,
"\"value\":", 8);
2128 pm_buffer_append_format(buffer,
"%f",
cast->value);
2130 pm_buffer_append_byte(buffer,
'}');
2134 pm_buffer_append_string(buffer,
"{\"type\":\"ForNode\",\"location\":", 29);
2137 pm_dump_json_location(buffer, &
cast->base.location);
2140 pm_buffer_append_byte(buffer,
',');
2141 pm_buffer_append_string(buffer,
"\"index\":", 8);
2142 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->index);
2145 pm_buffer_append_byte(buffer,
',');
2146 pm_buffer_append_string(buffer,
"\"collection\":", 13);
2147 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->collection);
2150 pm_buffer_append_byte(buffer,
',');
2151 pm_buffer_append_string(buffer,
"\"statements\":", 13);
2152 if (
cast->statements != NULL) {
2153 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->statements);
2155 pm_buffer_append_string(buffer,
"null", 4);
2159 pm_buffer_append_byte(buffer,
',');
2160 pm_buffer_append_string(buffer,
"\"for_keyword_loc\":", 18);
2161 pm_dump_json_location(buffer, &
cast->for_keyword_loc);
2164 pm_buffer_append_byte(buffer,
',');
2165 pm_buffer_append_string(buffer,
"\"in_keyword_loc\":", 17);
2166 pm_dump_json_location(buffer, &
cast->in_keyword_loc);
2169 pm_buffer_append_byte(buffer,
',');
2170 pm_buffer_append_string(buffer,
"\"do_keyword_loc\":", 17);
2171 if (
cast->do_keyword_loc.length != 0) {
2172 pm_dump_json_location(buffer, &
cast->do_keyword_loc);
2174 pm_buffer_append_string(buffer,
"null", 4);
2178 pm_buffer_append_byte(buffer,
',');
2179 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
2180 pm_dump_json_location(buffer, &
cast->end_keyword_loc);
2182 pm_buffer_append_byte(buffer,
'}');
2185 case PM_FORWARDING_ARGUMENTS_NODE: {
2186 pm_buffer_append_string(buffer,
"{\"type\":\"ForwardingArgumentsNode\",\"location\":", 45);
2189 pm_dump_json_location(buffer, &
cast->base.location);
2191 pm_buffer_append_byte(buffer,
'}');
2194 case PM_FORWARDING_PARAMETER_NODE: {
2195 pm_buffer_append_string(buffer,
"{\"type\":\"ForwardingParameterNode\",\"location\":", 45);
2198 pm_dump_json_location(buffer, &
cast->base.location);
2200 pm_buffer_append_byte(buffer,
'}');
2203 case PM_FORWARDING_SUPER_NODE: {
2204 pm_buffer_append_string(buffer,
"{\"type\":\"ForwardingSuperNode\",\"location\":", 41);
2207 pm_dump_json_location(buffer, &
cast->base.location);
2210 pm_buffer_append_byte(buffer,
',');
2211 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
2212 pm_dump_json_location(buffer, &
cast->keyword_loc);
2215 pm_buffer_append_byte(buffer,
',');
2216 pm_buffer_append_string(buffer,
"\"block\":", 8);
2217 if (
cast->block != NULL) {
2218 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->block);
2220 pm_buffer_append_string(buffer,
"null", 4);
2223 pm_buffer_append_byte(buffer,
'}');
2226 case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
2227 pm_buffer_append_string(buffer,
"{\"type\":\"GlobalVariableAndWriteNode\",\"location\":", 48);
2230 pm_dump_json_location(buffer, &
cast->base.location);
2233 pm_buffer_append_byte(buffer,
',');
2234 pm_buffer_append_string(buffer,
"\"name\":", 7);
2235 pm_dump_json_constant(buffer, parser,
cast->name);
2238 pm_buffer_append_byte(buffer,
',');
2239 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
2240 pm_dump_json_location(buffer, &
cast->name_loc);
2243 pm_buffer_append_byte(buffer,
',');
2244 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
2245 pm_dump_json_location(buffer, &
cast->operator_loc);
2248 pm_buffer_append_byte(buffer,
',');
2249 pm_buffer_append_string(buffer,
"\"value\":", 8);
2250 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
2252 pm_buffer_append_byte(buffer,
'}');
2255 case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
2256 pm_buffer_append_string(buffer,
"{\"type\":\"GlobalVariableOperatorWriteNode\",\"location\":", 53);
2259 pm_dump_json_location(buffer, &
cast->base.location);
2262 pm_buffer_append_byte(buffer,
',');
2263 pm_buffer_append_string(buffer,
"\"name\":", 7);
2264 pm_dump_json_constant(buffer, parser,
cast->name);
2267 pm_buffer_append_byte(buffer,
',');
2268 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
2269 pm_dump_json_location(buffer, &
cast->name_loc);
2272 pm_buffer_append_byte(buffer,
',');
2273 pm_buffer_append_string(buffer,
"\"binary_operator_loc\":", 22);
2274 pm_dump_json_location(buffer, &
cast->binary_operator_loc);
2277 pm_buffer_append_byte(buffer,
',');
2278 pm_buffer_append_string(buffer,
"\"value\":", 8);
2279 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
2282 pm_buffer_append_byte(buffer,
',');
2283 pm_buffer_append_string(buffer,
"\"binary_operator\":", 18);
2284 pm_dump_json_constant(buffer, parser,
cast->binary_operator);
2286 pm_buffer_append_byte(buffer,
'}');
2289 case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
2290 pm_buffer_append_string(buffer,
"{\"type\":\"GlobalVariableOrWriteNode\",\"location\":", 47);
2293 pm_dump_json_location(buffer, &
cast->base.location);
2296 pm_buffer_append_byte(buffer,
',');
2297 pm_buffer_append_string(buffer,
"\"name\":", 7);
2298 pm_dump_json_constant(buffer, parser,
cast->name);
2301 pm_buffer_append_byte(buffer,
',');
2302 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
2303 pm_dump_json_location(buffer, &
cast->name_loc);
2306 pm_buffer_append_byte(buffer,
',');
2307 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
2308 pm_dump_json_location(buffer, &
cast->operator_loc);
2311 pm_buffer_append_byte(buffer,
',');
2312 pm_buffer_append_string(buffer,
"\"value\":", 8);
2313 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
2315 pm_buffer_append_byte(buffer,
'}');
2318 case PM_GLOBAL_VARIABLE_READ_NODE: {
2319 pm_buffer_append_string(buffer,
"{\"type\":\"GlobalVariableReadNode\",\"location\":", 44);
2322 pm_dump_json_location(buffer, &
cast->base.location);
2325 pm_buffer_append_byte(buffer,
',');
2326 pm_buffer_append_string(buffer,
"\"name\":", 7);
2327 pm_dump_json_constant(buffer, parser,
cast->name);
2329 pm_buffer_append_byte(buffer,
'}');
2332 case PM_GLOBAL_VARIABLE_TARGET_NODE: {
2333 pm_buffer_append_string(buffer,
"{\"type\":\"GlobalVariableTargetNode\",\"location\":", 46);
2336 pm_dump_json_location(buffer, &
cast->base.location);
2339 pm_buffer_append_byte(buffer,
',');
2340 pm_buffer_append_string(buffer,
"\"name\":", 7);
2341 pm_dump_json_constant(buffer, parser,
cast->name);
2343 pm_buffer_append_byte(buffer,
'}');
2346 case PM_GLOBAL_VARIABLE_WRITE_NODE: {
2347 pm_buffer_append_string(buffer,
"{\"type\":\"GlobalVariableWriteNode\",\"location\":", 45);
2350 pm_dump_json_location(buffer, &
cast->base.location);
2353 pm_buffer_append_byte(buffer,
',');
2354 pm_buffer_append_string(buffer,
"\"name\":", 7);
2355 pm_dump_json_constant(buffer, parser,
cast->name);
2358 pm_buffer_append_byte(buffer,
',');
2359 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
2360 pm_dump_json_location(buffer, &
cast->name_loc);
2363 pm_buffer_append_byte(buffer,
',');
2364 pm_buffer_append_string(buffer,
"\"value\":", 8);
2365 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
2368 pm_buffer_append_byte(buffer,
',');
2369 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
2370 pm_dump_json_location(buffer, &
cast->operator_loc);
2372 pm_buffer_append_byte(buffer,
'}');
2375 case PM_HASH_NODE: {
2376 pm_buffer_append_string(buffer,
"{\"type\":\"HashNode\",\"location\":", 30);
2379 pm_dump_json_location(buffer, &
cast->base.location);
2382 pm_buffer_append_byte(buffer,
',');
2383 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
2384 pm_dump_json_location(buffer, &
cast->opening_loc);
2387 pm_buffer_append_byte(buffer,
',');
2388 pm_buffer_append_string(buffer,
"\"elements\":", 11);
2390 pm_buffer_append_byte(buffer,
'[');
2392 for (
size_t index = 0; index < elements->
size; index++) {
2393 if (index != 0) pm_buffer_append_byte(buffer,
',');
2394 pm_dump_json(buffer, parser, elements->
nodes[index]);
2396 pm_buffer_append_byte(buffer,
']');
2399 pm_buffer_append_byte(buffer,
',');
2400 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
2401 pm_dump_json_location(buffer, &
cast->closing_loc);
2403 pm_buffer_append_byte(buffer,
'}');
2406 case PM_HASH_PATTERN_NODE: {
2407 pm_buffer_append_string(buffer,
"{\"type\":\"HashPatternNode\",\"location\":", 37);
2410 pm_dump_json_location(buffer, &
cast->base.location);
2413 pm_buffer_append_byte(buffer,
',');
2414 pm_buffer_append_string(buffer,
"\"constant\":", 11);
2415 if (
cast->constant != NULL) {
2416 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->constant);
2418 pm_buffer_append_string(buffer,
"null", 4);
2422 pm_buffer_append_byte(buffer,
',');
2423 pm_buffer_append_string(buffer,
"\"elements\":", 11);
2425 pm_buffer_append_byte(buffer,
'[');
2427 for (
size_t index = 0; index < elements->
size; index++) {
2428 if (index != 0) pm_buffer_append_byte(buffer,
',');
2429 pm_dump_json(buffer, parser, elements->
nodes[index]);
2431 pm_buffer_append_byte(buffer,
']');
2434 pm_buffer_append_byte(buffer,
',');
2435 pm_buffer_append_string(buffer,
"\"rest\":", 7);
2436 if (
cast->rest != NULL) {
2437 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->rest);
2439 pm_buffer_append_string(buffer,
"null", 4);
2443 pm_buffer_append_byte(buffer,
',');
2444 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
2445 if (
cast->opening_loc.length != 0) {
2446 pm_dump_json_location(buffer, &
cast->opening_loc);
2448 pm_buffer_append_string(buffer,
"null", 4);
2452 pm_buffer_append_byte(buffer,
',');
2453 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
2454 if (
cast->closing_loc.length != 0) {
2455 pm_dump_json_location(buffer, &
cast->closing_loc);
2457 pm_buffer_append_string(buffer,
"null", 4);
2460 pm_buffer_append_byte(buffer,
'}');
2464 pm_buffer_append_string(buffer,
"{\"type\":\"IfNode\",\"location\":", 28);
2467 pm_dump_json_location(buffer, &
cast->base.location);
2470 pm_buffer_append_byte(buffer,
',');
2471 pm_buffer_append_string(buffer,
"\"if_keyword_loc\":", 17);
2472 if (
cast->if_keyword_loc.length != 0) {
2473 pm_dump_json_location(buffer, &
cast->if_keyword_loc);
2475 pm_buffer_append_string(buffer,
"null", 4);
2479 pm_buffer_append_byte(buffer,
',');
2480 pm_buffer_append_string(buffer,
"\"predicate\":", 12);
2481 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->predicate);
2484 pm_buffer_append_byte(buffer,
',');
2485 pm_buffer_append_string(buffer,
"\"then_keyword_loc\":", 19);
2486 if (
cast->then_keyword_loc.length != 0) {
2487 pm_dump_json_location(buffer, &
cast->then_keyword_loc);
2489 pm_buffer_append_string(buffer,
"null", 4);
2493 pm_buffer_append_byte(buffer,
',');
2494 pm_buffer_append_string(buffer,
"\"statements\":", 13);
2495 if (
cast->statements != NULL) {
2496 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->statements);
2498 pm_buffer_append_string(buffer,
"null", 4);
2502 pm_buffer_append_byte(buffer,
',');
2503 pm_buffer_append_string(buffer,
"\"subsequent\":", 13);
2504 if (
cast->subsequent != NULL) {
2505 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->subsequent);
2507 pm_buffer_append_string(buffer,
"null", 4);
2511 pm_buffer_append_byte(buffer,
',');
2512 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
2513 if (
cast->end_keyword_loc.length != 0) {
2514 pm_dump_json_location(buffer, &
cast->end_keyword_loc);
2516 pm_buffer_append_string(buffer,
"null", 4);
2519 pm_buffer_append_byte(buffer,
'}');
2522 case PM_IMAGINARY_NODE: {
2523 pm_buffer_append_string(buffer,
"{\"type\":\"ImaginaryNode\",\"location\":", 35);
2526 pm_dump_json_location(buffer, &
cast->base.location);
2529 pm_buffer_append_byte(buffer,
',');
2530 pm_buffer_append_string(buffer,
"\"numeric\":", 10);
2531 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->numeric);
2533 pm_buffer_append_byte(buffer,
'}');
2536 case PM_IMPLICIT_NODE: {
2537 pm_buffer_append_string(buffer,
"{\"type\":\"ImplicitNode\",\"location\":", 34);
2540 pm_dump_json_location(buffer, &
cast->base.location);
2543 pm_buffer_append_byte(buffer,
',');
2544 pm_buffer_append_string(buffer,
"\"value\":", 8);
2545 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
2547 pm_buffer_append_byte(buffer,
'}');
2550 case PM_IMPLICIT_REST_NODE: {
2551 pm_buffer_append_string(buffer,
"{\"type\":\"ImplicitRestNode\",\"location\":", 38);
2554 pm_dump_json_location(buffer, &
cast->base.location);
2556 pm_buffer_append_byte(buffer,
'}');
2560 pm_buffer_append_string(buffer,
"{\"type\":\"InNode\",\"location\":", 28);
2563 pm_dump_json_location(buffer, &
cast->base.location);
2566 pm_buffer_append_byte(buffer,
',');
2567 pm_buffer_append_string(buffer,
"\"pattern\":", 10);
2568 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->pattern);
2571 pm_buffer_append_byte(buffer,
',');
2572 pm_buffer_append_string(buffer,
"\"statements\":", 13);
2573 if (
cast->statements != NULL) {
2574 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->statements);
2576 pm_buffer_append_string(buffer,
"null", 4);
2580 pm_buffer_append_byte(buffer,
',');
2581 pm_buffer_append_string(buffer,
"\"in_keyword_loc\":", 17);
2582 pm_dump_json_location(buffer, &
cast->in_keyword_loc);
2585 pm_buffer_append_byte(buffer,
',');
2586 pm_buffer_append_string(buffer,
"\"then_keyword_loc\":", 19);
2587 if (
cast->then_keyword_loc.length != 0) {
2588 pm_dump_json_location(buffer, &
cast->then_keyword_loc);
2590 pm_buffer_append_string(buffer,
"null", 4);
2593 pm_buffer_append_byte(buffer,
'}');
2596 case PM_INDEX_AND_WRITE_NODE: {
2597 pm_buffer_append_string(buffer,
"{\"type\":\"IndexAndWriteNode\",\"location\":", 39);
2600 pm_dump_json_location(buffer, &
cast->base.location);
2603 pm_buffer_append_byte(buffer,
',');
2604 pm_buffer_append_string(buffer,
"\"flags\":", 8);
2606 pm_buffer_append_byte(buffer,
'[');
2607 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
2608 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2609 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
2612 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
2613 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2614 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
2617 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
2618 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2619 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
2622 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
2623 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2624 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
2627 pm_buffer_append_byte(buffer,
']');
2630 pm_buffer_append_byte(buffer,
',');
2631 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
2632 if (
cast->receiver != NULL) {
2633 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->receiver);
2635 pm_buffer_append_string(buffer,
"null", 4);
2639 pm_buffer_append_byte(buffer,
',');
2640 pm_buffer_append_string(buffer,
"\"call_operator_loc\":", 20);
2641 if (
cast->call_operator_loc.length != 0) {
2642 pm_dump_json_location(buffer, &
cast->call_operator_loc);
2644 pm_buffer_append_string(buffer,
"null", 4);
2648 pm_buffer_append_byte(buffer,
',');
2649 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
2650 pm_dump_json_location(buffer, &
cast->opening_loc);
2653 pm_buffer_append_byte(buffer,
',');
2654 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
2655 if (
cast->arguments != NULL) {
2656 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->arguments);
2658 pm_buffer_append_string(buffer,
"null", 4);
2662 pm_buffer_append_byte(buffer,
',');
2663 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
2664 pm_dump_json_location(buffer, &
cast->closing_loc);
2667 pm_buffer_append_byte(buffer,
',');
2668 pm_buffer_append_string(buffer,
"\"block\":", 8);
2669 if (
cast->block != NULL) {
2670 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->block);
2672 pm_buffer_append_string(buffer,
"null", 4);
2676 pm_buffer_append_byte(buffer,
',');
2677 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
2678 pm_dump_json_location(buffer, &
cast->operator_loc);
2681 pm_buffer_append_byte(buffer,
',');
2682 pm_buffer_append_string(buffer,
"\"value\":", 8);
2683 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
2685 pm_buffer_append_byte(buffer,
'}');
2688 case PM_INDEX_OPERATOR_WRITE_NODE: {
2689 pm_buffer_append_string(buffer,
"{\"type\":\"IndexOperatorWriteNode\",\"location\":", 44);
2692 pm_dump_json_location(buffer, &
cast->base.location);
2695 pm_buffer_append_byte(buffer,
',');
2696 pm_buffer_append_string(buffer,
"\"flags\":", 8);
2698 pm_buffer_append_byte(buffer,
'[');
2699 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
2700 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2701 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
2704 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
2705 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2706 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
2709 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
2710 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2711 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
2714 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
2715 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2716 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
2719 pm_buffer_append_byte(buffer,
']');
2722 pm_buffer_append_byte(buffer,
',');
2723 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
2724 if (
cast->receiver != NULL) {
2725 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->receiver);
2727 pm_buffer_append_string(buffer,
"null", 4);
2731 pm_buffer_append_byte(buffer,
',');
2732 pm_buffer_append_string(buffer,
"\"call_operator_loc\":", 20);
2733 if (
cast->call_operator_loc.length != 0) {
2734 pm_dump_json_location(buffer, &
cast->call_operator_loc);
2736 pm_buffer_append_string(buffer,
"null", 4);
2740 pm_buffer_append_byte(buffer,
',');
2741 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
2742 pm_dump_json_location(buffer, &
cast->opening_loc);
2745 pm_buffer_append_byte(buffer,
',');
2746 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
2747 if (
cast->arguments != NULL) {
2748 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->arguments);
2750 pm_buffer_append_string(buffer,
"null", 4);
2754 pm_buffer_append_byte(buffer,
',');
2755 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
2756 pm_dump_json_location(buffer, &
cast->closing_loc);
2759 pm_buffer_append_byte(buffer,
',');
2760 pm_buffer_append_string(buffer,
"\"block\":", 8);
2761 if (
cast->block != NULL) {
2762 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->block);
2764 pm_buffer_append_string(buffer,
"null", 4);
2768 pm_buffer_append_byte(buffer,
',');
2769 pm_buffer_append_string(buffer,
"\"binary_operator\":", 18);
2770 pm_dump_json_constant(buffer, parser,
cast->binary_operator);
2773 pm_buffer_append_byte(buffer,
',');
2774 pm_buffer_append_string(buffer,
"\"binary_operator_loc\":", 22);
2775 pm_dump_json_location(buffer, &
cast->binary_operator_loc);
2778 pm_buffer_append_byte(buffer,
',');
2779 pm_buffer_append_string(buffer,
"\"value\":", 8);
2780 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
2782 pm_buffer_append_byte(buffer,
'}');
2785 case PM_INDEX_OR_WRITE_NODE: {
2786 pm_buffer_append_string(buffer,
"{\"type\":\"IndexOrWriteNode\",\"location\":", 38);
2789 pm_dump_json_location(buffer, &
cast->base.location);
2792 pm_buffer_append_byte(buffer,
',');
2793 pm_buffer_append_string(buffer,
"\"flags\":", 8);
2795 pm_buffer_append_byte(buffer,
'[');
2796 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
2797 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2798 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
2801 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
2802 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2803 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
2806 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
2807 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2808 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
2811 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
2812 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2813 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
2816 pm_buffer_append_byte(buffer,
']');
2819 pm_buffer_append_byte(buffer,
',');
2820 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
2821 if (
cast->receiver != NULL) {
2822 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->receiver);
2824 pm_buffer_append_string(buffer,
"null", 4);
2828 pm_buffer_append_byte(buffer,
',');
2829 pm_buffer_append_string(buffer,
"\"call_operator_loc\":", 20);
2830 if (
cast->call_operator_loc.length != 0) {
2831 pm_dump_json_location(buffer, &
cast->call_operator_loc);
2833 pm_buffer_append_string(buffer,
"null", 4);
2837 pm_buffer_append_byte(buffer,
',');
2838 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
2839 pm_dump_json_location(buffer, &
cast->opening_loc);
2842 pm_buffer_append_byte(buffer,
',');
2843 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
2844 if (
cast->arguments != NULL) {
2845 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->arguments);
2847 pm_buffer_append_string(buffer,
"null", 4);
2851 pm_buffer_append_byte(buffer,
',');
2852 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
2853 pm_dump_json_location(buffer, &
cast->closing_loc);
2856 pm_buffer_append_byte(buffer,
',');
2857 pm_buffer_append_string(buffer,
"\"block\":", 8);
2858 if (
cast->block != NULL) {
2859 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->block);
2861 pm_buffer_append_string(buffer,
"null", 4);
2865 pm_buffer_append_byte(buffer,
',');
2866 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
2867 pm_dump_json_location(buffer, &
cast->operator_loc);
2870 pm_buffer_append_byte(buffer,
',');
2871 pm_buffer_append_string(buffer,
"\"value\":", 8);
2872 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
2874 pm_buffer_append_byte(buffer,
'}');
2877 case PM_INDEX_TARGET_NODE: {
2878 pm_buffer_append_string(buffer,
"{\"type\":\"IndexTargetNode\",\"location\":", 37);
2881 pm_dump_json_location(buffer, &
cast->base.location);
2884 pm_buffer_append_byte(buffer,
',');
2885 pm_buffer_append_string(buffer,
"\"flags\":", 8);
2887 pm_buffer_append_byte(buffer,
'[');
2888 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
2889 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2890 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
2893 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
2894 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2895 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
2898 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
2899 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2900 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
2903 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
2904 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2905 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
2908 pm_buffer_append_byte(buffer,
']');
2911 pm_buffer_append_byte(buffer,
',');
2912 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
2913 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->receiver);
2916 pm_buffer_append_byte(buffer,
',');
2917 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
2918 pm_dump_json_location(buffer, &
cast->opening_loc);
2921 pm_buffer_append_byte(buffer,
',');
2922 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
2923 if (
cast->arguments != NULL) {
2924 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->arguments);
2926 pm_buffer_append_string(buffer,
"null", 4);
2930 pm_buffer_append_byte(buffer,
',');
2931 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
2932 pm_dump_json_location(buffer, &
cast->closing_loc);
2935 pm_buffer_append_byte(buffer,
',');
2936 pm_buffer_append_string(buffer,
"\"block\":", 8);
2937 if (
cast->block != NULL) {
2938 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->block);
2940 pm_buffer_append_string(buffer,
"null", 4);
2943 pm_buffer_append_byte(buffer,
'}');
2946 case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
2947 pm_buffer_append_string(buffer,
"{\"type\":\"InstanceVariableAndWriteNode\",\"location\":", 50);
2950 pm_dump_json_location(buffer, &
cast->base.location);
2953 pm_buffer_append_byte(buffer,
',');
2954 pm_buffer_append_string(buffer,
"\"name\":", 7);
2955 pm_dump_json_constant(buffer, parser,
cast->name);
2958 pm_buffer_append_byte(buffer,
',');
2959 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
2960 pm_dump_json_location(buffer, &
cast->name_loc);
2963 pm_buffer_append_byte(buffer,
',');
2964 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
2965 pm_dump_json_location(buffer, &
cast->operator_loc);
2968 pm_buffer_append_byte(buffer,
',');
2969 pm_buffer_append_string(buffer,
"\"value\":", 8);
2970 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
2972 pm_buffer_append_byte(buffer,
'}');
2975 case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
2976 pm_buffer_append_string(buffer,
"{\"type\":\"InstanceVariableOperatorWriteNode\",\"location\":", 55);
2979 pm_dump_json_location(buffer, &
cast->base.location);
2982 pm_buffer_append_byte(buffer,
',');
2983 pm_buffer_append_string(buffer,
"\"name\":", 7);
2984 pm_dump_json_constant(buffer, parser,
cast->name);
2987 pm_buffer_append_byte(buffer,
',');
2988 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
2989 pm_dump_json_location(buffer, &
cast->name_loc);
2992 pm_buffer_append_byte(buffer,
',');
2993 pm_buffer_append_string(buffer,
"\"binary_operator_loc\":", 22);
2994 pm_dump_json_location(buffer, &
cast->binary_operator_loc);
2997 pm_buffer_append_byte(buffer,
',');
2998 pm_buffer_append_string(buffer,
"\"value\":", 8);
2999 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
3002 pm_buffer_append_byte(buffer,
',');
3003 pm_buffer_append_string(buffer,
"\"binary_operator\":", 18);
3004 pm_dump_json_constant(buffer, parser,
cast->binary_operator);
3006 pm_buffer_append_byte(buffer,
'}');
3009 case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
3010 pm_buffer_append_string(buffer,
"{\"type\":\"InstanceVariableOrWriteNode\",\"location\":", 49);
3013 pm_dump_json_location(buffer, &
cast->base.location);
3016 pm_buffer_append_byte(buffer,
',');
3017 pm_buffer_append_string(buffer,
"\"name\":", 7);
3018 pm_dump_json_constant(buffer, parser,
cast->name);
3021 pm_buffer_append_byte(buffer,
',');
3022 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
3023 pm_dump_json_location(buffer, &
cast->name_loc);
3026 pm_buffer_append_byte(buffer,
',');
3027 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
3028 pm_dump_json_location(buffer, &
cast->operator_loc);
3031 pm_buffer_append_byte(buffer,
',');
3032 pm_buffer_append_string(buffer,
"\"value\":", 8);
3033 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
3035 pm_buffer_append_byte(buffer,
'}');
3038 case PM_INSTANCE_VARIABLE_READ_NODE: {
3039 pm_buffer_append_string(buffer,
"{\"type\":\"InstanceVariableReadNode\",\"location\":", 46);
3042 pm_dump_json_location(buffer, &
cast->base.location);
3045 pm_buffer_append_byte(buffer,
',');
3046 pm_buffer_append_string(buffer,
"\"name\":", 7);
3047 pm_dump_json_constant(buffer, parser,
cast->name);
3049 pm_buffer_append_byte(buffer,
'}');
3052 case PM_INSTANCE_VARIABLE_TARGET_NODE: {
3053 pm_buffer_append_string(buffer,
"{\"type\":\"InstanceVariableTargetNode\",\"location\":", 48);
3056 pm_dump_json_location(buffer, &
cast->base.location);
3059 pm_buffer_append_byte(buffer,
',');
3060 pm_buffer_append_string(buffer,
"\"name\":", 7);
3061 pm_dump_json_constant(buffer, parser,
cast->name);
3063 pm_buffer_append_byte(buffer,
'}');
3066 case PM_INSTANCE_VARIABLE_WRITE_NODE: {
3067 pm_buffer_append_string(buffer,
"{\"type\":\"InstanceVariableWriteNode\",\"location\":", 47);
3070 pm_dump_json_location(buffer, &
cast->base.location);
3073 pm_buffer_append_byte(buffer,
',');
3074 pm_buffer_append_string(buffer,
"\"name\":", 7);
3075 pm_dump_json_constant(buffer, parser,
cast->name);
3078 pm_buffer_append_byte(buffer,
',');
3079 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
3080 pm_dump_json_location(buffer, &
cast->name_loc);
3083 pm_buffer_append_byte(buffer,
',');
3084 pm_buffer_append_string(buffer,
"\"value\":", 8);
3085 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
3088 pm_buffer_append_byte(buffer,
',');
3089 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
3090 pm_dump_json_location(buffer, &
cast->operator_loc);
3092 pm_buffer_append_byte(buffer,
'}');
3095 case PM_INTEGER_NODE: {
3096 pm_buffer_append_string(buffer,
"{\"type\":\"IntegerNode\",\"location\":", 33);
3099 pm_dump_json_location(buffer, &
cast->base.location);
3102 pm_buffer_append_byte(buffer,
',');
3103 pm_buffer_append_string(buffer,
"\"flags\":", 8);
3105 pm_buffer_append_byte(buffer,
'[');
3106 if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_BINARY)) {
3107 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3108 pm_buffer_append_string(buffer,
"\"BINARY\"", 8);
3111 if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_DECIMAL)) {
3112 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3113 pm_buffer_append_string(buffer,
"\"DECIMAL\"", 9);
3116 if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_OCTAL)) {
3117 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3118 pm_buffer_append_string(buffer,
"\"OCTAL\"", 7);
3121 if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_HEXADECIMAL)) {
3122 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3123 pm_buffer_append_string(buffer,
"\"HEXADECIMAL\"", 13);
3126 pm_buffer_append_byte(buffer,
']');
3129 pm_buffer_append_byte(buffer,
',');
3130 pm_buffer_append_string(buffer,
"\"value\":", 8);
3131 pm_integer_string(buffer, &
cast->value);
3133 pm_buffer_append_byte(buffer,
'}');
3136 case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
3137 pm_buffer_append_string(buffer,
"{\"type\":\"InterpolatedMatchLastLineNode\",\"location\":", 51);
3140 pm_dump_json_location(buffer, &
cast->base.location);
3143 pm_buffer_append_byte(buffer,
',');
3144 pm_buffer_append_string(buffer,
"\"flags\":", 8);
3146 pm_buffer_append_byte(buffer,
'[');
3147 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
3148 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3149 pm_buffer_append_string(buffer,
"\"IGNORE_CASE\"", 13);
3152 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EXTENDED)) {
3153 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3154 pm_buffer_append_string(buffer,
"\"EXTENDED\"", 10);
3157 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE)) {
3158 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3159 pm_buffer_append_string(buffer,
"\"MULTI_LINE\"", 12);
3162 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ONCE)) {
3163 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3164 pm_buffer_append_string(buffer,
"\"ONCE\"", 6);
3167 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EUC_JP)) {
3168 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3169 pm_buffer_append_string(buffer,
"\"EUC_JP\"", 8);
3172 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT)) {
3173 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3174 pm_buffer_append_string(buffer,
"\"ASCII_8BIT\"", 12);
3177 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J)) {
3178 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3179 pm_buffer_append_string(buffer,
"\"WINDOWS_31J\"", 13);
3182 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_UTF_8)) {
3183 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3184 pm_buffer_append_string(buffer,
"\"UTF_8\"", 7);
3187 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING)) {
3188 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3189 pm_buffer_append_string(buffer,
"\"FORCED_UTF8_ENCODING\"", 22);
3192 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING)) {
3193 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3194 pm_buffer_append_string(buffer,
"\"FORCED_BINARY_ENCODING\"", 24);
3197 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING)) {
3198 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3199 pm_buffer_append_string(buffer,
"\"FORCED_US_ASCII_ENCODING\"", 26);
3202 pm_buffer_append_byte(buffer,
']');
3205 pm_buffer_append_byte(buffer,
',');
3206 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
3207 pm_dump_json_location(buffer, &
cast->opening_loc);
3210 pm_buffer_append_byte(buffer,
',');
3211 pm_buffer_append_string(buffer,
"\"parts\":", 8);
3213 pm_buffer_append_byte(buffer,
'[');
3215 for (
size_t index = 0; index < parts->
size; index++) {
3216 if (index != 0) pm_buffer_append_byte(buffer,
',');
3217 pm_dump_json(buffer, parser, parts->
nodes[index]);
3219 pm_buffer_append_byte(buffer,
']');
3222 pm_buffer_append_byte(buffer,
',');
3223 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
3224 pm_dump_json_location(buffer, &
cast->closing_loc);
3226 pm_buffer_append_byte(buffer,
'}');
3229 case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
3230 pm_buffer_append_string(buffer,
"{\"type\":\"InterpolatedRegularExpressionNode\",\"location\":", 55);
3233 pm_dump_json_location(buffer, &
cast->base.location);
3236 pm_buffer_append_byte(buffer,
',');
3237 pm_buffer_append_string(buffer,
"\"flags\":", 8);
3239 pm_buffer_append_byte(buffer,
'[');
3240 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
3241 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3242 pm_buffer_append_string(buffer,
"\"IGNORE_CASE\"", 13);
3245 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EXTENDED)) {
3246 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3247 pm_buffer_append_string(buffer,
"\"EXTENDED\"", 10);
3250 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE)) {
3251 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3252 pm_buffer_append_string(buffer,
"\"MULTI_LINE\"", 12);
3255 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ONCE)) {
3256 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3257 pm_buffer_append_string(buffer,
"\"ONCE\"", 6);
3260 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EUC_JP)) {
3261 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3262 pm_buffer_append_string(buffer,
"\"EUC_JP\"", 8);
3265 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT)) {
3266 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3267 pm_buffer_append_string(buffer,
"\"ASCII_8BIT\"", 12);
3270 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J)) {
3271 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3272 pm_buffer_append_string(buffer,
"\"WINDOWS_31J\"", 13);
3275 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_UTF_8)) {
3276 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3277 pm_buffer_append_string(buffer,
"\"UTF_8\"", 7);
3280 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING)) {
3281 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3282 pm_buffer_append_string(buffer,
"\"FORCED_UTF8_ENCODING\"", 22);
3285 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING)) {
3286 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3287 pm_buffer_append_string(buffer,
"\"FORCED_BINARY_ENCODING\"", 24);
3290 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING)) {
3291 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3292 pm_buffer_append_string(buffer,
"\"FORCED_US_ASCII_ENCODING\"", 26);
3295 pm_buffer_append_byte(buffer,
']');
3298 pm_buffer_append_byte(buffer,
',');
3299 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
3300 pm_dump_json_location(buffer, &
cast->opening_loc);
3303 pm_buffer_append_byte(buffer,
',');
3304 pm_buffer_append_string(buffer,
"\"parts\":", 8);
3306 pm_buffer_append_byte(buffer,
'[');
3308 for (
size_t index = 0; index < parts->
size; index++) {
3309 if (index != 0) pm_buffer_append_byte(buffer,
',');
3310 pm_dump_json(buffer, parser, parts->
nodes[index]);
3312 pm_buffer_append_byte(buffer,
']');
3315 pm_buffer_append_byte(buffer,
',');
3316 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
3317 pm_dump_json_location(buffer, &
cast->closing_loc);
3319 pm_buffer_append_byte(buffer,
'}');
3322 case PM_INTERPOLATED_STRING_NODE: {
3323 pm_buffer_append_string(buffer,
"{\"type\":\"InterpolatedStringNode\",\"location\":", 44);
3326 pm_dump_json_location(buffer, &
cast->base.location);
3329 pm_buffer_append_byte(buffer,
',');
3330 pm_buffer_append_string(buffer,
"\"flags\":", 8);
3332 pm_buffer_append_byte(buffer,
'[');
3333 if (PM_NODE_FLAG_P(cast, PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN)) {
3334 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3335 pm_buffer_append_string(buffer,
"\"FROZEN\"", 8);
3338 if (PM_NODE_FLAG_P(cast, PM_INTERPOLATED_STRING_NODE_FLAGS_MUTABLE)) {
3339 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3340 pm_buffer_append_string(buffer,
"\"MUTABLE\"", 9);
3343 pm_buffer_append_byte(buffer,
']');
3346 pm_buffer_append_byte(buffer,
',');
3347 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
3348 if (
cast->opening_loc.length != 0) {
3349 pm_dump_json_location(buffer, &
cast->opening_loc);
3351 pm_buffer_append_string(buffer,
"null", 4);
3355 pm_buffer_append_byte(buffer,
',');
3356 pm_buffer_append_string(buffer,
"\"parts\":", 8);
3358 pm_buffer_append_byte(buffer,
'[');
3360 for (
size_t index = 0; index < parts->
size; index++) {
3361 if (index != 0) pm_buffer_append_byte(buffer,
',');
3362 pm_dump_json(buffer, parser, parts->
nodes[index]);
3364 pm_buffer_append_byte(buffer,
']');
3367 pm_buffer_append_byte(buffer,
',');
3368 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
3369 if (
cast->closing_loc.length != 0) {
3370 pm_dump_json_location(buffer, &
cast->closing_loc);
3372 pm_buffer_append_string(buffer,
"null", 4);
3375 pm_buffer_append_byte(buffer,
'}');
3378 case PM_INTERPOLATED_SYMBOL_NODE: {
3379 pm_buffer_append_string(buffer,
"{\"type\":\"InterpolatedSymbolNode\",\"location\":", 44);
3382 pm_dump_json_location(buffer, &
cast->base.location);
3385 pm_buffer_append_byte(buffer,
',');
3386 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
3387 if (
cast->opening_loc.length != 0) {
3388 pm_dump_json_location(buffer, &
cast->opening_loc);
3390 pm_buffer_append_string(buffer,
"null", 4);
3394 pm_buffer_append_byte(buffer,
',');
3395 pm_buffer_append_string(buffer,
"\"parts\":", 8);
3397 pm_buffer_append_byte(buffer,
'[');
3399 for (
size_t index = 0; index < parts->
size; index++) {
3400 if (index != 0) pm_buffer_append_byte(buffer,
',');
3401 pm_dump_json(buffer, parser, parts->
nodes[index]);
3403 pm_buffer_append_byte(buffer,
']');
3406 pm_buffer_append_byte(buffer,
',');
3407 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
3408 if (
cast->closing_loc.length != 0) {
3409 pm_dump_json_location(buffer, &
cast->closing_loc);
3411 pm_buffer_append_string(buffer,
"null", 4);
3414 pm_buffer_append_byte(buffer,
'}');
3417 case PM_INTERPOLATED_X_STRING_NODE: {
3418 pm_buffer_append_string(buffer,
"{\"type\":\"InterpolatedXStringNode\",\"location\":", 45);
3421 pm_dump_json_location(buffer, &
cast->base.location);
3424 pm_buffer_append_byte(buffer,
',');
3425 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
3426 pm_dump_json_location(buffer, &
cast->opening_loc);
3429 pm_buffer_append_byte(buffer,
',');
3430 pm_buffer_append_string(buffer,
"\"parts\":", 8);
3432 pm_buffer_append_byte(buffer,
'[');
3434 for (
size_t index = 0; index < parts->
size; index++) {
3435 if (index != 0) pm_buffer_append_byte(buffer,
',');
3436 pm_dump_json(buffer, parser, parts->
nodes[index]);
3438 pm_buffer_append_byte(buffer,
']');
3441 pm_buffer_append_byte(buffer,
',');
3442 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
3443 pm_dump_json_location(buffer, &
cast->closing_loc);
3445 pm_buffer_append_byte(buffer,
'}');
3448 case PM_IT_LOCAL_VARIABLE_READ_NODE: {
3449 pm_buffer_append_string(buffer,
"{\"type\":\"ItLocalVariableReadNode\",\"location\":", 45);
3452 pm_dump_json_location(buffer, &
cast->base.location);
3454 pm_buffer_append_byte(buffer,
'}');
3457 case PM_IT_PARAMETERS_NODE: {
3458 pm_buffer_append_string(buffer,
"{\"type\":\"ItParametersNode\",\"location\":", 38);
3461 pm_dump_json_location(buffer, &
cast->base.location);
3463 pm_buffer_append_byte(buffer,
'}');
3466 case PM_KEYWORD_HASH_NODE: {
3467 pm_buffer_append_string(buffer,
"{\"type\":\"KeywordHashNode\",\"location\":", 37);
3470 pm_dump_json_location(buffer, &
cast->base.location);
3473 pm_buffer_append_byte(buffer,
',');
3474 pm_buffer_append_string(buffer,
"\"flags\":", 8);
3476 pm_buffer_append_byte(buffer,
'[');
3477 if (PM_NODE_FLAG_P(cast, PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS)) {
3478 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3479 pm_buffer_append_string(buffer,
"\"SYMBOL_KEYS\"", 13);
3482 pm_buffer_append_byte(buffer,
']');
3485 pm_buffer_append_byte(buffer,
',');
3486 pm_buffer_append_string(buffer,
"\"elements\":", 11);
3488 pm_buffer_append_byte(buffer,
'[');
3490 for (
size_t index = 0; index < elements->
size; index++) {
3491 if (index != 0) pm_buffer_append_byte(buffer,
',');
3492 pm_dump_json(buffer, parser, elements->
nodes[index]);
3494 pm_buffer_append_byte(buffer,
']');
3496 pm_buffer_append_byte(buffer,
'}');
3499 case PM_KEYWORD_REST_PARAMETER_NODE: {
3500 pm_buffer_append_string(buffer,
"{\"type\":\"KeywordRestParameterNode\",\"location\":", 46);
3503 pm_dump_json_location(buffer, &
cast->base.location);
3506 pm_buffer_append_byte(buffer,
',');
3507 pm_buffer_append_string(buffer,
"\"flags\":", 8);
3509 pm_buffer_append_byte(buffer,
'[');
3510 if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
3511 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3512 pm_buffer_append_string(buffer,
"\"REPEATED_PARAMETER\"", 20);
3515 pm_buffer_append_byte(buffer,
']');
3518 pm_buffer_append_byte(buffer,
',');
3519 pm_buffer_append_string(buffer,
"\"name\":", 7);
3520 if (
cast->name != PM_CONSTANT_ID_UNSET) {
3521 pm_dump_json_constant(buffer, parser,
cast->name);
3523 pm_buffer_append_string(buffer,
"null", 4);
3527 pm_buffer_append_byte(buffer,
',');
3528 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
3529 if (
cast->name_loc.length != 0) {
3530 pm_dump_json_location(buffer, &
cast->name_loc);
3532 pm_buffer_append_string(buffer,
"null", 4);
3536 pm_buffer_append_byte(buffer,
',');
3537 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
3538 pm_dump_json_location(buffer, &
cast->operator_loc);
3540 pm_buffer_append_byte(buffer,
'}');
3543 case PM_LAMBDA_NODE: {
3544 pm_buffer_append_string(buffer,
"{\"type\":\"LambdaNode\",\"location\":", 32);
3547 pm_dump_json_location(buffer, &
cast->base.location);
3550 pm_buffer_append_byte(buffer,
',');
3551 pm_buffer_append_string(buffer,
"\"locals\":", 9);
3553 pm_buffer_append_byte(buffer,
'[');
3555 for (
size_t index = 0; index < locals->
size; index++) {
3556 if (index != 0) pm_buffer_append_byte(buffer,
',');
3557 pm_dump_json_constant(buffer, parser, locals->
ids[index]);
3559 pm_buffer_append_byte(buffer,
']');
3562 pm_buffer_append_byte(buffer,
',');
3563 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
3564 pm_dump_json_location(buffer, &
cast->operator_loc);
3567 pm_buffer_append_byte(buffer,
',');
3568 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
3569 pm_dump_json_location(buffer, &
cast->opening_loc);
3572 pm_buffer_append_byte(buffer,
',');
3573 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
3574 pm_dump_json_location(buffer, &
cast->closing_loc);
3577 pm_buffer_append_byte(buffer,
',');
3578 pm_buffer_append_string(buffer,
"\"parameters\":", 13);
3579 if (
cast->parameters != NULL) {
3580 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->parameters);
3582 pm_buffer_append_string(buffer,
"null", 4);
3586 pm_buffer_append_byte(buffer,
',');
3587 pm_buffer_append_string(buffer,
"\"body\":", 7);
3588 if (
cast->body != NULL) {
3589 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->body);
3591 pm_buffer_append_string(buffer,
"null", 4);
3594 pm_buffer_append_byte(buffer,
'}');
3597 case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
3598 pm_buffer_append_string(buffer,
"{\"type\":\"LocalVariableAndWriteNode\",\"location\":", 47);
3601 pm_dump_json_location(buffer, &
cast->base.location);
3604 pm_buffer_append_byte(buffer,
',');
3605 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
3606 pm_dump_json_location(buffer, &
cast->name_loc);
3609 pm_buffer_append_byte(buffer,
',');
3610 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
3611 pm_dump_json_location(buffer, &
cast->operator_loc);
3614 pm_buffer_append_byte(buffer,
',');
3615 pm_buffer_append_string(buffer,
"\"value\":", 8);
3616 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
3619 pm_buffer_append_byte(buffer,
',');
3620 pm_buffer_append_string(buffer,
"\"name\":", 7);
3621 pm_dump_json_constant(buffer, parser,
cast->name);
3624 pm_buffer_append_byte(buffer,
',');
3625 pm_buffer_append_string(buffer,
"\"depth\":", 8);
3626 pm_buffer_append_format(buffer,
"%" PRIu32,
cast->depth);
3628 pm_buffer_append_byte(buffer,
'}');
3631 case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
3632 pm_buffer_append_string(buffer,
"{\"type\":\"LocalVariableOperatorWriteNode\",\"location\":", 52);
3635 pm_dump_json_location(buffer, &
cast->base.location);
3638 pm_buffer_append_byte(buffer,
',');
3639 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
3640 pm_dump_json_location(buffer, &
cast->name_loc);
3643 pm_buffer_append_byte(buffer,
',');
3644 pm_buffer_append_string(buffer,
"\"binary_operator_loc\":", 22);
3645 pm_dump_json_location(buffer, &
cast->binary_operator_loc);
3648 pm_buffer_append_byte(buffer,
',');
3649 pm_buffer_append_string(buffer,
"\"value\":", 8);
3650 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
3653 pm_buffer_append_byte(buffer,
',');
3654 pm_buffer_append_string(buffer,
"\"name\":", 7);
3655 pm_dump_json_constant(buffer, parser,
cast->name);
3658 pm_buffer_append_byte(buffer,
',');
3659 pm_buffer_append_string(buffer,
"\"binary_operator\":", 18);
3660 pm_dump_json_constant(buffer, parser,
cast->binary_operator);
3663 pm_buffer_append_byte(buffer,
',');
3664 pm_buffer_append_string(buffer,
"\"depth\":", 8);
3665 pm_buffer_append_format(buffer,
"%" PRIu32,
cast->depth);
3667 pm_buffer_append_byte(buffer,
'}');
3670 case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
3671 pm_buffer_append_string(buffer,
"{\"type\":\"LocalVariableOrWriteNode\",\"location\":", 46);
3674 pm_dump_json_location(buffer, &
cast->base.location);
3677 pm_buffer_append_byte(buffer,
',');
3678 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
3679 pm_dump_json_location(buffer, &
cast->name_loc);
3682 pm_buffer_append_byte(buffer,
',');
3683 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
3684 pm_dump_json_location(buffer, &
cast->operator_loc);
3687 pm_buffer_append_byte(buffer,
',');
3688 pm_buffer_append_string(buffer,
"\"value\":", 8);
3689 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
3692 pm_buffer_append_byte(buffer,
',');
3693 pm_buffer_append_string(buffer,
"\"name\":", 7);
3694 pm_dump_json_constant(buffer, parser,
cast->name);
3697 pm_buffer_append_byte(buffer,
',');
3698 pm_buffer_append_string(buffer,
"\"depth\":", 8);
3699 pm_buffer_append_format(buffer,
"%" PRIu32,
cast->depth);
3701 pm_buffer_append_byte(buffer,
'}');
3704 case PM_LOCAL_VARIABLE_READ_NODE: {
3705 pm_buffer_append_string(buffer,
"{\"type\":\"LocalVariableReadNode\",\"location\":", 43);
3708 pm_dump_json_location(buffer, &
cast->base.location);
3711 pm_buffer_append_byte(buffer,
',');
3712 pm_buffer_append_string(buffer,
"\"name\":", 7);
3713 pm_dump_json_constant(buffer, parser,
cast->name);
3716 pm_buffer_append_byte(buffer,
',');
3717 pm_buffer_append_string(buffer,
"\"depth\":", 8);
3718 pm_buffer_append_format(buffer,
"%" PRIu32,
cast->depth);
3720 pm_buffer_append_byte(buffer,
'}');
3723 case PM_LOCAL_VARIABLE_TARGET_NODE: {
3724 pm_buffer_append_string(buffer,
"{\"type\":\"LocalVariableTargetNode\",\"location\":", 45);
3727 pm_dump_json_location(buffer, &
cast->base.location);
3730 pm_buffer_append_byte(buffer,
',');
3731 pm_buffer_append_string(buffer,
"\"name\":", 7);
3732 pm_dump_json_constant(buffer, parser,
cast->name);
3735 pm_buffer_append_byte(buffer,
',');
3736 pm_buffer_append_string(buffer,
"\"depth\":", 8);
3737 pm_buffer_append_format(buffer,
"%" PRIu32,
cast->depth);
3739 pm_buffer_append_byte(buffer,
'}');
3742 case PM_LOCAL_VARIABLE_WRITE_NODE: {
3743 pm_buffer_append_string(buffer,
"{\"type\":\"LocalVariableWriteNode\",\"location\":", 44);
3746 pm_dump_json_location(buffer, &
cast->base.location);
3749 pm_buffer_append_byte(buffer,
',');
3750 pm_buffer_append_string(buffer,
"\"name\":", 7);
3751 pm_dump_json_constant(buffer, parser,
cast->name);
3754 pm_buffer_append_byte(buffer,
',');
3755 pm_buffer_append_string(buffer,
"\"depth\":", 8);
3756 pm_buffer_append_format(buffer,
"%" PRIu32,
cast->depth);
3759 pm_buffer_append_byte(buffer,
',');
3760 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
3761 pm_dump_json_location(buffer, &
cast->name_loc);
3764 pm_buffer_append_byte(buffer,
',');
3765 pm_buffer_append_string(buffer,
"\"value\":", 8);
3766 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
3769 pm_buffer_append_byte(buffer,
',');
3770 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
3771 pm_dump_json_location(buffer, &
cast->operator_loc);
3773 pm_buffer_append_byte(buffer,
'}');
3776 case PM_MATCH_LAST_LINE_NODE: {
3777 pm_buffer_append_string(buffer,
"{\"type\":\"MatchLastLineNode\",\"location\":", 39);
3780 pm_dump_json_location(buffer, &
cast->base.location);
3783 pm_buffer_append_byte(buffer,
',');
3784 pm_buffer_append_string(buffer,
"\"flags\":", 8);
3786 pm_buffer_append_byte(buffer,
'[');
3787 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
3788 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3789 pm_buffer_append_string(buffer,
"\"IGNORE_CASE\"", 13);
3792 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EXTENDED)) {
3793 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3794 pm_buffer_append_string(buffer,
"\"EXTENDED\"", 10);
3797 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE)) {
3798 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3799 pm_buffer_append_string(buffer,
"\"MULTI_LINE\"", 12);
3802 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ONCE)) {
3803 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3804 pm_buffer_append_string(buffer,
"\"ONCE\"", 6);
3807 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EUC_JP)) {
3808 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3809 pm_buffer_append_string(buffer,
"\"EUC_JP\"", 8);
3812 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT)) {
3813 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3814 pm_buffer_append_string(buffer,
"\"ASCII_8BIT\"", 12);
3817 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J)) {
3818 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3819 pm_buffer_append_string(buffer,
"\"WINDOWS_31J\"", 13);
3822 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_UTF_8)) {
3823 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3824 pm_buffer_append_string(buffer,
"\"UTF_8\"", 7);
3827 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING)) {
3828 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3829 pm_buffer_append_string(buffer,
"\"FORCED_UTF8_ENCODING\"", 22);
3832 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING)) {
3833 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3834 pm_buffer_append_string(buffer,
"\"FORCED_BINARY_ENCODING\"", 24);
3837 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING)) {
3838 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3839 pm_buffer_append_string(buffer,
"\"FORCED_US_ASCII_ENCODING\"", 26);
3842 pm_buffer_append_byte(buffer,
']');
3845 pm_buffer_append_byte(buffer,
',');
3846 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
3847 pm_dump_json_location(buffer, &
cast->opening_loc);
3850 pm_buffer_append_byte(buffer,
',');
3851 pm_buffer_append_string(buffer,
"\"content_loc\":", 14);
3852 pm_dump_json_location(buffer, &
cast->content_loc);
3855 pm_buffer_append_byte(buffer,
',');
3856 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
3857 pm_dump_json_location(buffer, &
cast->closing_loc);
3860 pm_buffer_append_byte(buffer,
',');
3861 pm_buffer_append_string(buffer,
"\"unescaped\":", 12);
3863 pm_buffer_append_byte(buffer,
'"');
3864 pm_buffer_append_source(buffer, pm_string_source(unescaped), pm_string_length(unescaped), PM_BUFFER_ESCAPING_JSON);
3865 pm_buffer_append_byte(buffer,
'"');
3867 pm_buffer_append_byte(buffer,
'}');
3870 case PM_MATCH_PREDICATE_NODE: {
3871 pm_buffer_append_string(buffer,
"{\"type\":\"MatchPredicateNode\",\"location\":", 40);
3874 pm_dump_json_location(buffer, &
cast->base.location);
3877 pm_buffer_append_byte(buffer,
',');
3878 pm_buffer_append_string(buffer,
"\"value\":", 8);
3879 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
3882 pm_buffer_append_byte(buffer,
',');
3883 pm_buffer_append_string(buffer,
"\"pattern\":", 10);
3884 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->pattern);
3887 pm_buffer_append_byte(buffer,
',');
3888 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
3889 pm_dump_json_location(buffer, &
cast->keyword_loc);
3891 pm_buffer_append_byte(buffer,
'}');
3894 case PM_MATCH_REQUIRED_NODE: {
3895 pm_buffer_append_string(buffer,
"{\"type\":\"MatchRequiredNode\",\"location\":", 39);
3898 pm_dump_json_location(buffer, &
cast->base.location);
3901 pm_buffer_append_byte(buffer,
',');
3902 pm_buffer_append_string(buffer,
"\"value\":", 8);
3903 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
3906 pm_buffer_append_byte(buffer,
',');
3907 pm_buffer_append_string(buffer,
"\"pattern\":", 10);
3908 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->pattern);
3911 pm_buffer_append_byte(buffer,
',');
3912 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
3913 pm_dump_json_location(buffer, &
cast->operator_loc);
3915 pm_buffer_append_byte(buffer,
'}');
3918 case PM_MATCH_WRITE_NODE: {
3919 pm_buffer_append_string(buffer,
"{\"type\":\"MatchWriteNode\",\"location\":", 36);
3922 pm_dump_json_location(buffer, &
cast->base.location);
3925 pm_buffer_append_byte(buffer,
',');
3926 pm_buffer_append_string(buffer,
"\"call\":", 7);
3927 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->call);
3930 pm_buffer_append_byte(buffer,
',');
3931 pm_buffer_append_string(buffer,
"\"targets\":", 10);
3933 pm_buffer_append_byte(buffer,
'[');
3935 for (
size_t index = 0; index < targets->
size; index++) {
3936 if (index != 0) pm_buffer_append_byte(buffer,
',');
3937 pm_dump_json(buffer, parser, targets->
nodes[index]);
3939 pm_buffer_append_byte(buffer,
']');
3941 pm_buffer_append_byte(buffer,
'}');
3944 case PM_MODULE_NODE: {
3945 pm_buffer_append_string(buffer,
"{\"type\":\"ModuleNode\",\"location\":", 32);
3948 pm_dump_json_location(buffer, &
cast->base.location);
3951 pm_buffer_append_byte(buffer,
',');
3952 pm_buffer_append_string(buffer,
"\"locals\":", 9);
3954 pm_buffer_append_byte(buffer,
'[');
3956 for (
size_t index = 0; index < locals->
size; index++) {
3957 if (index != 0) pm_buffer_append_byte(buffer,
',');
3958 pm_dump_json_constant(buffer, parser, locals->
ids[index]);
3960 pm_buffer_append_byte(buffer,
']');
3963 pm_buffer_append_byte(buffer,
',');
3964 pm_buffer_append_string(buffer,
"\"module_keyword_loc\":", 21);
3965 pm_dump_json_location(buffer, &
cast->module_keyword_loc);
3968 pm_buffer_append_byte(buffer,
',');
3969 pm_buffer_append_string(buffer,
"\"constant_path\":", 16);
3970 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->constant_path);
3973 pm_buffer_append_byte(buffer,
',');
3974 pm_buffer_append_string(buffer,
"\"body\":", 7);
3975 if (
cast->body != NULL) {
3976 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->body);
3978 pm_buffer_append_string(buffer,
"null", 4);
3982 pm_buffer_append_byte(buffer,
',');
3983 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
3984 pm_dump_json_location(buffer, &
cast->end_keyword_loc);
3987 pm_buffer_append_byte(buffer,
',');
3988 pm_buffer_append_string(buffer,
"\"name\":", 7);
3989 pm_dump_json_constant(buffer, parser,
cast->name);
3991 pm_buffer_append_byte(buffer,
'}');
3994 case PM_MULTI_TARGET_NODE: {
3995 pm_buffer_append_string(buffer,
"{\"type\":\"MultiTargetNode\",\"location\":", 37);
3998 pm_dump_json_location(buffer, &
cast->base.location);
4001 pm_buffer_append_byte(buffer,
',');
4002 pm_buffer_append_string(buffer,
"\"lefts\":", 8);
4004 pm_buffer_append_byte(buffer,
'[');
4006 for (
size_t index = 0; index < lefts->
size; index++) {
4007 if (index != 0) pm_buffer_append_byte(buffer,
',');
4008 pm_dump_json(buffer, parser, lefts->
nodes[index]);
4010 pm_buffer_append_byte(buffer,
']');
4013 pm_buffer_append_byte(buffer,
',');
4014 pm_buffer_append_string(buffer,
"\"rest\":", 7);
4015 if (
cast->rest != NULL) {
4016 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->rest);
4018 pm_buffer_append_string(buffer,
"null", 4);
4022 pm_buffer_append_byte(buffer,
',');
4023 pm_buffer_append_string(buffer,
"\"rights\":", 9);
4025 pm_buffer_append_byte(buffer,
'[');
4027 for (
size_t index = 0; index < rights->
size; index++) {
4028 if (index != 0) pm_buffer_append_byte(buffer,
',');
4029 pm_dump_json(buffer, parser, rights->
nodes[index]);
4031 pm_buffer_append_byte(buffer,
']');
4034 pm_buffer_append_byte(buffer,
',');
4035 pm_buffer_append_string(buffer,
"\"lparen_loc\":", 13);
4036 if (
cast->lparen_loc.length != 0) {
4037 pm_dump_json_location(buffer, &
cast->lparen_loc);
4039 pm_buffer_append_string(buffer,
"null", 4);
4043 pm_buffer_append_byte(buffer,
',');
4044 pm_buffer_append_string(buffer,
"\"rparen_loc\":", 13);
4045 if (
cast->rparen_loc.length != 0) {
4046 pm_dump_json_location(buffer, &
cast->rparen_loc);
4048 pm_buffer_append_string(buffer,
"null", 4);
4051 pm_buffer_append_byte(buffer,
'}');
4054 case PM_MULTI_WRITE_NODE: {
4055 pm_buffer_append_string(buffer,
"{\"type\":\"MultiWriteNode\",\"location\":", 36);
4058 pm_dump_json_location(buffer, &
cast->base.location);
4061 pm_buffer_append_byte(buffer,
',');
4062 pm_buffer_append_string(buffer,
"\"lefts\":", 8);
4064 pm_buffer_append_byte(buffer,
'[');
4066 for (
size_t index = 0; index < lefts->
size; index++) {
4067 if (index != 0) pm_buffer_append_byte(buffer,
',');
4068 pm_dump_json(buffer, parser, lefts->
nodes[index]);
4070 pm_buffer_append_byte(buffer,
']');
4073 pm_buffer_append_byte(buffer,
',');
4074 pm_buffer_append_string(buffer,
"\"rest\":", 7);
4075 if (
cast->rest != NULL) {
4076 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->rest);
4078 pm_buffer_append_string(buffer,
"null", 4);
4082 pm_buffer_append_byte(buffer,
',');
4083 pm_buffer_append_string(buffer,
"\"rights\":", 9);
4085 pm_buffer_append_byte(buffer,
'[');
4087 for (
size_t index = 0; index < rights->
size; index++) {
4088 if (index != 0) pm_buffer_append_byte(buffer,
',');
4089 pm_dump_json(buffer, parser, rights->
nodes[index]);
4091 pm_buffer_append_byte(buffer,
']');
4094 pm_buffer_append_byte(buffer,
',');
4095 pm_buffer_append_string(buffer,
"\"lparen_loc\":", 13);
4096 if (
cast->lparen_loc.length != 0) {
4097 pm_dump_json_location(buffer, &
cast->lparen_loc);
4099 pm_buffer_append_string(buffer,
"null", 4);
4103 pm_buffer_append_byte(buffer,
',');
4104 pm_buffer_append_string(buffer,
"\"rparen_loc\":", 13);
4105 if (
cast->rparen_loc.length != 0) {
4106 pm_dump_json_location(buffer, &
cast->rparen_loc);
4108 pm_buffer_append_string(buffer,
"null", 4);
4112 pm_buffer_append_byte(buffer,
',');
4113 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4114 pm_dump_json_location(buffer, &
cast->operator_loc);
4117 pm_buffer_append_byte(buffer,
',');
4118 pm_buffer_append_string(buffer,
"\"value\":", 8);
4119 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
4121 pm_buffer_append_byte(buffer,
'}');
4124 case PM_NEXT_NODE: {
4125 pm_buffer_append_string(buffer,
"{\"type\":\"NextNode\",\"location\":", 30);
4128 pm_dump_json_location(buffer, &
cast->base.location);
4131 pm_buffer_append_byte(buffer,
',');
4132 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
4133 if (
cast->arguments != NULL) {
4134 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->arguments);
4136 pm_buffer_append_string(buffer,
"null", 4);
4140 pm_buffer_append_byte(buffer,
',');
4141 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
4142 pm_dump_json_location(buffer, &
cast->keyword_loc);
4144 pm_buffer_append_byte(buffer,
'}');
4148 pm_buffer_append_string(buffer,
"{\"type\":\"NilNode\",\"location\":", 29);
4151 pm_dump_json_location(buffer, &
cast->base.location);
4153 pm_buffer_append_byte(buffer,
'}');
4156 case PM_NO_BLOCK_PARAMETER_NODE: {
4157 pm_buffer_append_string(buffer,
"{\"type\":\"NoBlockParameterNode\",\"location\":", 42);
4160 pm_dump_json_location(buffer, &
cast->base.location);
4163 pm_buffer_append_byte(buffer,
',');
4164 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4165 pm_dump_json_location(buffer, &
cast->operator_loc);
4168 pm_buffer_append_byte(buffer,
',');
4169 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
4170 pm_dump_json_location(buffer, &
cast->keyword_loc);
4172 pm_buffer_append_byte(buffer,
'}');
4175 case PM_NO_KEYWORDS_PARAMETER_NODE: {
4176 pm_buffer_append_string(buffer,
"{\"type\":\"NoKeywordsParameterNode\",\"location\":", 45);
4179 pm_dump_json_location(buffer, &
cast->base.location);
4182 pm_buffer_append_byte(buffer,
',');
4183 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4184 pm_dump_json_location(buffer, &
cast->operator_loc);
4187 pm_buffer_append_byte(buffer,
',');
4188 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
4189 pm_dump_json_location(buffer, &
cast->keyword_loc);
4191 pm_buffer_append_byte(buffer,
'}');
4194 case PM_NUMBERED_PARAMETERS_NODE: {
4195 pm_buffer_append_string(buffer,
"{\"type\":\"NumberedParametersNode\",\"location\":", 44);
4198 pm_dump_json_location(buffer, &
cast->base.location);
4201 pm_buffer_append_byte(buffer,
',');
4202 pm_buffer_append_string(buffer,
"\"maximum\":", 10);
4203 pm_buffer_append_format(buffer,
"%" PRIu8,
cast->maximum);
4205 pm_buffer_append_byte(buffer,
'}');
4208 case PM_NUMBERED_REFERENCE_READ_NODE: {
4209 pm_buffer_append_string(buffer,
"{\"type\":\"NumberedReferenceReadNode\",\"location\":", 47);
4212 pm_dump_json_location(buffer, &
cast->base.location);
4215 pm_buffer_append_byte(buffer,
',');
4216 pm_buffer_append_string(buffer,
"\"number\":", 9);
4217 pm_buffer_append_format(buffer,
"%" PRIu32,
cast->number);
4219 pm_buffer_append_byte(buffer,
'}');
4222 case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
4223 pm_buffer_append_string(buffer,
"{\"type\":\"OptionalKeywordParameterNode\",\"location\":", 50);
4226 pm_dump_json_location(buffer, &
cast->base.location);
4229 pm_buffer_append_byte(buffer,
',');
4230 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4232 pm_buffer_append_byte(buffer,
'[');
4233 if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
4234 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4235 pm_buffer_append_string(buffer,
"\"REPEATED_PARAMETER\"", 20);
4238 pm_buffer_append_byte(buffer,
']');
4241 pm_buffer_append_byte(buffer,
',');
4242 pm_buffer_append_string(buffer,
"\"name\":", 7);
4243 pm_dump_json_constant(buffer, parser,
cast->name);
4246 pm_buffer_append_byte(buffer,
',');
4247 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
4248 pm_dump_json_location(buffer, &
cast->name_loc);
4251 pm_buffer_append_byte(buffer,
',');
4252 pm_buffer_append_string(buffer,
"\"value\":", 8);
4253 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
4255 pm_buffer_append_byte(buffer,
'}');
4258 case PM_OPTIONAL_PARAMETER_NODE: {
4259 pm_buffer_append_string(buffer,
"{\"type\":\"OptionalParameterNode\",\"location\":", 43);
4262 pm_dump_json_location(buffer, &
cast->base.location);
4265 pm_buffer_append_byte(buffer,
',');
4266 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4268 pm_buffer_append_byte(buffer,
'[');
4269 if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
4270 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4271 pm_buffer_append_string(buffer,
"\"REPEATED_PARAMETER\"", 20);
4274 pm_buffer_append_byte(buffer,
']');
4277 pm_buffer_append_byte(buffer,
',');
4278 pm_buffer_append_string(buffer,
"\"name\":", 7);
4279 pm_dump_json_constant(buffer, parser,
cast->name);
4282 pm_buffer_append_byte(buffer,
',');
4283 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
4284 pm_dump_json_location(buffer, &
cast->name_loc);
4287 pm_buffer_append_byte(buffer,
',');
4288 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4289 pm_dump_json_location(buffer, &
cast->operator_loc);
4292 pm_buffer_append_byte(buffer,
',');
4293 pm_buffer_append_string(buffer,
"\"value\":", 8);
4294 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->value);
4296 pm_buffer_append_byte(buffer,
'}');
4300 pm_buffer_append_string(buffer,
"{\"type\":\"OrNode\",\"location\":", 28);
4303 pm_dump_json_location(buffer, &
cast->base.location);
4306 pm_buffer_append_byte(buffer,
',');
4307 pm_buffer_append_string(buffer,
"\"left\":", 7);
4308 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->left);
4311 pm_buffer_append_byte(buffer,
',');
4312 pm_buffer_append_string(buffer,
"\"right\":", 8);
4313 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->right);
4316 pm_buffer_append_byte(buffer,
',');
4317 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4318 pm_dump_json_location(buffer, &
cast->operator_loc);
4320 pm_buffer_append_byte(buffer,
'}');
4323 case PM_PARAMETERS_NODE: {
4324 pm_buffer_append_string(buffer,
"{\"type\":\"ParametersNode\",\"location\":", 36);
4327 pm_dump_json_location(buffer, &
cast->base.location);
4330 pm_buffer_append_byte(buffer,
',');
4331 pm_buffer_append_string(buffer,
"\"requireds\":", 12);
4333 pm_buffer_append_byte(buffer,
'[');
4335 for (
size_t index = 0; index < requireds->
size; index++) {
4336 if (index != 0) pm_buffer_append_byte(buffer,
',');
4337 pm_dump_json(buffer, parser, requireds->
nodes[index]);
4339 pm_buffer_append_byte(buffer,
']');
4342 pm_buffer_append_byte(buffer,
',');
4343 pm_buffer_append_string(buffer,
"\"optionals\":", 12);
4345 pm_buffer_append_byte(buffer,
'[');
4347 for (
size_t index = 0; index < optionals->
size; index++) {
4348 if (index != 0) pm_buffer_append_byte(buffer,
',');
4349 pm_dump_json(buffer, parser, optionals->
nodes[index]);
4351 pm_buffer_append_byte(buffer,
']');
4354 pm_buffer_append_byte(buffer,
',');
4355 pm_buffer_append_string(buffer,
"\"rest\":", 7);
4356 if (
cast->rest != NULL) {
4357 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->rest);
4359 pm_buffer_append_string(buffer,
"null", 4);
4363 pm_buffer_append_byte(buffer,
',');
4364 pm_buffer_append_string(buffer,
"\"posts\":", 8);
4366 pm_buffer_append_byte(buffer,
'[');
4368 for (
size_t index = 0; index < posts->
size; index++) {
4369 if (index != 0) pm_buffer_append_byte(buffer,
',');
4370 pm_dump_json(buffer, parser, posts->
nodes[index]);
4372 pm_buffer_append_byte(buffer,
']');
4375 pm_buffer_append_byte(buffer,
',');
4376 pm_buffer_append_string(buffer,
"\"keywords\":", 11);
4378 pm_buffer_append_byte(buffer,
'[');
4380 for (
size_t index = 0; index < keywords->
size; index++) {
4381 if (index != 0) pm_buffer_append_byte(buffer,
',');
4382 pm_dump_json(buffer, parser, keywords->
nodes[index]);
4384 pm_buffer_append_byte(buffer,
']');
4387 pm_buffer_append_byte(buffer,
',');
4388 pm_buffer_append_string(buffer,
"\"keyword_rest\":", 15);
4389 if (
cast->keyword_rest != NULL) {
4390 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->keyword_rest);
4392 pm_buffer_append_string(buffer,
"null", 4);
4396 pm_buffer_append_byte(buffer,
',');
4397 pm_buffer_append_string(buffer,
"\"block\":", 8);
4398 if (
cast->block != NULL) {
4399 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->block);
4401 pm_buffer_append_string(buffer,
"null", 4);
4404 pm_buffer_append_byte(buffer,
'}');
4407 case PM_PARENTHESES_NODE: {
4408 pm_buffer_append_string(buffer,
"{\"type\":\"ParenthesesNode\",\"location\":", 37);
4411 pm_dump_json_location(buffer, &
cast->base.location);
4414 pm_buffer_append_byte(buffer,
',');
4415 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4417 pm_buffer_append_byte(buffer,
'[');
4418 if (PM_NODE_FLAG_P(cast, PM_PARENTHESES_NODE_FLAGS_MULTIPLE_STATEMENTS)) {
4419 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4420 pm_buffer_append_string(buffer,
"\"MULTIPLE_STATEMENTS\"", 21);
4423 pm_buffer_append_byte(buffer,
']');
4426 pm_buffer_append_byte(buffer,
',');
4427 pm_buffer_append_string(buffer,
"\"body\":", 7);
4428 if (
cast->body != NULL) {
4429 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->body);
4431 pm_buffer_append_string(buffer,
"null", 4);
4435 pm_buffer_append_byte(buffer,
',');
4436 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
4437 pm_dump_json_location(buffer, &
cast->opening_loc);
4440 pm_buffer_append_byte(buffer,
',');
4441 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
4442 pm_dump_json_location(buffer, &
cast->closing_loc);
4444 pm_buffer_append_byte(buffer,
'}');
4447 case PM_PINNED_EXPRESSION_NODE: {
4448 pm_buffer_append_string(buffer,
"{\"type\":\"PinnedExpressionNode\",\"location\":", 42);
4451 pm_dump_json_location(buffer, &
cast->base.location);
4454 pm_buffer_append_byte(buffer,
',');
4455 pm_buffer_append_string(buffer,
"\"expression\":", 13);
4456 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->expression);
4459 pm_buffer_append_byte(buffer,
',');
4460 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4461 pm_dump_json_location(buffer, &
cast->operator_loc);
4464 pm_buffer_append_byte(buffer,
',');
4465 pm_buffer_append_string(buffer,
"\"lparen_loc\":", 13);
4466 pm_dump_json_location(buffer, &
cast->lparen_loc);
4469 pm_buffer_append_byte(buffer,
',');
4470 pm_buffer_append_string(buffer,
"\"rparen_loc\":", 13);
4471 pm_dump_json_location(buffer, &
cast->rparen_loc);
4473 pm_buffer_append_byte(buffer,
'}');
4476 case PM_PINNED_VARIABLE_NODE: {
4477 pm_buffer_append_string(buffer,
"{\"type\":\"PinnedVariableNode\",\"location\":", 40);
4480 pm_dump_json_location(buffer, &
cast->base.location);
4483 pm_buffer_append_byte(buffer,
',');
4484 pm_buffer_append_string(buffer,
"\"variable\":", 11);
4485 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->variable);
4488 pm_buffer_append_byte(buffer,
',');
4489 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4490 pm_dump_json_location(buffer, &
cast->operator_loc);
4492 pm_buffer_append_byte(buffer,
'}');
4495 case PM_POST_EXECUTION_NODE: {
4496 pm_buffer_append_string(buffer,
"{\"type\":\"PostExecutionNode\",\"location\":", 39);
4499 pm_dump_json_location(buffer, &
cast->base.location);
4502 pm_buffer_append_byte(buffer,
',');
4503 pm_buffer_append_string(buffer,
"\"statements\":", 13);
4504 if (
cast->statements != NULL) {
4505 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->statements);
4507 pm_buffer_append_string(buffer,
"null", 4);
4511 pm_buffer_append_byte(buffer,
',');
4512 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
4513 pm_dump_json_location(buffer, &
cast->keyword_loc);
4516 pm_buffer_append_byte(buffer,
',');
4517 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
4518 pm_dump_json_location(buffer, &
cast->opening_loc);
4521 pm_buffer_append_byte(buffer,
',');
4522 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
4523 pm_dump_json_location(buffer, &
cast->closing_loc);
4525 pm_buffer_append_byte(buffer,
'}');
4528 case PM_PRE_EXECUTION_NODE: {
4529 pm_buffer_append_string(buffer,
"{\"type\":\"PreExecutionNode\",\"location\":", 38);
4532 pm_dump_json_location(buffer, &
cast->base.location);
4535 pm_buffer_append_byte(buffer,
',');
4536 pm_buffer_append_string(buffer,
"\"statements\":", 13);
4537 if (
cast->statements != NULL) {
4538 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->statements);
4540 pm_buffer_append_string(buffer,
"null", 4);
4544 pm_buffer_append_byte(buffer,
',');
4545 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
4546 pm_dump_json_location(buffer, &
cast->keyword_loc);
4549 pm_buffer_append_byte(buffer,
',');
4550 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
4551 pm_dump_json_location(buffer, &
cast->opening_loc);
4554 pm_buffer_append_byte(buffer,
',');
4555 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
4556 pm_dump_json_location(buffer, &
cast->closing_loc);
4558 pm_buffer_append_byte(buffer,
'}');
4561 case PM_PROGRAM_NODE: {
4562 pm_buffer_append_string(buffer,
"{\"type\":\"ProgramNode\",\"location\":", 33);
4565 pm_dump_json_location(buffer, &
cast->base.location);
4568 pm_buffer_append_byte(buffer,
',');
4569 pm_buffer_append_string(buffer,
"\"locals\":", 9);
4571 pm_buffer_append_byte(buffer,
'[');
4573 for (
size_t index = 0; index < locals->
size; index++) {
4574 if (index != 0) pm_buffer_append_byte(buffer,
',');
4575 pm_dump_json_constant(buffer, parser, locals->
ids[index]);
4577 pm_buffer_append_byte(buffer,
']');
4580 pm_buffer_append_byte(buffer,
',');
4581 pm_buffer_append_string(buffer,
"\"statements\":", 13);
4582 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->statements);
4584 pm_buffer_append_byte(buffer,
'}');
4587 case PM_RANGE_NODE: {
4588 pm_buffer_append_string(buffer,
"{\"type\":\"RangeNode\",\"location\":", 31);
4591 pm_dump_json_location(buffer, &
cast->base.location);
4594 pm_buffer_append_byte(buffer,
',');
4595 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4597 pm_buffer_append_byte(buffer,
'[');
4598 if (PM_NODE_FLAG_P(cast, PM_RANGE_FLAGS_EXCLUDE_END)) {
4599 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4600 pm_buffer_append_string(buffer,
"\"EXCLUDE_END\"", 13);
4603 pm_buffer_append_byte(buffer,
']');
4606 pm_buffer_append_byte(buffer,
',');
4607 pm_buffer_append_string(buffer,
"\"left\":", 7);
4608 if (
cast->left != NULL) {
4609 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->left);
4611 pm_buffer_append_string(buffer,
"null", 4);
4615 pm_buffer_append_byte(buffer,
',');
4616 pm_buffer_append_string(buffer,
"\"right\":", 8);
4617 if (
cast->right != NULL) {
4618 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->right);
4620 pm_buffer_append_string(buffer,
"null", 4);
4624 pm_buffer_append_byte(buffer,
',');
4625 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4626 pm_dump_json_location(buffer, &
cast->operator_loc);
4628 pm_buffer_append_byte(buffer,
'}');
4631 case PM_RATIONAL_NODE: {
4632 pm_buffer_append_string(buffer,
"{\"type\":\"RationalNode\",\"location\":", 34);
4635 pm_dump_json_location(buffer, &
cast->base.location);
4638 pm_buffer_append_byte(buffer,
',');
4639 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4641 pm_buffer_append_byte(buffer,
'[');
4642 if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_BINARY)) {
4643 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4644 pm_buffer_append_string(buffer,
"\"BINARY\"", 8);
4647 if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_DECIMAL)) {
4648 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4649 pm_buffer_append_string(buffer,
"\"DECIMAL\"", 9);
4652 if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_OCTAL)) {
4653 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4654 pm_buffer_append_string(buffer,
"\"OCTAL\"", 7);
4657 if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_HEXADECIMAL)) {
4658 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4659 pm_buffer_append_string(buffer,
"\"HEXADECIMAL\"", 13);
4662 pm_buffer_append_byte(buffer,
']');
4665 pm_buffer_append_byte(buffer,
',');
4666 pm_buffer_append_string(buffer,
"\"numerator\":", 12);
4667 pm_integer_string(buffer, &
cast->numerator);
4670 pm_buffer_append_byte(buffer,
',');
4671 pm_buffer_append_string(buffer,
"\"denominator\":", 14);
4672 pm_integer_string(buffer, &
cast->denominator);
4674 pm_buffer_append_byte(buffer,
'}');
4677 case PM_REDO_NODE: {
4678 pm_buffer_append_string(buffer,
"{\"type\":\"RedoNode\",\"location\":", 30);
4681 pm_dump_json_location(buffer, &
cast->base.location);
4683 pm_buffer_append_byte(buffer,
'}');
4686 case PM_REGULAR_EXPRESSION_NODE: {
4687 pm_buffer_append_string(buffer,
"{\"type\":\"RegularExpressionNode\",\"location\":", 43);
4690 pm_dump_json_location(buffer, &
cast->base.location);
4693 pm_buffer_append_byte(buffer,
',');
4694 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4696 pm_buffer_append_byte(buffer,
'[');
4697 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
4698 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4699 pm_buffer_append_string(buffer,
"\"IGNORE_CASE\"", 13);
4702 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EXTENDED)) {
4703 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4704 pm_buffer_append_string(buffer,
"\"EXTENDED\"", 10);
4707 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE)) {
4708 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4709 pm_buffer_append_string(buffer,
"\"MULTI_LINE\"", 12);
4712 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ONCE)) {
4713 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4714 pm_buffer_append_string(buffer,
"\"ONCE\"", 6);
4717 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EUC_JP)) {
4718 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4719 pm_buffer_append_string(buffer,
"\"EUC_JP\"", 8);
4722 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT)) {
4723 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4724 pm_buffer_append_string(buffer,
"\"ASCII_8BIT\"", 12);
4727 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J)) {
4728 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4729 pm_buffer_append_string(buffer,
"\"WINDOWS_31J\"", 13);
4732 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_UTF_8)) {
4733 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4734 pm_buffer_append_string(buffer,
"\"UTF_8\"", 7);
4737 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING)) {
4738 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4739 pm_buffer_append_string(buffer,
"\"FORCED_UTF8_ENCODING\"", 22);
4742 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING)) {
4743 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4744 pm_buffer_append_string(buffer,
"\"FORCED_BINARY_ENCODING\"", 24);
4747 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING)) {
4748 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4749 pm_buffer_append_string(buffer,
"\"FORCED_US_ASCII_ENCODING\"", 26);
4752 pm_buffer_append_byte(buffer,
']');
4755 pm_buffer_append_byte(buffer,
',');
4756 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
4757 pm_dump_json_location(buffer, &
cast->opening_loc);
4760 pm_buffer_append_byte(buffer,
',');
4761 pm_buffer_append_string(buffer,
"\"content_loc\":", 14);
4762 pm_dump_json_location(buffer, &
cast->content_loc);
4765 pm_buffer_append_byte(buffer,
',');
4766 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
4767 pm_dump_json_location(buffer, &
cast->closing_loc);
4770 pm_buffer_append_byte(buffer,
',');
4771 pm_buffer_append_string(buffer,
"\"unescaped\":", 12);
4773 pm_buffer_append_byte(buffer,
'"');
4774 pm_buffer_append_source(buffer, pm_string_source(unescaped), pm_string_length(unescaped), PM_BUFFER_ESCAPING_JSON);
4775 pm_buffer_append_byte(buffer,
'"');
4777 pm_buffer_append_byte(buffer,
'}');
4780 case PM_REQUIRED_KEYWORD_PARAMETER_NODE: {
4781 pm_buffer_append_string(buffer,
"{\"type\":\"RequiredKeywordParameterNode\",\"location\":", 50);
4784 pm_dump_json_location(buffer, &
cast->base.location);
4787 pm_buffer_append_byte(buffer,
',');
4788 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4790 pm_buffer_append_byte(buffer,
'[');
4791 if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
4792 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4793 pm_buffer_append_string(buffer,
"\"REPEATED_PARAMETER\"", 20);
4796 pm_buffer_append_byte(buffer,
']');
4799 pm_buffer_append_byte(buffer,
',');
4800 pm_buffer_append_string(buffer,
"\"name\":", 7);
4801 pm_dump_json_constant(buffer, parser,
cast->name);
4804 pm_buffer_append_byte(buffer,
',');
4805 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
4806 pm_dump_json_location(buffer, &
cast->name_loc);
4808 pm_buffer_append_byte(buffer,
'}');
4811 case PM_REQUIRED_PARAMETER_NODE: {
4812 pm_buffer_append_string(buffer,
"{\"type\":\"RequiredParameterNode\",\"location\":", 43);
4815 pm_dump_json_location(buffer, &
cast->base.location);
4818 pm_buffer_append_byte(buffer,
',');
4819 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4821 pm_buffer_append_byte(buffer,
'[');
4822 if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
4823 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4824 pm_buffer_append_string(buffer,
"\"REPEATED_PARAMETER\"", 20);
4827 pm_buffer_append_byte(buffer,
']');
4830 pm_buffer_append_byte(buffer,
',');
4831 pm_buffer_append_string(buffer,
"\"name\":", 7);
4832 pm_dump_json_constant(buffer, parser,
cast->name);
4834 pm_buffer_append_byte(buffer,
'}');
4837 case PM_RESCUE_MODIFIER_NODE: {
4838 pm_buffer_append_string(buffer,
"{\"type\":\"RescueModifierNode\",\"location\":", 40);
4841 pm_dump_json_location(buffer, &
cast->base.location);
4844 pm_buffer_append_byte(buffer,
',');
4845 pm_buffer_append_string(buffer,
"\"expression\":", 13);
4846 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->expression);
4849 pm_buffer_append_byte(buffer,
',');
4850 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
4851 pm_dump_json_location(buffer, &
cast->keyword_loc);
4854 pm_buffer_append_byte(buffer,
',');
4855 pm_buffer_append_string(buffer,
"\"rescue_expression\":", 20);
4856 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->rescue_expression);
4858 pm_buffer_append_byte(buffer,
'}');
4861 case PM_RESCUE_NODE: {
4862 pm_buffer_append_string(buffer,
"{\"type\":\"RescueNode\",\"location\":", 32);
4865 pm_dump_json_location(buffer, &
cast->base.location);
4868 pm_buffer_append_byte(buffer,
',');
4869 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
4870 pm_dump_json_location(buffer, &
cast->keyword_loc);
4873 pm_buffer_append_byte(buffer,
',');
4874 pm_buffer_append_string(buffer,
"\"exceptions\":", 13);
4876 pm_buffer_append_byte(buffer,
'[');
4878 for (
size_t index = 0; index < exceptions->
size; index++) {
4879 if (index != 0) pm_buffer_append_byte(buffer,
',');
4880 pm_dump_json(buffer, parser, exceptions->
nodes[index]);
4882 pm_buffer_append_byte(buffer,
']');
4885 pm_buffer_append_byte(buffer,
',');
4886 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4887 if (
cast->operator_loc.length != 0) {
4888 pm_dump_json_location(buffer, &
cast->operator_loc);
4890 pm_buffer_append_string(buffer,
"null", 4);
4894 pm_buffer_append_byte(buffer,
',');
4895 pm_buffer_append_string(buffer,
"\"reference\":", 12);
4896 if (
cast->reference != NULL) {
4897 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->reference);
4899 pm_buffer_append_string(buffer,
"null", 4);
4903 pm_buffer_append_byte(buffer,
',');
4904 pm_buffer_append_string(buffer,
"\"then_keyword_loc\":", 19);
4905 if (
cast->then_keyword_loc.length != 0) {
4906 pm_dump_json_location(buffer, &
cast->then_keyword_loc);
4908 pm_buffer_append_string(buffer,
"null", 4);
4912 pm_buffer_append_byte(buffer,
',');
4913 pm_buffer_append_string(buffer,
"\"statements\":", 13);
4914 if (
cast->statements != NULL) {
4915 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->statements);
4917 pm_buffer_append_string(buffer,
"null", 4);
4921 pm_buffer_append_byte(buffer,
',');
4922 pm_buffer_append_string(buffer,
"\"subsequent\":", 13);
4923 if (
cast->subsequent != NULL) {
4924 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->subsequent);
4926 pm_buffer_append_string(buffer,
"null", 4);
4929 pm_buffer_append_byte(buffer,
'}');
4932 case PM_REST_PARAMETER_NODE: {
4933 pm_buffer_append_string(buffer,
"{\"type\":\"RestParameterNode\",\"location\":", 39);
4936 pm_dump_json_location(buffer, &
cast->base.location);
4939 pm_buffer_append_byte(buffer,
',');
4940 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4942 pm_buffer_append_byte(buffer,
'[');
4943 if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
4944 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4945 pm_buffer_append_string(buffer,
"\"REPEATED_PARAMETER\"", 20);
4948 pm_buffer_append_byte(buffer,
']');
4951 pm_buffer_append_byte(buffer,
',');
4952 pm_buffer_append_string(buffer,
"\"name\":", 7);
4953 if (
cast->name != PM_CONSTANT_ID_UNSET) {
4954 pm_dump_json_constant(buffer, parser,
cast->name);
4956 pm_buffer_append_string(buffer,
"null", 4);
4960 pm_buffer_append_byte(buffer,
',');
4961 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
4962 if (
cast->name_loc.length != 0) {
4963 pm_dump_json_location(buffer, &
cast->name_loc);
4965 pm_buffer_append_string(buffer,
"null", 4);
4969 pm_buffer_append_byte(buffer,
',');
4970 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4971 pm_dump_json_location(buffer, &
cast->operator_loc);
4973 pm_buffer_append_byte(buffer,
'}');
4976 case PM_RETRY_NODE: {
4977 pm_buffer_append_string(buffer,
"{\"type\":\"RetryNode\",\"location\":", 31);
4980 pm_dump_json_location(buffer, &
cast->base.location);
4982 pm_buffer_append_byte(buffer,
'}');
4985 case PM_RETURN_NODE: {
4986 pm_buffer_append_string(buffer,
"{\"type\":\"ReturnNode\",\"location\":", 32);
4989 pm_dump_json_location(buffer, &
cast->base.location);
4992 pm_buffer_append_byte(buffer,
',');
4993 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
4994 pm_dump_json_location(buffer, &
cast->keyword_loc);
4997 pm_buffer_append_byte(buffer,
',');
4998 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
4999 if (
cast->arguments != NULL) {
5000 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->arguments);
5002 pm_buffer_append_string(buffer,
"null", 4);
5005 pm_buffer_append_byte(buffer,
'}');
5008 case PM_SELF_NODE: {
5009 pm_buffer_append_string(buffer,
"{\"type\":\"SelfNode\",\"location\":", 30);
5012 pm_dump_json_location(buffer, &
cast->base.location);
5014 pm_buffer_append_byte(buffer,
'}');
5017 case PM_SHAREABLE_CONSTANT_NODE: {
5018 pm_buffer_append_string(buffer,
"{\"type\":\"ShareableConstantNode\",\"location\":", 43);
5021 pm_dump_json_location(buffer, &
cast->base.location);
5024 pm_buffer_append_byte(buffer,
',');
5025 pm_buffer_append_string(buffer,
"\"flags\":", 8);
5027 pm_buffer_append_byte(buffer,
'[');
5028 if (PM_NODE_FLAG_P(cast, PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL)) {
5029 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5030 pm_buffer_append_string(buffer,
"\"LITERAL\"", 9);
5033 if (PM_NODE_FLAG_P(cast, PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_EVERYTHING)) {
5034 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5035 pm_buffer_append_string(buffer,
"\"EXPERIMENTAL_EVERYTHING\"", 25);
5038 if (PM_NODE_FLAG_P(cast, PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_COPY)) {
5039 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5040 pm_buffer_append_string(buffer,
"\"EXPERIMENTAL_COPY\"", 19);
5043 pm_buffer_append_byte(buffer,
']');
5046 pm_buffer_append_byte(buffer,
',');
5047 pm_buffer_append_string(buffer,
"\"write\":", 8);
5048 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->write);
5050 pm_buffer_append_byte(buffer,
'}');
5053 case PM_SINGLETON_CLASS_NODE: {
5054 pm_buffer_append_string(buffer,
"{\"type\":\"SingletonClassNode\",\"location\":", 40);
5057 pm_dump_json_location(buffer, &
cast->base.location);
5060 pm_buffer_append_byte(buffer,
',');
5061 pm_buffer_append_string(buffer,
"\"locals\":", 9);
5063 pm_buffer_append_byte(buffer,
'[');
5065 for (
size_t index = 0; index < locals->
size; index++) {
5066 if (index != 0) pm_buffer_append_byte(buffer,
',');
5067 pm_dump_json_constant(buffer, parser, locals->
ids[index]);
5069 pm_buffer_append_byte(buffer,
']');
5072 pm_buffer_append_byte(buffer,
',');
5073 pm_buffer_append_string(buffer,
"\"class_keyword_loc\":", 20);
5074 pm_dump_json_location(buffer, &
cast->class_keyword_loc);
5077 pm_buffer_append_byte(buffer,
',');
5078 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
5079 pm_dump_json_location(buffer, &
cast->operator_loc);
5082 pm_buffer_append_byte(buffer,
',');
5083 pm_buffer_append_string(buffer,
"\"expression\":", 13);
5084 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->expression);
5087 pm_buffer_append_byte(buffer,
',');
5088 pm_buffer_append_string(buffer,
"\"body\":", 7);
5089 if (
cast->body != NULL) {
5090 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->body);
5092 pm_buffer_append_string(buffer,
"null", 4);
5096 pm_buffer_append_byte(buffer,
',');
5097 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
5098 pm_dump_json_location(buffer, &
cast->end_keyword_loc);
5100 pm_buffer_append_byte(buffer,
'}');
5103 case PM_SOURCE_ENCODING_NODE: {
5104 pm_buffer_append_string(buffer,
"{\"type\":\"SourceEncodingNode\",\"location\":", 40);
5107 pm_dump_json_location(buffer, &
cast->base.location);
5109 pm_buffer_append_byte(buffer,
'}');
5112 case PM_SOURCE_FILE_NODE: {
5113 pm_buffer_append_string(buffer,
"{\"type\":\"SourceFileNode\",\"location\":", 36);
5116 pm_dump_json_location(buffer, &
cast->base.location);
5119 pm_buffer_append_byte(buffer,
',');
5120 pm_buffer_append_string(buffer,
"\"flags\":", 8);
5122 pm_buffer_append_byte(buffer,
'[');
5123 if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FORCED_UTF8_ENCODING)) {
5124 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5125 pm_buffer_append_string(buffer,
"\"FORCED_UTF8_ENCODING\"", 22);
5128 if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FORCED_BINARY_ENCODING)) {
5129 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5130 pm_buffer_append_string(buffer,
"\"FORCED_BINARY_ENCODING\"", 24);
5133 if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FROZEN)) {
5134 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5135 pm_buffer_append_string(buffer,
"\"FROZEN\"", 8);
5138 if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_MUTABLE)) {
5139 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5140 pm_buffer_append_string(buffer,
"\"MUTABLE\"", 9);
5143 pm_buffer_append_byte(buffer,
']');
5146 pm_buffer_append_byte(buffer,
',');
5147 pm_buffer_append_string(buffer,
"\"filepath\":", 11);
5149 pm_buffer_append_byte(buffer,
'"');
5150 pm_buffer_append_source(buffer, pm_string_source(filepath), pm_string_length(filepath), PM_BUFFER_ESCAPING_JSON);
5151 pm_buffer_append_byte(buffer,
'"');
5153 pm_buffer_append_byte(buffer,
'}');
5156 case PM_SOURCE_LINE_NODE: {
5157 pm_buffer_append_string(buffer,
"{\"type\":\"SourceLineNode\",\"location\":", 36);
5160 pm_dump_json_location(buffer, &
cast->base.location);
5162 pm_buffer_append_byte(buffer,
'}');
5165 case PM_SPLAT_NODE: {
5166 pm_buffer_append_string(buffer,
"{\"type\":\"SplatNode\",\"location\":", 31);
5169 pm_dump_json_location(buffer, &
cast->base.location);
5172 pm_buffer_append_byte(buffer,
',');
5173 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
5174 pm_dump_json_location(buffer, &
cast->operator_loc);
5177 pm_buffer_append_byte(buffer,
',');
5178 pm_buffer_append_string(buffer,
"\"expression\":", 13);
5179 if (
cast->expression != NULL) {
5180 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->expression);
5182 pm_buffer_append_string(buffer,
"null", 4);
5185 pm_buffer_append_byte(buffer,
'}');
5188 case PM_STATEMENTS_NODE: {
5189 pm_buffer_append_string(buffer,
"{\"type\":\"StatementsNode\",\"location\":", 36);
5192 pm_dump_json_location(buffer, &
cast->base.location);
5195 pm_buffer_append_byte(buffer,
',');
5196 pm_buffer_append_string(buffer,
"\"body\":", 7);
5198 pm_buffer_append_byte(buffer,
'[');
5200 for (
size_t index = 0; index < body->
size; index++) {
5201 if (index != 0) pm_buffer_append_byte(buffer,
',');
5202 pm_dump_json(buffer, parser, body->
nodes[index]);
5204 pm_buffer_append_byte(buffer,
']');
5206 pm_buffer_append_byte(buffer,
'}');
5209 case PM_STRING_NODE: {
5210 pm_buffer_append_string(buffer,
"{\"type\":\"StringNode\",\"location\":", 32);
5213 pm_dump_json_location(buffer, &
cast->base.location);
5216 pm_buffer_append_byte(buffer,
',');
5217 pm_buffer_append_string(buffer,
"\"flags\":", 8);
5219 pm_buffer_append_byte(buffer,
'[');
5220 if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FORCED_UTF8_ENCODING)) {
5221 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5222 pm_buffer_append_string(buffer,
"\"FORCED_UTF8_ENCODING\"", 22);
5225 if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FORCED_BINARY_ENCODING)) {
5226 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5227 pm_buffer_append_string(buffer,
"\"FORCED_BINARY_ENCODING\"", 24);
5230 if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FROZEN)) {
5231 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5232 pm_buffer_append_string(buffer,
"\"FROZEN\"", 8);
5235 if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_MUTABLE)) {
5236 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5237 pm_buffer_append_string(buffer,
"\"MUTABLE\"", 9);
5240 pm_buffer_append_byte(buffer,
']');
5243 pm_buffer_append_byte(buffer,
',');
5244 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
5245 if (
cast->opening_loc.length != 0) {
5246 pm_dump_json_location(buffer, &
cast->opening_loc);
5248 pm_buffer_append_string(buffer,
"null", 4);
5252 pm_buffer_append_byte(buffer,
',');
5253 pm_buffer_append_string(buffer,
"\"content_loc\":", 14);
5254 pm_dump_json_location(buffer, &
cast->content_loc);
5257 pm_buffer_append_byte(buffer,
',');
5258 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
5259 if (
cast->closing_loc.length != 0) {
5260 pm_dump_json_location(buffer, &
cast->closing_loc);
5262 pm_buffer_append_string(buffer,
"null", 4);
5266 pm_buffer_append_byte(buffer,
',');
5267 pm_buffer_append_string(buffer,
"\"unescaped\":", 12);
5269 pm_buffer_append_byte(buffer,
'"');
5270 pm_buffer_append_source(buffer, pm_string_source(unescaped), pm_string_length(unescaped), PM_BUFFER_ESCAPING_JSON);
5271 pm_buffer_append_byte(buffer,
'"');
5273 pm_buffer_append_byte(buffer,
'}');
5276 case PM_SUPER_NODE: {
5277 pm_buffer_append_string(buffer,
"{\"type\":\"SuperNode\",\"location\":", 31);
5280 pm_dump_json_location(buffer, &
cast->base.location);
5283 pm_buffer_append_byte(buffer,
',');
5284 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
5285 pm_dump_json_location(buffer, &
cast->keyword_loc);
5288 pm_buffer_append_byte(buffer,
',');
5289 pm_buffer_append_string(buffer,
"\"lparen_loc\":", 13);
5290 if (
cast->lparen_loc.length != 0) {
5291 pm_dump_json_location(buffer, &
cast->lparen_loc);
5293 pm_buffer_append_string(buffer,
"null", 4);
5297 pm_buffer_append_byte(buffer,
',');
5298 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
5299 if (
cast->arguments != NULL) {
5300 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->arguments);
5302 pm_buffer_append_string(buffer,
"null", 4);
5306 pm_buffer_append_byte(buffer,
',');
5307 pm_buffer_append_string(buffer,
"\"rparen_loc\":", 13);
5308 if (
cast->rparen_loc.length != 0) {
5309 pm_dump_json_location(buffer, &
cast->rparen_loc);
5311 pm_buffer_append_string(buffer,
"null", 4);
5315 pm_buffer_append_byte(buffer,
',');
5316 pm_buffer_append_string(buffer,
"\"block\":", 8);
5317 if (
cast->block != NULL) {
5318 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->block);
5320 pm_buffer_append_string(buffer,
"null", 4);
5323 pm_buffer_append_byte(buffer,
'}');
5326 case PM_SYMBOL_NODE: {
5327 pm_buffer_append_string(buffer,
"{\"type\":\"SymbolNode\",\"location\":", 32);
5330 pm_dump_json_location(buffer, &
cast->base.location);
5333 pm_buffer_append_byte(buffer,
',');
5334 pm_buffer_append_string(buffer,
"\"flags\":", 8);
5336 pm_buffer_append_byte(buffer,
'[');
5337 if (PM_NODE_FLAG_P(cast, PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING)) {
5338 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5339 pm_buffer_append_string(buffer,
"\"FORCED_UTF8_ENCODING\"", 22);
5342 if (PM_NODE_FLAG_P(cast, PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING)) {
5343 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5344 pm_buffer_append_string(buffer,
"\"FORCED_BINARY_ENCODING\"", 24);
5347 if (PM_NODE_FLAG_P(cast, PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING)) {
5348 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5349 pm_buffer_append_string(buffer,
"\"FORCED_US_ASCII_ENCODING\"", 26);
5352 pm_buffer_append_byte(buffer,
']');
5355 pm_buffer_append_byte(buffer,
',');
5356 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
5357 if (
cast->opening_loc.length != 0) {
5358 pm_dump_json_location(buffer, &
cast->opening_loc);
5360 pm_buffer_append_string(buffer,
"null", 4);
5364 pm_buffer_append_byte(buffer,
',');
5365 pm_buffer_append_string(buffer,
"\"content_loc\":", 14);
5366 pm_dump_json_location(buffer, &
cast->content_loc);
5369 pm_buffer_append_byte(buffer,
',');
5370 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
5371 if (
cast->closing_loc.length != 0) {
5372 pm_dump_json_location(buffer, &
cast->closing_loc);
5374 pm_buffer_append_string(buffer,
"null", 4);
5378 pm_buffer_append_byte(buffer,
',');
5379 pm_buffer_append_string(buffer,
"\"unescaped\":", 12);
5381 pm_buffer_append_byte(buffer,
'"');
5382 pm_buffer_append_source(buffer, pm_string_source(unescaped), pm_string_length(unescaped), PM_BUFFER_ESCAPING_JSON);
5383 pm_buffer_append_byte(buffer,
'"');
5385 pm_buffer_append_byte(buffer,
'}');
5388 case PM_TRUE_NODE: {
5389 pm_buffer_append_string(buffer,
"{\"type\":\"TrueNode\",\"location\":", 30);
5392 pm_dump_json_location(buffer, &
cast->base.location);
5394 pm_buffer_append_byte(buffer,
'}');
5397 case PM_UNDEF_NODE: {
5398 pm_buffer_append_string(buffer,
"{\"type\":\"UndefNode\",\"location\":", 31);
5401 pm_dump_json_location(buffer, &
cast->base.location);
5404 pm_buffer_append_byte(buffer,
',');
5405 pm_buffer_append_string(buffer,
"\"names\":", 8);
5407 pm_buffer_append_byte(buffer,
'[');
5409 for (
size_t index = 0; index < names->
size; index++) {
5410 if (index != 0) pm_buffer_append_byte(buffer,
',');
5411 pm_dump_json(buffer, parser, names->
nodes[index]);
5413 pm_buffer_append_byte(buffer,
']');
5416 pm_buffer_append_byte(buffer,
',');
5417 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
5418 pm_dump_json_location(buffer, &
cast->keyword_loc);
5420 pm_buffer_append_byte(buffer,
'}');
5423 case PM_UNLESS_NODE: {
5424 pm_buffer_append_string(buffer,
"{\"type\":\"UnlessNode\",\"location\":", 32);
5427 pm_dump_json_location(buffer, &
cast->base.location);
5430 pm_buffer_append_byte(buffer,
',');
5431 pm_buffer_append_string(buffer,
"\"unless_keyword_loc\":", 21);
5432 pm_dump_json_location(buffer, &
cast->unless_keyword_loc);
5435 pm_buffer_append_byte(buffer,
',');
5436 pm_buffer_append_string(buffer,
"\"predicate\":", 12);
5437 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->predicate);
5440 pm_buffer_append_byte(buffer,
',');
5441 pm_buffer_append_string(buffer,
"\"then_keyword_loc\":", 19);
5442 if (
cast->then_keyword_loc.length != 0) {
5443 pm_dump_json_location(buffer, &
cast->then_keyword_loc);
5445 pm_buffer_append_string(buffer,
"null", 4);
5449 pm_buffer_append_byte(buffer,
',');
5450 pm_buffer_append_string(buffer,
"\"statements\":", 13);
5451 if (
cast->statements != NULL) {
5452 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->statements);
5454 pm_buffer_append_string(buffer,
"null", 4);
5458 pm_buffer_append_byte(buffer,
',');
5459 pm_buffer_append_string(buffer,
"\"else_clause\":", 14);
5460 if (
cast->else_clause != NULL) {
5461 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->else_clause);
5463 pm_buffer_append_string(buffer,
"null", 4);
5467 pm_buffer_append_byte(buffer,
',');
5468 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
5469 if (
cast->end_keyword_loc.length != 0) {
5470 pm_dump_json_location(buffer, &
cast->end_keyword_loc);
5472 pm_buffer_append_string(buffer,
"null", 4);
5475 pm_buffer_append_byte(buffer,
'}');
5478 case PM_UNTIL_NODE: {
5479 pm_buffer_append_string(buffer,
"{\"type\":\"UntilNode\",\"location\":", 31);
5482 pm_dump_json_location(buffer, &
cast->base.location);
5485 pm_buffer_append_byte(buffer,
',');
5486 pm_buffer_append_string(buffer,
"\"flags\":", 8);
5488 pm_buffer_append_byte(buffer,
'[');
5489 if (PM_NODE_FLAG_P(cast, PM_LOOP_FLAGS_BEGIN_MODIFIER)) {
5490 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5491 pm_buffer_append_string(buffer,
"\"BEGIN_MODIFIER\"", 16);
5494 pm_buffer_append_byte(buffer,
']');
5497 pm_buffer_append_byte(buffer,
',');
5498 pm_buffer_append_string(buffer,
"\"until_keyword_loc\":", 20);
5499 pm_dump_json_location(buffer, &
cast->until_keyword_loc);
5502 pm_buffer_append_byte(buffer,
',');
5503 pm_buffer_append_string(buffer,
"\"do_keyword_loc\":", 17);
5504 if (
cast->do_keyword_loc.length != 0) {
5505 pm_dump_json_location(buffer, &
cast->do_keyword_loc);
5507 pm_buffer_append_string(buffer,
"null", 4);
5511 pm_buffer_append_byte(buffer,
',');
5512 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
5513 if (
cast->end_keyword_loc.length != 0) {
5514 pm_dump_json_location(buffer, &
cast->end_keyword_loc);
5516 pm_buffer_append_string(buffer,
"null", 4);
5520 pm_buffer_append_byte(buffer,
',');
5521 pm_buffer_append_string(buffer,
"\"predicate\":", 12);
5522 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->predicate);
5525 pm_buffer_append_byte(buffer,
',');
5526 pm_buffer_append_string(buffer,
"\"statements\":", 13);
5527 if (
cast->statements != NULL) {
5528 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->statements);
5530 pm_buffer_append_string(buffer,
"null", 4);
5533 pm_buffer_append_byte(buffer,
'}');
5536 case PM_WHEN_NODE: {
5537 pm_buffer_append_string(buffer,
"{\"type\":\"WhenNode\",\"location\":", 30);
5540 pm_dump_json_location(buffer, &
cast->base.location);
5543 pm_buffer_append_byte(buffer,
',');
5544 pm_buffer_append_string(buffer,
"\"when_keyword_loc\":", 19);
5545 pm_dump_json_location(buffer, &
cast->when_keyword_loc);
5548 pm_buffer_append_byte(buffer,
',');
5549 pm_buffer_append_string(buffer,
"\"conditions\":", 13);
5551 pm_buffer_append_byte(buffer,
'[');
5553 for (
size_t index = 0; index < conditions->
size; index++) {
5554 if (index != 0) pm_buffer_append_byte(buffer,
',');
5555 pm_dump_json(buffer, parser, conditions->
nodes[index]);
5557 pm_buffer_append_byte(buffer,
']');
5560 pm_buffer_append_byte(buffer,
',');
5561 pm_buffer_append_string(buffer,
"\"then_keyword_loc\":", 19);
5562 if (
cast->then_keyword_loc.length != 0) {
5563 pm_dump_json_location(buffer, &
cast->then_keyword_loc);
5565 pm_buffer_append_string(buffer,
"null", 4);
5569 pm_buffer_append_byte(buffer,
',');
5570 pm_buffer_append_string(buffer,
"\"statements\":", 13);
5571 if (
cast->statements != NULL) {
5572 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->statements);
5574 pm_buffer_append_string(buffer,
"null", 4);
5577 pm_buffer_append_byte(buffer,
'}');
5580 case PM_WHILE_NODE: {
5581 pm_buffer_append_string(buffer,
"{\"type\":\"WhileNode\",\"location\":", 31);
5584 pm_dump_json_location(buffer, &
cast->base.location);
5587 pm_buffer_append_byte(buffer,
',');
5588 pm_buffer_append_string(buffer,
"\"flags\":", 8);
5590 pm_buffer_append_byte(buffer,
'[');
5591 if (PM_NODE_FLAG_P(cast, PM_LOOP_FLAGS_BEGIN_MODIFIER)) {
5592 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5593 pm_buffer_append_string(buffer,
"\"BEGIN_MODIFIER\"", 16);
5596 pm_buffer_append_byte(buffer,
']');
5599 pm_buffer_append_byte(buffer,
',');
5600 pm_buffer_append_string(buffer,
"\"while_keyword_loc\":", 20);
5601 pm_dump_json_location(buffer, &
cast->while_keyword_loc);
5604 pm_buffer_append_byte(buffer,
',');
5605 pm_buffer_append_string(buffer,
"\"do_keyword_loc\":", 17);
5606 if (
cast->do_keyword_loc.length != 0) {
5607 pm_dump_json_location(buffer, &
cast->do_keyword_loc);
5609 pm_buffer_append_string(buffer,
"null", 4);
5613 pm_buffer_append_byte(buffer,
',');
5614 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
5615 if (
cast->end_keyword_loc.length != 0) {
5616 pm_dump_json_location(buffer, &
cast->end_keyword_loc);
5618 pm_buffer_append_string(buffer,
"null", 4);
5622 pm_buffer_append_byte(buffer,
',');
5623 pm_buffer_append_string(buffer,
"\"predicate\":", 12);
5624 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->predicate);
5627 pm_buffer_append_byte(buffer,
',');
5628 pm_buffer_append_string(buffer,
"\"statements\":", 13);
5629 if (
cast->statements != NULL) {
5630 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->statements);
5632 pm_buffer_append_string(buffer,
"null", 4);
5635 pm_buffer_append_byte(buffer,
'}');
5638 case PM_X_STRING_NODE: {
5639 pm_buffer_append_string(buffer,
"{\"type\":\"XStringNode\",\"location\":", 33);
5642 pm_dump_json_location(buffer, &
cast->base.location);
5645 pm_buffer_append_byte(buffer,
',');
5646 pm_buffer_append_string(buffer,
"\"flags\":", 8);
5648 pm_buffer_append_byte(buffer,
'[');
5649 if (PM_NODE_FLAG_P(cast, PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING)) {
5650 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5651 pm_buffer_append_string(buffer,
"\"FORCED_UTF8_ENCODING\"", 22);
5654 if (PM_NODE_FLAG_P(cast, PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING)) {
5655 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5656 pm_buffer_append_string(buffer,
"\"FORCED_BINARY_ENCODING\"", 24);
5659 pm_buffer_append_byte(buffer,
']');
5662 pm_buffer_append_byte(buffer,
',');
5663 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
5664 pm_dump_json_location(buffer, &
cast->opening_loc);
5667 pm_buffer_append_byte(buffer,
',');
5668 pm_buffer_append_string(buffer,
"\"content_loc\":", 14);
5669 pm_dump_json_location(buffer, &
cast->content_loc);
5672 pm_buffer_append_byte(buffer,
',');
5673 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
5674 pm_dump_json_location(buffer, &
cast->closing_loc);
5677 pm_buffer_append_byte(buffer,
',');
5678 pm_buffer_append_string(buffer,
"\"unescaped\":", 12);
5680 pm_buffer_append_byte(buffer,
'"');
5681 pm_buffer_append_source(buffer, pm_string_source(unescaped), pm_string_length(unescaped), PM_BUFFER_ESCAPING_JSON);
5682 pm_buffer_append_byte(buffer,
'"');
5684 pm_buffer_append_byte(buffer,
'}');
5687 case PM_YIELD_NODE: {
5688 pm_buffer_append_string(buffer,
"{\"type\":\"YieldNode\",\"location\":", 31);
5691 pm_dump_json_location(buffer, &
cast->base.location);
5694 pm_buffer_append_byte(buffer,
',');
5695 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
5696 pm_dump_json_location(buffer, &
cast->keyword_loc);
5699 pm_buffer_append_byte(buffer,
',');
5700 pm_buffer_append_string(buffer,
"\"lparen_loc\":", 13);
5701 if (
cast->lparen_loc.length != 0) {
5702 pm_dump_json_location(buffer, &
cast->lparen_loc);
5704 pm_buffer_append_string(buffer,
"null", 4);
5708 pm_buffer_append_byte(buffer,
',');
5709 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
5710 if (
cast->arguments != NULL) {
5711 pm_dump_json(buffer, parser, (
const pm_node_t *)
cast->arguments);
5713 pm_buffer_append_string(buffer,
"null", 4);
5717 pm_buffer_append_byte(buffer,
',');
5718 pm_buffer_append_string(buffer,
"\"rparen_loc\":", 13);
5719 if (
cast->rparen_loc.length != 0) {
5720 pm_dump_json_location(buffer, &
cast->rparen_loc);
5722 pm_buffer_append_string(buffer,
"null", 4);
5725 pm_buffer_append_byte(buffer,
'}');
uint32_t pm_constant_id_t
A constant id is a unique identifier for a constant in the constant pool.
T * cast(pm_node_t *node) noexcept
Cast the given node, which must not be null and must be of the given struct, to that struct.
std::string_view constant(const pm_parser_t *parser PRISM_LIFETIMEBOUND, pm_constant_id_t constant_id) noexcept
The name of the constant with the given id, which must not be zero.
ClassVariableAndWriteNode.
ClassVariableOperatorWriteNode.
ClassVariableOrWriteNode.
size_t size
The number of constant ids in the list.
pm_constant_id_t * ids
The constant ids in the list.
ConstantOperatorWriteNode.
ConstantPathAndWriteNode.
ConstantPathOperatorWriteNode.
GlobalVariableAndWriteNode.
GlobalVariableOperatorWriteNode.
GlobalVariableOrWriteNode.
GlobalVariableTargetNode.
InstanceVariableAndWriteNode.
InstanceVariableOperatorWriteNode.
InstanceVariableOrWriteNode.
InstanceVariableReadNode.
InstanceVariableTargetNode.
InstanceVariableWriteNode.
InterpolatedMatchLastLineNode.
InterpolatedRegularExpressionNode.
KeywordRestParameterNode.
LocalVariableAndWriteNode.
LocalVariableOperatorWriteNode.
LocalVariableOrWriteNode.
This struct represents a slice in the source code, defined by an offset and a length.
uint32_t start
The offset of the location from the start of the source.
uint32_t length
The length of the location.
A list of nodes in the source, most often used for lists of children.
size_t size
The number of nodes in the list.
struct pm_node ** nodes
The nodes in the list.
This is the base structure that represents a node in the syntax tree.
NumberedReferenceReadNode.
OptionalKeywordParameterNode.
RequiredKeywordParameterNode.
A view of a sequence of bytes.