14#ifdef PRISM_EXCLUDE_PRETTYPRINT
18typedef int pm_prettyprint_unused_t;
23#include "prism/internal/buffer.h"
24#include "prism/internal/constant_pool.h"
25#include "prism/internal/integer.h"
26#include "prism/internal/parser.h"
33 pm_line_column_t start = pm_line_offset_list_line_column(&parser->line_offsets, location->
start, parser->start_line);
34 pm_line_column_t end = pm_line_offset_list_line_column(&parser->line_offsets, location->
start + location->
length, parser->start_line);
35 pm_buffer_append_format(output_buffer,
"(%" PRIi32
",%" PRIu32
")-(%" PRIi32
",%" PRIu32
")", start.
line, start.
column, end.
line, end.
column);
40 pm_constant_t *constant = pm_constant_pool_id_to_constant(&parser->constant_pool, constant_id);
41 pm_buffer_append_format(output_buffer,
":%.*s", (
int) constant->length, constant->start);
46 switch (PM_NODE_TYPE(node)) {
50 case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
52 pm_buffer_append_string(output_buffer,
"@ AliasGlobalVariableNode (location: ", 37);
53 prettyprint_location(output_buffer, parser, &node->
location);
54 pm_buffer_append_string(output_buffer,
")\n", 2);
58 pm_buffer_concat(output_buffer, prefix_buffer);
59 pm_buffer_append_string(output_buffer,
"+-- new_name:", 13);
60 pm_buffer_append_byte(output_buffer,
'\n');
62 size_t prefix_length = prefix_buffer->length;
63 pm_buffer_append_string(prefix_buffer,
"| ", 4);
64 pm_buffer_concat(output_buffer, prefix_buffer);
65 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
new_name, prefix_buffer);
66 prefix_buffer->length = prefix_length;
71 pm_buffer_concat(output_buffer, prefix_buffer);
72 pm_buffer_append_string(output_buffer,
"+-- old_name:", 13);
73 pm_buffer_append_byte(output_buffer,
'\n');
75 size_t prefix_length = prefix_buffer->length;
76 pm_buffer_append_string(prefix_buffer,
"| ", 4);
77 pm_buffer_concat(output_buffer, prefix_buffer);
78 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
old_name, prefix_buffer);
79 prefix_buffer->length = prefix_length;
84 pm_buffer_concat(output_buffer, prefix_buffer);
85 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
87 pm_buffer_append_byte(output_buffer,
' ');
88 prettyprint_location(output_buffer, parser, location);
89 pm_buffer_append_string(output_buffer,
" = \"", 4);
90 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
91 pm_buffer_append_string(output_buffer,
"\"\n", 2);
96 case PM_ALIAS_METHOD_NODE: {
98 pm_buffer_append_string(output_buffer,
"@ AliasMethodNode (location: ", 29);
99 prettyprint_location(output_buffer, parser, &node->
location);
100 pm_buffer_append_string(output_buffer,
")\n", 2);
104 pm_buffer_concat(output_buffer, prefix_buffer);
105 pm_buffer_append_string(output_buffer,
"+-- new_name:", 13);
106 pm_buffer_append_byte(output_buffer,
'\n');
108 size_t prefix_length = prefix_buffer->length;
109 pm_buffer_append_string(prefix_buffer,
"| ", 4);
110 pm_buffer_concat(output_buffer, prefix_buffer);
111 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
new_name, prefix_buffer);
112 prefix_buffer->length = prefix_length;
117 pm_buffer_concat(output_buffer, prefix_buffer);
118 pm_buffer_append_string(output_buffer,
"+-- old_name:", 13);
119 pm_buffer_append_byte(output_buffer,
'\n');
121 size_t prefix_length = prefix_buffer->length;
122 pm_buffer_append_string(prefix_buffer,
"| ", 4);
123 pm_buffer_concat(output_buffer, prefix_buffer);
124 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
old_name, prefix_buffer);
125 prefix_buffer->length = prefix_length;
130 pm_buffer_concat(output_buffer, prefix_buffer);
131 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
133 pm_buffer_append_byte(output_buffer,
' ');
134 prettyprint_location(output_buffer, parser, location);
135 pm_buffer_append_string(output_buffer,
" = \"", 4);
136 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
137 pm_buffer_append_string(output_buffer,
"\"\n", 2);
142 case PM_ALTERNATION_PATTERN_NODE: {
144 pm_buffer_append_string(output_buffer,
"@ AlternationPatternNode (location: ", 36);
145 prettyprint_location(output_buffer, parser, &node->
location);
146 pm_buffer_append_string(output_buffer,
")\n", 2);
150 pm_buffer_concat(output_buffer, prefix_buffer);
151 pm_buffer_append_string(output_buffer,
"+-- left:", 9);
152 pm_buffer_append_byte(output_buffer,
'\n');
154 size_t prefix_length = prefix_buffer->length;
155 pm_buffer_append_string(prefix_buffer,
"| ", 4);
156 pm_buffer_concat(output_buffer, prefix_buffer);
157 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
left, prefix_buffer);
158 prefix_buffer->length = prefix_length;
163 pm_buffer_concat(output_buffer, prefix_buffer);
164 pm_buffer_append_string(output_buffer,
"+-- right:", 10);
165 pm_buffer_append_byte(output_buffer,
'\n');
167 size_t prefix_length = prefix_buffer->length;
168 pm_buffer_append_string(prefix_buffer,
"| ", 4);
169 pm_buffer_concat(output_buffer, prefix_buffer);
170 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
right, prefix_buffer);
171 prefix_buffer->length = prefix_length;
176 pm_buffer_concat(output_buffer, prefix_buffer);
177 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
179 pm_buffer_append_byte(output_buffer,
' ');
180 prettyprint_location(output_buffer, parser, location);
181 pm_buffer_append_string(output_buffer,
" = \"", 4);
182 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
183 pm_buffer_append_string(output_buffer,
"\"\n", 2);
190 pm_buffer_append_string(output_buffer,
"@ AndNode (location: ", 21);
191 prettyprint_location(output_buffer, parser, &node->
location);
192 pm_buffer_append_string(output_buffer,
")\n", 2);
196 pm_buffer_concat(output_buffer, prefix_buffer);
197 pm_buffer_append_string(output_buffer,
"+-- left:", 9);
198 pm_buffer_append_byte(output_buffer,
'\n');
200 size_t prefix_length = prefix_buffer->length;
201 pm_buffer_append_string(prefix_buffer,
"| ", 4);
202 pm_buffer_concat(output_buffer, prefix_buffer);
203 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
left, prefix_buffer);
204 prefix_buffer->length = prefix_length;
209 pm_buffer_concat(output_buffer, prefix_buffer);
210 pm_buffer_append_string(output_buffer,
"+-- right:", 10);
211 pm_buffer_append_byte(output_buffer,
'\n');
213 size_t prefix_length = prefix_buffer->length;
214 pm_buffer_append_string(prefix_buffer,
"| ", 4);
215 pm_buffer_concat(output_buffer, prefix_buffer);
216 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
right, prefix_buffer);
217 prefix_buffer->length = prefix_length;
222 pm_buffer_concat(output_buffer, prefix_buffer);
223 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
225 pm_buffer_append_byte(output_buffer,
' ');
226 prettyprint_location(output_buffer, parser, location);
227 pm_buffer_append_string(output_buffer,
" = \"", 4);
228 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
229 pm_buffer_append_string(output_buffer,
"\"\n", 2);
234 case PM_ARGUMENTS_NODE: {
236 pm_buffer_append_string(output_buffer,
"@ ArgumentsNode (location: ", 27);
237 prettyprint_location(output_buffer, parser, &node->
location);
238 pm_buffer_append_string(output_buffer,
")\n", 2);
242 pm_buffer_concat(output_buffer, prefix_buffer);
243 pm_buffer_append_string(output_buffer,
"+-- ArgumentsNodeFlags:", 23);
245 if (cast->
base.
flags & PM_ARGUMENTS_NODE_FLAGS_CONTAINS_FORWARDING) {
246 if (found) pm_buffer_append_byte(output_buffer,
',');
247 pm_buffer_append_string(output_buffer,
" contains_forwarding", 20);
250 if (cast->
base.
flags & PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS) {
251 if (found) pm_buffer_append_byte(output_buffer,
',');
252 pm_buffer_append_string(output_buffer,
" contains_keywords", 18);
255 if (cast->
base.
flags & PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT) {
256 if (found) pm_buffer_append_byte(output_buffer,
',');
257 pm_buffer_append_string(output_buffer,
" contains_keyword_splat", 23);
260 if (cast->
base.
flags & PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT) {
261 if (found) pm_buffer_append_byte(output_buffer,
',');
262 pm_buffer_append_string(output_buffer,
" contains_splat", 15);
265 if (cast->
base.
flags & PM_ARGUMENTS_NODE_FLAGS_CONTAINS_MULTIPLE_SPLATS) {
266 if (found) pm_buffer_append_byte(output_buffer,
',');
267 pm_buffer_append_string(output_buffer,
" contains_multiple_splats", 25);
270 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
271 pm_buffer_append_byte(output_buffer,
'\n');
276 pm_buffer_concat(output_buffer, prefix_buffer);
277 pm_buffer_append_string(output_buffer,
"+-- arguments:", 14);
278 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
arguments.
size));
281 for (uint32_t index = 0; index < last_index; index++) {
282 size_t prefix_length = prefix_buffer->length;
283 pm_buffer_append_string(prefix_buffer,
" ", 4);
284 pm_buffer_concat(output_buffer, prefix_buffer);
285 pm_buffer_append_string(output_buffer,
"+-- ", 4);
286 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
288 prefix_buffer->length = prefix_length;
294 case PM_ARRAY_NODE: {
296 pm_buffer_append_string(output_buffer,
"@ ArrayNode (location: ", 23);
297 prettyprint_location(output_buffer, parser, &node->
location);
298 pm_buffer_append_string(output_buffer,
")\n", 2);
302 pm_buffer_concat(output_buffer, prefix_buffer);
303 pm_buffer_append_string(output_buffer,
"+-- ArrayNodeFlags:", 19);
305 if (cast->
base.
flags & PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT) {
306 if (found) pm_buffer_append_byte(output_buffer,
',');
307 pm_buffer_append_string(output_buffer,
" contains_splat", 15);
310 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
311 pm_buffer_append_byte(output_buffer,
'\n');
316 pm_buffer_concat(output_buffer, prefix_buffer);
317 pm_buffer_append_string(output_buffer,
"+-- elements:", 13);
318 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
elements.
size));
321 for (uint32_t index = 0; index < last_index; index++) {
322 size_t prefix_length = prefix_buffer->length;
323 pm_buffer_append_string(prefix_buffer,
"| ", 4);
324 pm_buffer_concat(output_buffer, prefix_buffer);
325 pm_buffer_append_string(output_buffer,
"+-- ", 4);
326 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
328 prefix_buffer->length = prefix_length;
334 pm_buffer_concat(output_buffer, prefix_buffer);
335 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
337 if (location->
length == 0) {
338 pm_buffer_append_string(output_buffer,
" nil\n", 5);
340 pm_buffer_append_byte(output_buffer,
' ');
341 prettyprint_location(output_buffer, parser, location);
342 pm_buffer_append_string(output_buffer,
" = \"", 4);
343 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
344 pm_buffer_append_string(output_buffer,
"\"\n", 2);
350 pm_buffer_concat(output_buffer, prefix_buffer);
351 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
353 if (location->
length == 0) {
354 pm_buffer_append_string(output_buffer,
" nil\n", 5);
356 pm_buffer_append_byte(output_buffer,
' ');
357 prettyprint_location(output_buffer, parser, location);
358 pm_buffer_append_string(output_buffer,
" = \"", 4);
359 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
360 pm_buffer_append_string(output_buffer,
"\"\n", 2);
366 case PM_ARRAY_PATTERN_NODE: {
368 pm_buffer_append_string(output_buffer,
"@ ArrayPatternNode (location: ", 30);
369 prettyprint_location(output_buffer, parser, &node->
location);
370 pm_buffer_append_string(output_buffer,
")\n", 2);
374 pm_buffer_concat(output_buffer, prefix_buffer);
375 pm_buffer_append_string(output_buffer,
"+-- constant:", 13);
377 pm_buffer_append_string(output_buffer,
" nil\n", 5);
379 pm_buffer_append_byte(output_buffer,
'\n');
381 size_t prefix_length = prefix_buffer->length;
382 pm_buffer_append_string(prefix_buffer,
"| ", 4);
383 pm_buffer_concat(output_buffer, prefix_buffer);
384 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
constant, prefix_buffer);
385 prefix_buffer->length = prefix_length;
391 pm_buffer_concat(output_buffer, prefix_buffer);
392 pm_buffer_append_string(output_buffer,
"+-- requireds:", 14);
393 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
requireds.
size));
396 for (uint32_t index = 0; index < last_index; index++) {
397 size_t prefix_length = prefix_buffer->length;
398 pm_buffer_append_string(prefix_buffer,
"| ", 4);
399 pm_buffer_concat(output_buffer, prefix_buffer);
400 pm_buffer_append_string(output_buffer,
"+-- ", 4);
401 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
403 prefix_buffer->length = prefix_length;
409 pm_buffer_concat(output_buffer, prefix_buffer);
410 pm_buffer_append_string(output_buffer,
"+-- rest:", 9);
411 if (cast->
rest == NULL) {
412 pm_buffer_append_string(output_buffer,
" nil\n", 5);
414 pm_buffer_append_byte(output_buffer,
'\n');
416 size_t prefix_length = prefix_buffer->length;
417 pm_buffer_append_string(prefix_buffer,
"| ", 4);
418 pm_buffer_concat(output_buffer, prefix_buffer);
419 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
rest, prefix_buffer);
420 prefix_buffer->length = prefix_length;
426 pm_buffer_concat(output_buffer, prefix_buffer);
427 pm_buffer_append_string(output_buffer,
"+-- posts:", 10);
428 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
posts.
size));
431 for (uint32_t index = 0; index < last_index; index++) {
432 size_t prefix_length = prefix_buffer->length;
433 pm_buffer_append_string(prefix_buffer,
"| ", 4);
434 pm_buffer_concat(output_buffer, prefix_buffer);
435 pm_buffer_append_string(output_buffer,
"+-- ", 4);
436 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
437 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
posts.
nodes[index], prefix_buffer);
438 prefix_buffer->length = prefix_length;
444 pm_buffer_concat(output_buffer, prefix_buffer);
445 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
447 if (location->
length == 0) {
448 pm_buffer_append_string(output_buffer,
" nil\n", 5);
450 pm_buffer_append_byte(output_buffer,
' ');
451 prettyprint_location(output_buffer, parser, location);
452 pm_buffer_append_string(output_buffer,
" = \"", 4);
453 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
454 pm_buffer_append_string(output_buffer,
"\"\n", 2);
460 pm_buffer_concat(output_buffer, prefix_buffer);
461 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
463 if (location->
length == 0) {
464 pm_buffer_append_string(output_buffer,
" nil\n", 5);
466 pm_buffer_append_byte(output_buffer,
' ');
467 prettyprint_location(output_buffer, parser, location);
468 pm_buffer_append_string(output_buffer,
" = \"", 4);
469 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
470 pm_buffer_append_string(output_buffer,
"\"\n", 2);
476 case PM_ASSOC_NODE: {
478 pm_buffer_append_string(output_buffer,
"@ AssocNode (location: ", 23);
479 prettyprint_location(output_buffer, parser, &node->
location);
480 pm_buffer_append_string(output_buffer,
")\n", 2);
484 pm_buffer_concat(output_buffer, prefix_buffer);
485 pm_buffer_append_string(output_buffer,
"+-- key:", 8);
486 pm_buffer_append_byte(output_buffer,
'\n');
488 size_t prefix_length = prefix_buffer->length;
489 pm_buffer_append_string(prefix_buffer,
"| ", 4);
490 pm_buffer_concat(output_buffer, prefix_buffer);
491 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
key, prefix_buffer);
492 prefix_buffer->length = prefix_length;
497 pm_buffer_concat(output_buffer, prefix_buffer);
498 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
499 pm_buffer_append_byte(output_buffer,
'\n');
501 size_t prefix_length = prefix_buffer->length;
502 pm_buffer_append_string(prefix_buffer,
"| ", 4);
503 pm_buffer_concat(output_buffer, prefix_buffer);
504 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
505 prefix_buffer->length = prefix_length;
510 pm_buffer_concat(output_buffer, prefix_buffer);
511 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
513 if (location->
length == 0) {
514 pm_buffer_append_string(output_buffer,
" nil\n", 5);
516 pm_buffer_append_byte(output_buffer,
' ');
517 prettyprint_location(output_buffer, parser, location);
518 pm_buffer_append_string(output_buffer,
" = \"", 4);
519 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
520 pm_buffer_append_string(output_buffer,
"\"\n", 2);
526 case PM_ASSOC_SPLAT_NODE: {
528 pm_buffer_append_string(output_buffer,
"@ AssocSplatNode (location: ", 28);
529 prettyprint_location(output_buffer, parser, &node->
location);
530 pm_buffer_append_string(output_buffer,
")\n", 2);
534 pm_buffer_concat(output_buffer, prefix_buffer);
535 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
536 if (cast->
value == NULL) {
537 pm_buffer_append_string(output_buffer,
" nil\n", 5);
539 pm_buffer_append_byte(output_buffer,
'\n');
541 size_t prefix_length = prefix_buffer->length;
542 pm_buffer_append_string(prefix_buffer,
"| ", 4);
543 pm_buffer_concat(output_buffer, prefix_buffer);
544 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
545 prefix_buffer->length = prefix_length;
551 pm_buffer_concat(output_buffer, prefix_buffer);
552 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
554 pm_buffer_append_byte(output_buffer,
' ');
555 prettyprint_location(output_buffer, parser, location);
556 pm_buffer_append_string(output_buffer,
" = \"", 4);
557 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
558 pm_buffer_append_string(output_buffer,
"\"\n", 2);
563 case PM_BACK_REFERENCE_READ_NODE: {
565 pm_buffer_append_string(output_buffer,
"@ BackReferenceReadNode (location: ", 35);
566 prettyprint_location(output_buffer, parser, &node->
location);
567 pm_buffer_append_string(output_buffer,
")\n", 2);
571 pm_buffer_concat(output_buffer, prefix_buffer);
572 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
573 pm_buffer_append_byte(output_buffer,
' ');
574 prettyprint_constant(output_buffer, parser, cast->
name);
575 pm_buffer_append_byte(output_buffer,
'\n');
580 case PM_BEGIN_NODE: {
582 pm_buffer_append_string(output_buffer,
"@ BeginNode (location: ", 23);
583 prettyprint_location(output_buffer, parser, &node->
location);
584 pm_buffer_append_string(output_buffer,
")\n", 2);
588 pm_buffer_concat(output_buffer, prefix_buffer);
589 pm_buffer_append_string(output_buffer,
"+-- begin_keyword_loc:", 22);
591 if (location->
length == 0) {
592 pm_buffer_append_string(output_buffer,
" nil\n", 5);
594 pm_buffer_append_byte(output_buffer,
' ');
595 prettyprint_location(output_buffer, parser, location);
596 pm_buffer_append_string(output_buffer,
" = \"", 4);
597 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
598 pm_buffer_append_string(output_buffer,
"\"\n", 2);
604 pm_buffer_concat(output_buffer, prefix_buffer);
605 pm_buffer_append_string(output_buffer,
"+-- statements:", 15);
607 pm_buffer_append_string(output_buffer,
" nil\n", 5);
609 pm_buffer_append_byte(output_buffer,
'\n');
611 size_t prefix_length = prefix_buffer->length;
612 pm_buffer_append_string(prefix_buffer,
"| ", 4);
613 pm_buffer_concat(output_buffer, prefix_buffer);
615 prefix_buffer->length = prefix_length;
621 pm_buffer_concat(output_buffer, prefix_buffer);
622 pm_buffer_append_string(output_buffer,
"+-- rescue_clause:", 18);
624 pm_buffer_append_string(output_buffer,
" nil\n", 5);
626 pm_buffer_append_byte(output_buffer,
'\n');
628 size_t prefix_length = prefix_buffer->length;
629 pm_buffer_append_string(prefix_buffer,
"| ", 4);
630 pm_buffer_concat(output_buffer, prefix_buffer);
632 prefix_buffer->length = prefix_length;
638 pm_buffer_concat(output_buffer, prefix_buffer);
639 pm_buffer_append_string(output_buffer,
"+-- else_clause:", 16);
641 pm_buffer_append_string(output_buffer,
" nil\n", 5);
643 pm_buffer_append_byte(output_buffer,
'\n');
645 size_t prefix_length = prefix_buffer->length;
646 pm_buffer_append_string(prefix_buffer,
"| ", 4);
647 pm_buffer_concat(output_buffer, prefix_buffer);
649 prefix_buffer->length = prefix_length;
655 pm_buffer_concat(output_buffer, prefix_buffer);
656 pm_buffer_append_string(output_buffer,
"+-- ensure_clause:", 18);
658 pm_buffer_append_string(output_buffer,
" nil\n", 5);
660 pm_buffer_append_byte(output_buffer,
'\n');
662 size_t prefix_length = prefix_buffer->length;
663 pm_buffer_append_string(prefix_buffer,
"| ", 4);
664 pm_buffer_concat(output_buffer, prefix_buffer);
666 prefix_buffer->length = prefix_length;
672 pm_buffer_concat(output_buffer, prefix_buffer);
673 pm_buffer_append_string(output_buffer,
"+-- end_keyword_loc:", 20);
675 if (location->
length == 0) {
676 pm_buffer_append_string(output_buffer,
" nil\n", 5);
678 pm_buffer_append_byte(output_buffer,
' ');
679 prettyprint_location(output_buffer, parser, location);
680 pm_buffer_append_string(output_buffer,
" = \"", 4);
681 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
682 pm_buffer_append_string(output_buffer,
"\"\n", 2);
688 case PM_BLOCK_ARGUMENT_NODE: {
690 pm_buffer_append_string(output_buffer,
"@ BlockArgumentNode (location: ", 31);
691 prettyprint_location(output_buffer, parser, &node->
location);
692 pm_buffer_append_string(output_buffer,
")\n", 2);
696 pm_buffer_concat(output_buffer, prefix_buffer);
697 pm_buffer_append_string(output_buffer,
"+-- expression:", 15);
699 pm_buffer_append_string(output_buffer,
" nil\n", 5);
701 pm_buffer_append_byte(output_buffer,
'\n');
703 size_t prefix_length = prefix_buffer->length;
704 pm_buffer_append_string(prefix_buffer,
"| ", 4);
705 pm_buffer_concat(output_buffer, prefix_buffer);
707 prefix_buffer->length = prefix_length;
713 pm_buffer_concat(output_buffer, prefix_buffer);
714 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
716 pm_buffer_append_byte(output_buffer,
' ');
717 prettyprint_location(output_buffer, parser, location);
718 pm_buffer_append_string(output_buffer,
" = \"", 4);
719 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
720 pm_buffer_append_string(output_buffer,
"\"\n", 2);
725 case PM_BLOCK_LOCAL_VARIABLE_NODE: {
727 pm_buffer_append_string(output_buffer,
"@ BlockLocalVariableNode (location: ", 36);
728 prettyprint_location(output_buffer, parser, &node->
location);
729 pm_buffer_append_string(output_buffer,
")\n", 2);
733 pm_buffer_concat(output_buffer, prefix_buffer);
734 pm_buffer_append_string(output_buffer,
"+-- ParameterFlags:", 19);
736 if (cast->
base.
flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
737 if (found) pm_buffer_append_byte(output_buffer,
',');
738 pm_buffer_append_string(output_buffer,
" repeated_parameter", 19);
741 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
742 pm_buffer_append_byte(output_buffer,
'\n');
747 pm_buffer_concat(output_buffer, prefix_buffer);
748 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
749 pm_buffer_append_byte(output_buffer,
' ');
750 prettyprint_constant(output_buffer, parser, cast->
name);
751 pm_buffer_append_byte(output_buffer,
'\n');
756 case PM_BLOCK_NODE: {
758 pm_buffer_append_string(output_buffer,
"@ BlockNode (location: ", 23);
759 prettyprint_location(output_buffer, parser, &node->
location);
760 pm_buffer_append_string(output_buffer,
")\n", 2);
764 pm_buffer_concat(output_buffer, prefix_buffer);
765 pm_buffer_append_string(output_buffer,
"+-- locals:", 11);
766 pm_buffer_append_string(output_buffer,
" [", 2);
767 for (uint32_t index = 0; index < cast->
locals.
size; index++) {
768 if (index != 0) pm_buffer_append_string(output_buffer,
", ", 2);
769 prettyprint_constant(output_buffer, parser, cast->
locals.
ids[index]);
771 pm_buffer_append_string(output_buffer,
"]\n", 2);
776 pm_buffer_concat(output_buffer, prefix_buffer);
777 pm_buffer_append_string(output_buffer,
"+-- parameters:", 15);
779 pm_buffer_append_string(output_buffer,
" nil\n", 5);
781 pm_buffer_append_byte(output_buffer,
'\n');
783 size_t prefix_length = prefix_buffer->length;
784 pm_buffer_append_string(prefix_buffer,
"| ", 4);
785 pm_buffer_concat(output_buffer, prefix_buffer);
787 prefix_buffer->length = prefix_length;
793 pm_buffer_concat(output_buffer, prefix_buffer);
794 pm_buffer_append_string(output_buffer,
"+-- body:", 9);
795 if (cast->
body == NULL) {
796 pm_buffer_append_string(output_buffer,
" nil\n", 5);
798 pm_buffer_append_byte(output_buffer,
'\n');
800 size_t prefix_length = prefix_buffer->length;
801 pm_buffer_append_string(prefix_buffer,
"| ", 4);
802 pm_buffer_concat(output_buffer, prefix_buffer);
803 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
body, prefix_buffer);
804 prefix_buffer->length = prefix_length;
810 pm_buffer_concat(output_buffer, prefix_buffer);
811 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
813 pm_buffer_append_byte(output_buffer,
' ');
814 prettyprint_location(output_buffer, parser, location);
815 pm_buffer_append_string(output_buffer,
" = \"", 4);
816 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
817 pm_buffer_append_string(output_buffer,
"\"\n", 2);
822 pm_buffer_concat(output_buffer, prefix_buffer);
823 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
825 pm_buffer_append_byte(output_buffer,
' ');
826 prettyprint_location(output_buffer, parser, location);
827 pm_buffer_append_string(output_buffer,
" = \"", 4);
828 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
829 pm_buffer_append_string(output_buffer,
"\"\n", 2);
834 case PM_BLOCK_PARAMETER_NODE: {
836 pm_buffer_append_string(output_buffer,
"@ BlockParameterNode (location: ", 32);
837 prettyprint_location(output_buffer, parser, &node->
location);
838 pm_buffer_append_string(output_buffer,
")\n", 2);
842 pm_buffer_concat(output_buffer, prefix_buffer);
843 pm_buffer_append_string(output_buffer,
"+-- ParameterFlags:", 19);
845 if (cast->
base.
flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
846 if (found) pm_buffer_append_byte(output_buffer,
',');
847 pm_buffer_append_string(output_buffer,
" repeated_parameter", 19);
850 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
851 pm_buffer_append_byte(output_buffer,
'\n');
856 pm_buffer_concat(output_buffer, prefix_buffer);
857 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
858 if (cast->
name == 0) {
859 pm_buffer_append_string(output_buffer,
" nil\n", 5);
861 pm_buffer_append_byte(output_buffer,
' ');
862 prettyprint_constant(output_buffer, parser, cast->
name);
863 pm_buffer_append_byte(output_buffer,
'\n');
869 pm_buffer_concat(output_buffer, prefix_buffer);
870 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
872 if (location->
length == 0) {
873 pm_buffer_append_string(output_buffer,
" nil\n", 5);
875 pm_buffer_append_byte(output_buffer,
' ');
876 prettyprint_location(output_buffer, parser, location);
877 pm_buffer_append_string(output_buffer,
" = \"", 4);
878 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
879 pm_buffer_append_string(output_buffer,
"\"\n", 2);
885 pm_buffer_concat(output_buffer, prefix_buffer);
886 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
888 pm_buffer_append_byte(output_buffer,
' ');
889 prettyprint_location(output_buffer, parser, location);
890 pm_buffer_append_string(output_buffer,
" = \"", 4);
891 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
892 pm_buffer_append_string(output_buffer,
"\"\n", 2);
897 case PM_BLOCK_PARAMETERS_NODE: {
899 pm_buffer_append_string(output_buffer,
"@ BlockParametersNode (location: ", 33);
900 prettyprint_location(output_buffer, parser, &node->
location);
901 pm_buffer_append_string(output_buffer,
")\n", 2);
905 pm_buffer_concat(output_buffer, prefix_buffer);
906 pm_buffer_append_string(output_buffer,
"+-- parameters:", 15);
908 pm_buffer_append_string(output_buffer,
" nil\n", 5);
910 pm_buffer_append_byte(output_buffer,
'\n');
912 size_t prefix_length = prefix_buffer->length;
913 pm_buffer_append_string(prefix_buffer,
"| ", 4);
914 pm_buffer_concat(output_buffer, prefix_buffer);
916 prefix_buffer->length = prefix_length;
922 pm_buffer_concat(output_buffer, prefix_buffer);
923 pm_buffer_append_string(output_buffer,
"+-- locals:", 11);
924 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
locals.
size));
927 for (uint32_t index = 0; index < last_index; index++) {
928 size_t prefix_length = prefix_buffer->length;
929 pm_buffer_append_string(prefix_buffer,
"| ", 4);
930 pm_buffer_concat(output_buffer, prefix_buffer);
931 pm_buffer_append_string(output_buffer,
"+-- ", 4);
932 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
933 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
locals.
nodes[index], prefix_buffer);
934 prefix_buffer->length = prefix_length;
940 pm_buffer_concat(output_buffer, prefix_buffer);
941 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
943 if (location->
length == 0) {
944 pm_buffer_append_string(output_buffer,
" nil\n", 5);
946 pm_buffer_append_byte(output_buffer,
' ');
947 prettyprint_location(output_buffer, parser, location);
948 pm_buffer_append_string(output_buffer,
" = \"", 4);
949 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
950 pm_buffer_append_string(output_buffer,
"\"\n", 2);
956 pm_buffer_concat(output_buffer, prefix_buffer);
957 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
959 if (location->
length == 0) {
960 pm_buffer_append_string(output_buffer,
" nil\n", 5);
962 pm_buffer_append_byte(output_buffer,
' ');
963 prettyprint_location(output_buffer, parser, location);
964 pm_buffer_append_string(output_buffer,
" = \"", 4);
965 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
966 pm_buffer_append_string(output_buffer,
"\"\n", 2);
972 case PM_BREAK_NODE: {
974 pm_buffer_append_string(output_buffer,
"@ BreakNode (location: ", 23);
975 prettyprint_location(output_buffer, parser, &node->
location);
976 pm_buffer_append_string(output_buffer,
")\n", 2);
980 pm_buffer_concat(output_buffer, prefix_buffer);
981 pm_buffer_append_string(output_buffer,
"+-- arguments:", 14);
983 pm_buffer_append_string(output_buffer,
" nil\n", 5);
985 pm_buffer_append_byte(output_buffer,
'\n');
987 size_t prefix_length = prefix_buffer->length;
988 pm_buffer_append_string(prefix_buffer,
"| ", 4);
989 pm_buffer_concat(output_buffer, prefix_buffer);
990 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
991 prefix_buffer->length = prefix_length;
997 pm_buffer_concat(output_buffer, prefix_buffer);
998 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
1000 pm_buffer_append_byte(output_buffer,
' ');
1001 prettyprint_location(output_buffer, parser, location);
1002 pm_buffer_append_string(output_buffer,
" = \"", 4);
1003 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1004 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1009 case PM_CALL_AND_WRITE_NODE: {
1011 pm_buffer_append_string(output_buffer,
"@ CallAndWriteNode (location: ", 30);
1012 prettyprint_location(output_buffer, parser, &node->
location);
1013 pm_buffer_append_string(output_buffer,
")\n", 2);
1017 pm_buffer_concat(output_buffer, prefix_buffer);
1018 pm_buffer_append_string(output_buffer,
"+-- CallNodeFlags:", 18);
1020 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
1021 if (found) pm_buffer_append_byte(output_buffer,
',');
1022 pm_buffer_append_string(output_buffer,
" safe_navigation", 16);
1025 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
1026 if (found) pm_buffer_append_byte(output_buffer,
',');
1027 pm_buffer_append_string(output_buffer,
" variable_call", 14);
1030 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
1031 if (found) pm_buffer_append_byte(output_buffer,
',');
1032 pm_buffer_append_string(output_buffer,
" attribute_write", 16);
1035 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
1036 if (found) pm_buffer_append_byte(output_buffer,
',');
1037 pm_buffer_append_string(output_buffer,
" ignore_visibility", 18);
1040 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
1041 pm_buffer_append_byte(output_buffer,
'\n');
1046 pm_buffer_concat(output_buffer, prefix_buffer);
1047 pm_buffer_append_string(output_buffer,
"+-- receiver:", 13);
1049 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1051 pm_buffer_append_byte(output_buffer,
'\n');
1053 size_t prefix_length = prefix_buffer->length;
1054 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1055 pm_buffer_concat(output_buffer, prefix_buffer);
1056 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
1057 prefix_buffer->length = prefix_length;
1063 pm_buffer_concat(output_buffer, prefix_buffer);
1064 pm_buffer_append_string(output_buffer,
"+-- call_operator_loc:", 22);
1066 if (location->
length == 0) {
1067 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1069 pm_buffer_append_byte(output_buffer,
' ');
1070 prettyprint_location(output_buffer, parser, location);
1071 pm_buffer_append_string(output_buffer,
" = \"", 4);
1072 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1073 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1079 pm_buffer_concat(output_buffer, prefix_buffer);
1080 pm_buffer_append_string(output_buffer,
"+-- message_loc:", 16);
1082 if (location->
length == 0) {
1083 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1085 pm_buffer_append_byte(output_buffer,
' ');
1086 prettyprint_location(output_buffer, parser, location);
1087 pm_buffer_append_string(output_buffer,
" = \"", 4);
1088 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1089 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1095 pm_buffer_concat(output_buffer, prefix_buffer);
1096 pm_buffer_append_string(output_buffer,
"+-- read_name:", 14);
1097 pm_buffer_append_byte(output_buffer,
' ');
1098 prettyprint_constant(output_buffer, parser, cast->
read_name);
1099 pm_buffer_append_byte(output_buffer,
'\n');
1104 pm_buffer_concat(output_buffer, prefix_buffer);
1105 pm_buffer_append_string(output_buffer,
"+-- write_name:", 15);
1106 pm_buffer_append_byte(output_buffer,
' ');
1107 prettyprint_constant(output_buffer, parser, cast->
write_name);
1108 pm_buffer_append_byte(output_buffer,
'\n');
1113 pm_buffer_concat(output_buffer, prefix_buffer);
1114 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
1116 pm_buffer_append_byte(output_buffer,
' ');
1117 prettyprint_location(output_buffer, parser, location);
1118 pm_buffer_append_string(output_buffer,
" = \"", 4);
1119 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1120 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1125 pm_buffer_concat(output_buffer, prefix_buffer);
1126 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
1127 pm_buffer_append_byte(output_buffer,
'\n');
1129 size_t prefix_length = prefix_buffer->length;
1130 pm_buffer_append_string(prefix_buffer,
" ", 4);
1131 pm_buffer_concat(output_buffer, prefix_buffer);
1132 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
1133 prefix_buffer->length = prefix_length;
1138 case PM_CALL_NODE: {
1140 pm_buffer_append_string(output_buffer,
"@ CallNode (location: ", 22);
1141 prettyprint_location(output_buffer, parser, &node->
location);
1142 pm_buffer_append_string(output_buffer,
")\n", 2);
1146 pm_buffer_concat(output_buffer, prefix_buffer);
1147 pm_buffer_append_string(output_buffer,
"+-- CallNodeFlags:", 18);
1149 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
1150 if (found) pm_buffer_append_byte(output_buffer,
',');
1151 pm_buffer_append_string(output_buffer,
" safe_navigation", 16);
1154 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
1155 if (found) pm_buffer_append_byte(output_buffer,
',');
1156 pm_buffer_append_string(output_buffer,
" variable_call", 14);
1159 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
1160 if (found) pm_buffer_append_byte(output_buffer,
',');
1161 pm_buffer_append_string(output_buffer,
" attribute_write", 16);
1164 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
1165 if (found) pm_buffer_append_byte(output_buffer,
',');
1166 pm_buffer_append_string(output_buffer,
" ignore_visibility", 18);
1169 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
1170 pm_buffer_append_byte(output_buffer,
'\n');
1175 pm_buffer_concat(output_buffer, prefix_buffer);
1176 pm_buffer_append_string(output_buffer,
"+-- receiver:", 13);
1178 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1180 pm_buffer_append_byte(output_buffer,
'\n');
1182 size_t prefix_length = prefix_buffer->length;
1183 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1184 pm_buffer_concat(output_buffer, prefix_buffer);
1185 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
1186 prefix_buffer->length = prefix_length;
1192 pm_buffer_concat(output_buffer, prefix_buffer);
1193 pm_buffer_append_string(output_buffer,
"+-- call_operator_loc:", 22);
1195 if (location->
length == 0) {
1196 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1198 pm_buffer_append_byte(output_buffer,
' ');
1199 prettyprint_location(output_buffer, parser, location);
1200 pm_buffer_append_string(output_buffer,
" = \"", 4);
1201 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1202 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1208 pm_buffer_concat(output_buffer, prefix_buffer);
1209 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
1210 pm_buffer_append_byte(output_buffer,
' ');
1211 prettyprint_constant(output_buffer, parser, cast->
name);
1212 pm_buffer_append_byte(output_buffer,
'\n');
1217 pm_buffer_concat(output_buffer, prefix_buffer);
1218 pm_buffer_append_string(output_buffer,
"+-- message_loc:", 16);
1220 if (location->
length == 0) {
1221 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1223 pm_buffer_append_byte(output_buffer,
' ');
1224 prettyprint_location(output_buffer, parser, location);
1225 pm_buffer_append_string(output_buffer,
" = \"", 4);
1226 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1227 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1233 pm_buffer_concat(output_buffer, prefix_buffer);
1234 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
1236 if (location->
length == 0) {
1237 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1239 pm_buffer_append_byte(output_buffer,
' ');
1240 prettyprint_location(output_buffer, parser, location);
1241 pm_buffer_append_string(output_buffer,
" = \"", 4);
1242 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1243 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1249 pm_buffer_concat(output_buffer, prefix_buffer);
1250 pm_buffer_append_string(output_buffer,
"+-- arguments:", 14);
1252 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1254 pm_buffer_append_byte(output_buffer,
'\n');
1256 size_t prefix_length = prefix_buffer->length;
1257 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1258 pm_buffer_concat(output_buffer, prefix_buffer);
1259 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
1260 prefix_buffer->length = prefix_length;
1266 pm_buffer_concat(output_buffer, prefix_buffer);
1267 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
1269 if (location->
length == 0) {
1270 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1272 pm_buffer_append_byte(output_buffer,
' ');
1273 prettyprint_location(output_buffer, parser, location);
1274 pm_buffer_append_string(output_buffer,
" = \"", 4);
1275 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1276 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1282 pm_buffer_concat(output_buffer, prefix_buffer);
1283 pm_buffer_append_string(output_buffer,
"+-- equal_loc:", 14);
1285 if (location->
length == 0) {
1286 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1288 pm_buffer_append_byte(output_buffer,
' ');
1289 prettyprint_location(output_buffer, parser, location);
1290 pm_buffer_append_string(output_buffer,
" = \"", 4);
1291 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1292 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1298 pm_buffer_concat(output_buffer, prefix_buffer);
1299 pm_buffer_append_string(output_buffer,
"+-- block:", 10);
1300 if (cast->
block == NULL) {
1301 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1303 pm_buffer_append_byte(output_buffer,
'\n');
1305 size_t prefix_length = prefix_buffer->length;
1306 pm_buffer_append_string(prefix_buffer,
" ", 4);
1307 pm_buffer_concat(output_buffer, prefix_buffer);
1308 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
block, prefix_buffer);
1309 prefix_buffer->length = prefix_length;
1315 case PM_CALL_OPERATOR_WRITE_NODE: {
1317 pm_buffer_append_string(output_buffer,
"@ CallOperatorWriteNode (location: ", 35);
1318 prettyprint_location(output_buffer, parser, &node->
location);
1319 pm_buffer_append_string(output_buffer,
")\n", 2);
1323 pm_buffer_concat(output_buffer, prefix_buffer);
1324 pm_buffer_append_string(output_buffer,
"+-- CallNodeFlags:", 18);
1326 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
1327 if (found) pm_buffer_append_byte(output_buffer,
',');
1328 pm_buffer_append_string(output_buffer,
" safe_navigation", 16);
1331 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
1332 if (found) pm_buffer_append_byte(output_buffer,
',');
1333 pm_buffer_append_string(output_buffer,
" variable_call", 14);
1336 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
1337 if (found) pm_buffer_append_byte(output_buffer,
',');
1338 pm_buffer_append_string(output_buffer,
" attribute_write", 16);
1341 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
1342 if (found) pm_buffer_append_byte(output_buffer,
',');
1343 pm_buffer_append_string(output_buffer,
" ignore_visibility", 18);
1346 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
1347 pm_buffer_append_byte(output_buffer,
'\n');
1352 pm_buffer_concat(output_buffer, prefix_buffer);
1353 pm_buffer_append_string(output_buffer,
"+-- receiver:", 13);
1355 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1357 pm_buffer_append_byte(output_buffer,
'\n');
1359 size_t prefix_length = prefix_buffer->length;
1360 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1361 pm_buffer_concat(output_buffer, prefix_buffer);
1362 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
1363 prefix_buffer->length = prefix_length;
1369 pm_buffer_concat(output_buffer, prefix_buffer);
1370 pm_buffer_append_string(output_buffer,
"+-- call_operator_loc:", 22);
1372 if (location->
length == 0) {
1373 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1375 pm_buffer_append_byte(output_buffer,
' ');
1376 prettyprint_location(output_buffer, parser, location);
1377 pm_buffer_append_string(output_buffer,
" = \"", 4);
1378 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1379 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1385 pm_buffer_concat(output_buffer, prefix_buffer);
1386 pm_buffer_append_string(output_buffer,
"+-- message_loc:", 16);
1388 if (location->
length == 0) {
1389 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1391 pm_buffer_append_byte(output_buffer,
' ');
1392 prettyprint_location(output_buffer, parser, location);
1393 pm_buffer_append_string(output_buffer,
" = \"", 4);
1394 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1395 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1401 pm_buffer_concat(output_buffer, prefix_buffer);
1402 pm_buffer_append_string(output_buffer,
"+-- read_name:", 14);
1403 pm_buffer_append_byte(output_buffer,
' ');
1404 prettyprint_constant(output_buffer, parser, cast->
read_name);
1405 pm_buffer_append_byte(output_buffer,
'\n');
1410 pm_buffer_concat(output_buffer, prefix_buffer);
1411 pm_buffer_append_string(output_buffer,
"+-- write_name:", 15);
1412 pm_buffer_append_byte(output_buffer,
' ');
1413 prettyprint_constant(output_buffer, parser, cast->
write_name);
1414 pm_buffer_append_byte(output_buffer,
'\n');
1419 pm_buffer_concat(output_buffer, prefix_buffer);
1420 pm_buffer_append_string(output_buffer,
"+-- binary_operator:", 20);
1421 pm_buffer_append_byte(output_buffer,
' ');
1423 pm_buffer_append_byte(output_buffer,
'\n');
1428 pm_buffer_concat(output_buffer, prefix_buffer);
1429 pm_buffer_append_string(output_buffer,
"+-- binary_operator_loc:", 24);
1431 pm_buffer_append_byte(output_buffer,
' ');
1432 prettyprint_location(output_buffer, parser, location);
1433 pm_buffer_append_string(output_buffer,
" = \"", 4);
1434 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1435 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1440 pm_buffer_concat(output_buffer, prefix_buffer);
1441 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
1442 pm_buffer_append_byte(output_buffer,
'\n');
1444 size_t prefix_length = prefix_buffer->length;
1445 pm_buffer_append_string(prefix_buffer,
" ", 4);
1446 pm_buffer_concat(output_buffer, prefix_buffer);
1447 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
1448 prefix_buffer->length = prefix_length;
1453 case PM_CALL_OR_WRITE_NODE: {
1455 pm_buffer_append_string(output_buffer,
"@ CallOrWriteNode (location: ", 29);
1456 prettyprint_location(output_buffer, parser, &node->
location);
1457 pm_buffer_append_string(output_buffer,
")\n", 2);
1461 pm_buffer_concat(output_buffer, prefix_buffer);
1462 pm_buffer_append_string(output_buffer,
"+-- CallNodeFlags:", 18);
1464 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
1465 if (found) pm_buffer_append_byte(output_buffer,
',');
1466 pm_buffer_append_string(output_buffer,
" safe_navigation", 16);
1469 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
1470 if (found) pm_buffer_append_byte(output_buffer,
',');
1471 pm_buffer_append_string(output_buffer,
" variable_call", 14);
1474 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
1475 if (found) pm_buffer_append_byte(output_buffer,
',');
1476 pm_buffer_append_string(output_buffer,
" attribute_write", 16);
1479 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
1480 if (found) pm_buffer_append_byte(output_buffer,
',');
1481 pm_buffer_append_string(output_buffer,
" ignore_visibility", 18);
1484 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
1485 pm_buffer_append_byte(output_buffer,
'\n');
1490 pm_buffer_concat(output_buffer, prefix_buffer);
1491 pm_buffer_append_string(output_buffer,
"+-- receiver:", 13);
1493 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1495 pm_buffer_append_byte(output_buffer,
'\n');
1497 size_t prefix_length = prefix_buffer->length;
1498 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1499 pm_buffer_concat(output_buffer, prefix_buffer);
1500 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
1501 prefix_buffer->length = prefix_length;
1507 pm_buffer_concat(output_buffer, prefix_buffer);
1508 pm_buffer_append_string(output_buffer,
"+-- call_operator_loc:", 22);
1510 if (location->
length == 0) {
1511 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1513 pm_buffer_append_byte(output_buffer,
' ');
1514 prettyprint_location(output_buffer, parser, location);
1515 pm_buffer_append_string(output_buffer,
" = \"", 4);
1516 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1517 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1523 pm_buffer_concat(output_buffer, prefix_buffer);
1524 pm_buffer_append_string(output_buffer,
"+-- message_loc:", 16);
1526 if (location->
length == 0) {
1527 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1529 pm_buffer_append_byte(output_buffer,
' ');
1530 prettyprint_location(output_buffer, parser, location);
1531 pm_buffer_append_string(output_buffer,
" = \"", 4);
1532 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1533 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1539 pm_buffer_concat(output_buffer, prefix_buffer);
1540 pm_buffer_append_string(output_buffer,
"+-- read_name:", 14);
1541 pm_buffer_append_byte(output_buffer,
' ');
1542 prettyprint_constant(output_buffer, parser, cast->
read_name);
1543 pm_buffer_append_byte(output_buffer,
'\n');
1548 pm_buffer_concat(output_buffer, prefix_buffer);
1549 pm_buffer_append_string(output_buffer,
"+-- write_name:", 15);
1550 pm_buffer_append_byte(output_buffer,
' ');
1551 prettyprint_constant(output_buffer, parser, cast->
write_name);
1552 pm_buffer_append_byte(output_buffer,
'\n');
1557 pm_buffer_concat(output_buffer, prefix_buffer);
1558 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
1560 pm_buffer_append_byte(output_buffer,
' ');
1561 prettyprint_location(output_buffer, parser, location);
1562 pm_buffer_append_string(output_buffer,
" = \"", 4);
1563 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1564 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1569 pm_buffer_concat(output_buffer, prefix_buffer);
1570 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
1571 pm_buffer_append_byte(output_buffer,
'\n');
1573 size_t prefix_length = prefix_buffer->length;
1574 pm_buffer_append_string(prefix_buffer,
" ", 4);
1575 pm_buffer_concat(output_buffer, prefix_buffer);
1576 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
1577 prefix_buffer->length = prefix_length;
1582 case PM_CALL_TARGET_NODE: {
1584 pm_buffer_append_string(output_buffer,
"@ CallTargetNode (location: ", 28);
1585 prettyprint_location(output_buffer, parser, &node->
location);
1586 pm_buffer_append_string(output_buffer,
")\n", 2);
1590 pm_buffer_concat(output_buffer, prefix_buffer);
1591 pm_buffer_append_string(output_buffer,
"+-- CallNodeFlags:", 18);
1593 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
1594 if (found) pm_buffer_append_byte(output_buffer,
',');
1595 pm_buffer_append_string(output_buffer,
" safe_navigation", 16);
1598 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
1599 if (found) pm_buffer_append_byte(output_buffer,
',');
1600 pm_buffer_append_string(output_buffer,
" variable_call", 14);
1603 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
1604 if (found) pm_buffer_append_byte(output_buffer,
',');
1605 pm_buffer_append_string(output_buffer,
" attribute_write", 16);
1608 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
1609 if (found) pm_buffer_append_byte(output_buffer,
',');
1610 pm_buffer_append_string(output_buffer,
" ignore_visibility", 18);
1613 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
1614 pm_buffer_append_byte(output_buffer,
'\n');
1619 pm_buffer_concat(output_buffer, prefix_buffer);
1620 pm_buffer_append_string(output_buffer,
"+-- receiver:", 13);
1621 pm_buffer_append_byte(output_buffer,
'\n');
1623 size_t prefix_length = prefix_buffer->length;
1624 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1625 pm_buffer_concat(output_buffer, prefix_buffer);
1626 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
1627 prefix_buffer->length = prefix_length;
1632 pm_buffer_concat(output_buffer, prefix_buffer);
1633 pm_buffer_append_string(output_buffer,
"+-- call_operator_loc:", 22);
1635 pm_buffer_append_byte(output_buffer,
' ');
1636 prettyprint_location(output_buffer, parser, location);
1637 pm_buffer_append_string(output_buffer,
" = \"", 4);
1638 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1639 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1644 pm_buffer_concat(output_buffer, prefix_buffer);
1645 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
1646 pm_buffer_append_byte(output_buffer,
' ');
1647 prettyprint_constant(output_buffer, parser, cast->
name);
1648 pm_buffer_append_byte(output_buffer,
'\n');
1653 pm_buffer_concat(output_buffer, prefix_buffer);
1654 pm_buffer_append_string(output_buffer,
"+-- message_loc:", 16);
1656 pm_buffer_append_byte(output_buffer,
' ');
1657 prettyprint_location(output_buffer, parser, location);
1658 pm_buffer_append_string(output_buffer,
" = \"", 4);
1659 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1660 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1665 case PM_CAPTURE_PATTERN_NODE: {
1667 pm_buffer_append_string(output_buffer,
"@ CapturePatternNode (location: ", 32);
1668 prettyprint_location(output_buffer, parser, &node->
location);
1669 pm_buffer_append_string(output_buffer,
")\n", 2);
1673 pm_buffer_concat(output_buffer, prefix_buffer);
1674 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
1675 pm_buffer_append_byte(output_buffer,
'\n');
1677 size_t prefix_length = prefix_buffer->length;
1678 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1679 pm_buffer_concat(output_buffer, prefix_buffer);
1680 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
1681 prefix_buffer->length = prefix_length;
1686 pm_buffer_concat(output_buffer, prefix_buffer);
1687 pm_buffer_append_string(output_buffer,
"+-- target:", 11);
1688 pm_buffer_append_byte(output_buffer,
'\n');
1690 size_t prefix_length = prefix_buffer->length;
1691 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1692 pm_buffer_concat(output_buffer, prefix_buffer);
1693 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
target, prefix_buffer);
1694 prefix_buffer->length = prefix_length;
1699 pm_buffer_concat(output_buffer, prefix_buffer);
1700 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
1702 pm_buffer_append_byte(output_buffer,
' ');
1703 prettyprint_location(output_buffer, parser, location);
1704 pm_buffer_append_string(output_buffer,
" = \"", 4);
1705 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1706 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1711 case PM_CASE_MATCH_NODE: {
1713 pm_buffer_append_string(output_buffer,
"@ CaseMatchNode (location: ", 27);
1714 prettyprint_location(output_buffer, parser, &node->
location);
1715 pm_buffer_append_string(output_buffer,
")\n", 2);
1719 pm_buffer_concat(output_buffer, prefix_buffer);
1720 pm_buffer_append_string(output_buffer,
"+-- predicate:", 14);
1722 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1724 pm_buffer_append_byte(output_buffer,
'\n');
1726 size_t prefix_length = prefix_buffer->length;
1727 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1728 pm_buffer_concat(output_buffer, prefix_buffer);
1729 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
predicate, prefix_buffer);
1730 prefix_buffer->length = prefix_length;
1736 pm_buffer_concat(output_buffer, prefix_buffer);
1737 pm_buffer_append_string(output_buffer,
"+-- conditions:", 15);
1738 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
conditions.
size));
1741 for (uint32_t index = 0; index < last_index; index++) {
1742 size_t prefix_length = prefix_buffer->length;
1743 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1744 pm_buffer_concat(output_buffer, prefix_buffer);
1745 pm_buffer_append_string(output_buffer,
"+-- ", 4);
1746 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
1748 prefix_buffer->length = prefix_length;
1754 pm_buffer_concat(output_buffer, prefix_buffer);
1755 pm_buffer_append_string(output_buffer,
"+-- else_clause:", 16);
1757 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1759 pm_buffer_append_byte(output_buffer,
'\n');
1761 size_t prefix_length = prefix_buffer->length;
1762 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1763 pm_buffer_concat(output_buffer, prefix_buffer);
1765 prefix_buffer->length = prefix_length;
1771 pm_buffer_concat(output_buffer, prefix_buffer);
1772 pm_buffer_append_string(output_buffer,
"+-- case_keyword_loc:", 21);
1774 pm_buffer_append_byte(output_buffer,
' ');
1775 prettyprint_location(output_buffer, parser, location);
1776 pm_buffer_append_string(output_buffer,
" = \"", 4);
1777 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1778 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1783 pm_buffer_concat(output_buffer, prefix_buffer);
1784 pm_buffer_append_string(output_buffer,
"+-- end_keyword_loc:", 20);
1786 pm_buffer_append_byte(output_buffer,
' ');
1787 prettyprint_location(output_buffer, parser, location);
1788 pm_buffer_append_string(output_buffer,
" = \"", 4);
1789 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1790 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1795 case PM_CASE_NODE: {
1797 pm_buffer_append_string(output_buffer,
"@ CaseNode (location: ", 22);
1798 prettyprint_location(output_buffer, parser, &node->
location);
1799 pm_buffer_append_string(output_buffer,
")\n", 2);
1803 pm_buffer_concat(output_buffer, prefix_buffer);
1804 pm_buffer_append_string(output_buffer,
"+-- predicate:", 14);
1806 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1808 pm_buffer_append_byte(output_buffer,
'\n');
1810 size_t prefix_length = prefix_buffer->length;
1811 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1812 pm_buffer_concat(output_buffer, prefix_buffer);
1813 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
predicate, prefix_buffer);
1814 prefix_buffer->length = prefix_length;
1820 pm_buffer_concat(output_buffer, prefix_buffer);
1821 pm_buffer_append_string(output_buffer,
"+-- conditions:", 15);
1822 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
conditions.
size));
1825 for (uint32_t index = 0; index < last_index; index++) {
1826 size_t prefix_length = prefix_buffer->length;
1827 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1828 pm_buffer_concat(output_buffer, prefix_buffer);
1829 pm_buffer_append_string(output_buffer,
"+-- ", 4);
1830 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
1832 prefix_buffer->length = prefix_length;
1838 pm_buffer_concat(output_buffer, prefix_buffer);
1839 pm_buffer_append_string(output_buffer,
"+-- else_clause:", 16);
1841 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1843 pm_buffer_append_byte(output_buffer,
'\n');
1845 size_t prefix_length = prefix_buffer->length;
1846 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1847 pm_buffer_concat(output_buffer, prefix_buffer);
1849 prefix_buffer->length = prefix_length;
1855 pm_buffer_concat(output_buffer, prefix_buffer);
1856 pm_buffer_append_string(output_buffer,
"+-- case_keyword_loc:", 21);
1858 pm_buffer_append_byte(output_buffer,
' ');
1859 prettyprint_location(output_buffer, parser, location);
1860 pm_buffer_append_string(output_buffer,
" = \"", 4);
1861 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1862 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1867 pm_buffer_concat(output_buffer, prefix_buffer);
1868 pm_buffer_append_string(output_buffer,
"+-- end_keyword_loc:", 20);
1870 pm_buffer_append_byte(output_buffer,
' ');
1871 prettyprint_location(output_buffer, parser, location);
1872 pm_buffer_append_string(output_buffer,
" = \"", 4);
1873 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1874 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1879 case PM_CLASS_NODE: {
1881 pm_buffer_append_string(output_buffer,
"@ ClassNode (location: ", 23);
1882 prettyprint_location(output_buffer, parser, &node->
location);
1883 pm_buffer_append_string(output_buffer,
")\n", 2);
1887 pm_buffer_concat(output_buffer, prefix_buffer);
1888 pm_buffer_append_string(output_buffer,
"+-- locals:", 11);
1889 pm_buffer_append_string(output_buffer,
" [", 2);
1890 for (uint32_t index = 0; index < cast->
locals.
size; index++) {
1891 if (index != 0) pm_buffer_append_string(output_buffer,
", ", 2);
1892 prettyprint_constant(output_buffer, parser, cast->
locals.
ids[index]);
1894 pm_buffer_append_string(output_buffer,
"]\n", 2);
1899 pm_buffer_concat(output_buffer, prefix_buffer);
1900 pm_buffer_append_string(output_buffer,
"+-- class_keyword_loc:", 22);
1902 pm_buffer_append_byte(output_buffer,
' ');
1903 prettyprint_location(output_buffer, parser, location);
1904 pm_buffer_append_string(output_buffer,
" = \"", 4);
1905 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1906 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1911 pm_buffer_concat(output_buffer, prefix_buffer);
1912 pm_buffer_append_string(output_buffer,
"+-- constant_path:", 18);
1913 pm_buffer_append_byte(output_buffer,
'\n');
1915 size_t prefix_length = prefix_buffer->length;
1916 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1917 pm_buffer_concat(output_buffer, prefix_buffer);
1919 prefix_buffer->length = prefix_length;
1924 pm_buffer_concat(output_buffer, prefix_buffer);
1925 pm_buffer_append_string(output_buffer,
"+-- inheritance_operator_loc:", 29);
1927 if (location->
length == 0) {
1928 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1930 pm_buffer_append_byte(output_buffer,
' ');
1931 prettyprint_location(output_buffer, parser, location);
1932 pm_buffer_append_string(output_buffer,
" = \"", 4);
1933 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1934 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1940 pm_buffer_concat(output_buffer, prefix_buffer);
1941 pm_buffer_append_string(output_buffer,
"+-- superclass:", 15);
1943 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1945 pm_buffer_append_byte(output_buffer,
'\n');
1947 size_t prefix_length = prefix_buffer->length;
1948 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1949 pm_buffer_concat(output_buffer, prefix_buffer);
1951 prefix_buffer->length = prefix_length;
1957 pm_buffer_concat(output_buffer, prefix_buffer);
1958 pm_buffer_append_string(output_buffer,
"+-- body:", 9);
1959 if (cast->
body == NULL) {
1960 pm_buffer_append_string(output_buffer,
" nil\n", 5);
1962 pm_buffer_append_byte(output_buffer,
'\n');
1964 size_t prefix_length = prefix_buffer->length;
1965 pm_buffer_append_string(prefix_buffer,
"| ", 4);
1966 pm_buffer_concat(output_buffer, prefix_buffer);
1967 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
body, prefix_buffer);
1968 prefix_buffer->length = prefix_length;
1974 pm_buffer_concat(output_buffer, prefix_buffer);
1975 pm_buffer_append_string(output_buffer,
"+-- end_keyword_loc:", 20);
1977 pm_buffer_append_byte(output_buffer,
' ');
1978 prettyprint_location(output_buffer, parser, location);
1979 pm_buffer_append_string(output_buffer,
" = \"", 4);
1980 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
1981 pm_buffer_append_string(output_buffer,
"\"\n", 2);
1986 pm_buffer_concat(output_buffer, prefix_buffer);
1987 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
1988 pm_buffer_append_byte(output_buffer,
' ');
1989 prettyprint_constant(output_buffer, parser, cast->
name);
1990 pm_buffer_append_byte(output_buffer,
'\n');
1995 case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
1997 pm_buffer_append_string(output_buffer,
"@ ClassVariableAndWriteNode (location: ", 39);
1998 prettyprint_location(output_buffer, parser, &node->
location);
1999 pm_buffer_append_string(output_buffer,
")\n", 2);
2003 pm_buffer_concat(output_buffer, prefix_buffer);
2004 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
2005 pm_buffer_append_byte(output_buffer,
' ');
2006 prettyprint_constant(output_buffer, parser, cast->
name);
2007 pm_buffer_append_byte(output_buffer,
'\n');
2012 pm_buffer_concat(output_buffer, prefix_buffer);
2013 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
2015 pm_buffer_append_byte(output_buffer,
' ');
2016 prettyprint_location(output_buffer, parser, location);
2017 pm_buffer_append_string(output_buffer,
" = \"", 4);
2018 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2019 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2024 pm_buffer_concat(output_buffer, prefix_buffer);
2025 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
2027 pm_buffer_append_byte(output_buffer,
' ');
2028 prettyprint_location(output_buffer, parser, location);
2029 pm_buffer_append_string(output_buffer,
" = \"", 4);
2030 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2031 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2036 pm_buffer_concat(output_buffer, prefix_buffer);
2037 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
2038 pm_buffer_append_byte(output_buffer,
'\n');
2040 size_t prefix_length = prefix_buffer->length;
2041 pm_buffer_append_string(prefix_buffer,
" ", 4);
2042 pm_buffer_concat(output_buffer, prefix_buffer);
2043 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
2044 prefix_buffer->length = prefix_length;
2049 case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
2051 pm_buffer_append_string(output_buffer,
"@ ClassVariableOperatorWriteNode (location: ", 44);
2052 prettyprint_location(output_buffer, parser, &node->
location);
2053 pm_buffer_append_string(output_buffer,
")\n", 2);
2057 pm_buffer_concat(output_buffer, prefix_buffer);
2058 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
2059 pm_buffer_append_byte(output_buffer,
' ');
2060 prettyprint_constant(output_buffer, parser, cast->
name);
2061 pm_buffer_append_byte(output_buffer,
'\n');
2066 pm_buffer_concat(output_buffer, prefix_buffer);
2067 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
2069 pm_buffer_append_byte(output_buffer,
' ');
2070 prettyprint_location(output_buffer, parser, location);
2071 pm_buffer_append_string(output_buffer,
" = \"", 4);
2072 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2073 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2078 pm_buffer_concat(output_buffer, prefix_buffer);
2079 pm_buffer_append_string(output_buffer,
"+-- binary_operator_loc:", 24);
2081 pm_buffer_append_byte(output_buffer,
' ');
2082 prettyprint_location(output_buffer, parser, location);
2083 pm_buffer_append_string(output_buffer,
" = \"", 4);
2084 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2085 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2090 pm_buffer_concat(output_buffer, prefix_buffer);
2091 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
2092 pm_buffer_append_byte(output_buffer,
'\n');
2094 size_t prefix_length = prefix_buffer->length;
2095 pm_buffer_append_string(prefix_buffer,
"| ", 4);
2096 pm_buffer_concat(output_buffer, prefix_buffer);
2097 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
2098 prefix_buffer->length = prefix_length;
2103 pm_buffer_concat(output_buffer, prefix_buffer);
2104 pm_buffer_append_string(output_buffer,
"+-- binary_operator:", 20);
2105 pm_buffer_append_byte(output_buffer,
' ');
2107 pm_buffer_append_byte(output_buffer,
'\n');
2112 case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
2114 pm_buffer_append_string(output_buffer,
"@ ClassVariableOrWriteNode (location: ", 38);
2115 prettyprint_location(output_buffer, parser, &node->
location);
2116 pm_buffer_append_string(output_buffer,
")\n", 2);
2120 pm_buffer_concat(output_buffer, prefix_buffer);
2121 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
2122 pm_buffer_append_byte(output_buffer,
' ');
2123 prettyprint_constant(output_buffer, parser, cast->
name);
2124 pm_buffer_append_byte(output_buffer,
'\n');
2129 pm_buffer_concat(output_buffer, prefix_buffer);
2130 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
2132 pm_buffer_append_byte(output_buffer,
' ');
2133 prettyprint_location(output_buffer, parser, location);
2134 pm_buffer_append_string(output_buffer,
" = \"", 4);
2135 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2136 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2141 pm_buffer_concat(output_buffer, prefix_buffer);
2142 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
2144 pm_buffer_append_byte(output_buffer,
' ');
2145 prettyprint_location(output_buffer, parser, location);
2146 pm_buffer_append_string(output_buffer,
" = \"", 4);
2147 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2148 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2153 pm_buffer_concat(output_buffer, prefix_buffer);
2154 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
2155 pm_buffer_append_byte(output_buffer,
'\n');
2157 size_t prefix_length = prefix_buffer->length;
2158 pm_buffer_append_string(prefix_buffer,
" ", 4);
2159 pm_buffer_concat(output_buffer, prefix_buffer);
2160 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
2161 prefix_buffer->length = prefix_length;
2166 case PM_CLASS_VARIABLE_READ_NODE: {
2168 pm_buffer_append_string(output_buffer,
"@ ClassVariableReadNode (location: ", 35);
2169 prettyprint_location(output_buffer, parser, &node->
location);
2170 pm_buffer_append_string(output_buffer,
")\n", 2);
2174 pm_buffer_concat(output_buffer, prefix_buffer);
2175 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
2176 pm_buffer_append_byte(output_buffer,
' ');
2177 prettyprint_constant(output_buffer, parser, cast->
name);
2178 pm_buffer_append_byte(output_buffer,
'\n');
2183 case PM_CLASS_VARIABLE_TARGET_NODE: {
2185 pm_buffer_append_string(output_buffer,
"@ ClassVariableTargetNode (location: ", 37);
2186 prettyprint_location(output_buffer, parser, &node->
location);
2187 pm_buffer_append_string(output_buffer,
")\n", 2);
2191 pm_buffer_concat(output_buffer, prefix_buffer);
2192 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
2193 pm_buffer_append_byte(output_buffer,
' ');
2194 prettyprint_constant(output_buffer, parser, cast->
name);
2195 pm_buffer_append_byte(output_buffer,
'\n');
2200 case PM_CLASS_VARIABLE_WRITE_NODE: {
2202 pm_buffer_append_string(output_buffer,
"@ ClassVariableWriteNode (location: ", 36);
2203 prettyprint_location(output_buffer, parser, &node->
location);
2204 pm_buffer_append_string(output_buffer,
")\n", 2);
2208 pm_buffer_concat(output_buffer, prefix_buffer);
2209 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
2210 pm_buffer_append_byte(output_buffer,
' ');
2211 prettyprint_constant(output_buffer, parser, cast->
name);
2212 pm_buffer_append_byte(output_buffer,
'\n');
2217 pm_buffer_concat(output_buffer, prefix_buffer);
2218 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
2220 pm_buffer_append_byte(output_buffer,
' ');
2221 prettyprint_location(output_buffer, parser, location);
2222 pm_buffer_append_string(output_buffer,
" = \"", 4);
2223 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2224 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2229 pm_buffer_concat(output_buffer, prefix_buffer);
2230 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
2231 pm_buffer_append_byte(output_buffer,
'\n');
2233 size_t prefix_length = prefix_buffer->length;
2234 pm_buffer_append_string(prefix_buffer,
"| ", 4);
2235 pm_buffer_concat(output_buffer, prefix_buffer);
2236 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
2237 prefix_buffer->length = prefix_length;
2242 pm_buffer_concat(output_buffer, prefix_buffer);
2243 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
2245 pm_buffer_append_byte(output_buffer,
' ');
2246 prettyprint_location(output_buffer, parser, location);
2247 pm_buffer_append_string(output_buffer,
" = \"", 4);
2248 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2249 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2254 case PM_CONSTANT_AND_WRITE_NODE: {
2256 pm_buffer_append_string(output_buffer,
"@ ConstantAndWriteNode (location: ", 34);
2257 prettyprint_location(output_buffer, parser, &node->
location);
2258 pm_buffer_append_string(output_buffer,
")\n", 2);
2262 pm_buffer_concat(output_buffer, prefix_buffer);
2263 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
2264 pm_buffer_append_byte(output_buffer,
' ');
2265 prettyprint_constant(output_buffer, parser, cast->
name);
2266 pm_buffer_append_byte(output_buffer,
'\n');
2271 pm_buffer_concat(output_buffer, prefix_buffer);
2272 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
2274 pm_buffer_append_byte(output_buffer,
' ');
2275 prettyprint_location(output_buffer, parser, location);
2276 pm_buffer_append_string(output_buffer,
" = \"", 4);
2277 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2278 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2283 pm_buffer_concat(output_buffer, prefix_buffer);
2284 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
2286 pm_buffer_append_byte(output_buffer,
' ');
2287 prettyprint_location(output_buffer, parser, location);
2288 pm_buffer_append_string(output_buffer,
" = \"", 4);
2289 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2290 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2295 pm_buffer_concat(output_buffer, prefix_buffer);
2296 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
2297 pm_buffer_append_byte(output_buffer,
'\n');
2299 size_t prefix_length = prefix_buffer->length;
2300 pm_buffer_append_string(prefix_buffer,
" ", 4);
2301 pm_buffer_concat(output_buffer, prefix_buffer);
2302 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
2303 prefix_buffer->length = prefix_length;
2308 case PM_CONSTANT_OPERATOR_WRITE_NODE: {
2310 pm_buffer_append_string(output_buffer,
"@ ConstantOperatorWriteNode (location: ", 39);
2311 prettyprint_location(output_buffer, parser, &node->
location);
2312 pm_buffer_append_string(output_buffer,
")\n", 2);
2316 pm_buffer_concat(output_buffer, prefix_buffer);
2317 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
2318 pm_buffer_append_byte(output_buffer,
' ');
2319 prettyprint_constant(output_buffer, parser, cast->
name);
2320 pm_buffer_append_byte(output_buffer,
'\n');
2325 pm_buffer_concat(output_buffer, prefix_buffer);
2326 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
2328 pm_buffer_append_byte(output_buffer,
' ');
2329 prettyprint_location(output_buffer, parser, location);
2330 pm_buffer_append_string(output_buffer,
" = \"", 4);
2331 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2332 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2337 pm_buffer_concat(output_buffer, prefix_buffer);
2338 pm_buffer_append_string(output_buffer,
"+-- binary_operator_loc:", 24);
2340 pm_buffer_append_byte(output_buffer,
' ');
2341 prettyprint_location(output_buffer, parser, location);
2342 pm_buffer_append_string(output_buffer,
" = \"", 4);
2343 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2344 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2349 pm_buffer_concat(output_buffer, prefix_buffer);
2350 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
2351 pm_buffer_append_byte(output_buffer,
'\n');
2353 size_t prefix_length = prefix_buffer->length;
2354 pm_buffer_append_string(prefix_buffer,
"| ", 4);
2355 pm_buffer_concat(output_buffer, prefix_buffer);
2356 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
2357 prefix_buffer->length = prefix_length;
2362 pm_buffer_concat(output_buffer, prefix_buffer);
2363 pm_buffer_append_string(output_buffer,
"+-- binary_operator:", 20);
2364 pm_buffer_append_byte(output_buffer,
' ');
2366 pm_buffer_append_byte(output_buffer,
'\n');
2371 case PM_CONSTANT_OR_WRITE_NODE: {
2373 pm_buffer_append_string(output_buffer,
"@ ConstantOrWriteNode (location: ", 33);
2374 prettyprint_location(output_buffer, parser, &node->
location);
2375 pm_buffer_append_string(output_buffer,
")\n", 2);
2379 pm_buffer_concat(output_buffer, prefix_buffer);
2380 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
2381 pm_buffer_append_byte(output_buffer,
' ');
2382 prettyprint_constant(output_buffer, parser, cast->
name);
2383 pm_buffer_append_byte(output_buffer,
'\n');
2388 pm_buffer_concat(output_buffer, prefix_buffer);
2389 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
2391 pm_buffer_append_byte(output_buffer,
' ');
2392 prettyprint_location(output_buffer, parser, location);
2393 pm_buffer_append_string(output_buffer,
" = \"", 4);
2394 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2395 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2400 pm_buffer_concat(output_buffer, prefix_buffer);
2401 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
2403 pm_buffer_append_byte(output_buffer,
' ');
2404 prettyprint_location(output_buffer, parser, location);
2405 pm_buffer_append_string(output_buffer,
" = \"", 4);
2406 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2407 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2412 pm_buffer_concat(output_buffer, prefix_buffer);
2413 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
2414 pm_buffer_append_byte(output_buffer,
'\n');
2416 size_t prefix_length = prefix_buffer->length;
2417 pm_buffer_append_string(prefix_buffer,
" ", 4);
2418 pm_buffer_concat(output_buffer, prefix_buffer);
2419 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
2420 prefix_buffer->length = prefix_length;
2425 case PM_CONSTANT_PATH_AND_WRITE_NODE: {
2427 pm_buffer_append_string(output_buffer,
"@ ConstantPathAndWriteNode (location: ", 38);
2428 prettyprint_location(output_buffer, parser, &node->
location);
2429 pm_buffer_append_string(output_buffer,
")\n", 2);
2433 pm_buffer_concat(output_buffer, prefix_buffer);
2434 pm_buffer_append_string(output_buffer,
"+-- target:", 11);
2435 pm_buffer_append_byte(output_buffer,
'\n');
2437 size_t prefix_length = prefix_buffer->length;
2438 pm_buffer_append_string(prefix_buffer,
"| ", 4);
2439 pm_buffer_concat(output_buffer, prefix_buffer);
2440 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
target, prefix_buffer);
2441 prefix_buffer->length = prefix_length;
2446 pm_buffer_concat(output_buffer, prefix_buffer);
2447 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
2449 pm_buffer_append_byte(output_buffer,
' ');
2450 prettyprint_location(output_buffer, parser, location);
2451 pm_buffer_append_string(output_buffer,
" = \"", 4);
2452 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2453 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2458 pm_buffer_concat(output_buffer, prefix_buffer);
2459 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
2460 pm_buffer_append_byte(output_buffer,
'\n');
2462 size_t prefix_length = prefix_buffer->length;
2463 pm_buffer_append_string(prefix_buffer,
" ", 4);
2464 pm_buffer_concat(output_buffer, prefix_buffer);
2465 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
2466 prefix_buffer->length = prefix_length;
2471 case PM_CONSTANT_PATH_NODE: {
2473 pm_buffer_append_string(output_buffer,
"@ ConstantPathNode (location: ", 30);
2474 prettyprint_location(output_buffer, parser, &node->
location);
2475 pm_buffer_append_string(output_buffer,
")\n", 2);
2479 pm_buffer_concat(output_buffer, prefix_buffer);
2480 pm_buffer_append_string(output_buffer,
"+-- parent:", 11);
2481 if (cast->
parent == NULL) {
2482 pm_buffer_append_string(output_buffer,
" nil\n", 5);
2484 pm_buffer_append_byte(output_buffer,
'\n');
2486 size_t prefix_length = prefix_buffer->length;
2487 pm_buffer_append_string(prefix_buffer,
"| ", 4);
2488 pm_buffer_concat(output_buffer, prefix_buffer);
2489 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
parent, prefix_buffer);
2490 prefix_buffer->length = prefix_length;
2496 pm_buffer_concat(output_buffer, prefix_buffer);
2497 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
2498 if (cast->
name == 0) {
2499 pm_buffer_append_string(output_buffer,
" nil\n", 5);
2501 pm_buffer_append_byte(output_buffer,
' ');
2502 prettyprint_constant(output_buffer, parser, cast->
name);
2503 pm_buffer_append_byte(output_buffer,
'\n');
2509 pm_buffer_concat(output_buffer, prefix_buffer);
2510 pm_buffer_append_string(output_buffer,
"+-- delimiter_loc:", 18);
2512 pm_buffer_append_byte(output_buffer,
' ');
2513 prettyprint_location(output_buffer, parser, location);
2514 pm_buffer_append_string(output_buffer,
" = \"", 4);
2515 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2516 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2521 pm_buffer_concat(output_buffer, prefix_buffer);
2522 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
2524 pm_buffer_append_byte(output_buffer,
' ');
2525 prettyprint_location(output_buffer, parser, location);
2526 pm_buffer_append_string(output_buffer,
" = \"", 4);
2527 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2528 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2533 case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
2535 pm_buffer_append_string(output_buffer,
"@ ConstantPathOperatorWriteNode (location: ", 43);
2536 prettyprint_location(output_buffer, parser, &node->
location);
2537 pm_buffer_append_string(output_buffer,
")\n", 2);
2541 pm_buffer_concat(output_buffer, prefix_buffer);
2542 pm_buffer_append_string(output_buffer,
"+-- target:", 11);
2543 pm_buffer_append_byte(output_buffer,
'\n');
2545 size_t prefix_length = prefix_buffer->length;
2546 pm_buffer_append_string(prefix_buffer,
"| ", 4);
2547 pm_buffer_concat(output_buffer, prefix_buffer);
2548 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
target, prefix_buffer);
2549 prefix_buffer->length = prefix_length;
2554 pm_buffer_concat(output_buffer, prefix_buffer);
2555 pm_buffer_append_string(output_buffer,
"+-- binary_operator_loc:", 24);
2557 pm_buffer_append_byte(output_buffer,
' ');
2558 prettyprint_location(output_buffer, parser, location);
2559 pm_buffer_append_string(output_buffer,
" = \"", 4);
2560 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2561 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2566 pm_buffer_concat(output_buffer, prefix_buffer);
2567 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
2568 pm_buffer_append_byte(output_buffer,
'\n');
2570 size_t prefix_length = prefix_buffer->length;
2571 pm_buffer_append_string(prefix_buffer,
"| ", 4);
2572 pm_buffer_concat(output_buffer, prefix_buffer);
2573 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
2574 prefix_buffer->length = prefix_length;
2579 pm_buffer_concat(output_buffer, prefix_buffer);
2580 pm_buffer_append_string(output_buffer,
"+-- binary_operator:", 20);
2581 pm_buffer_append_byte(output_buffer,
' ');
2583 pm_buffer_append_byte(output_buffer,
'\n');
2588 case PM_CONSTANT_PATH_OR_WRITE_NODE: {
2590 pm_buffer_append_string(output_buffer,
"@ ConstantPathOrWriteNode (location: ", 37);
2591 prettyprint_location(output_buffer, parser, &node->
location);
2592 pm_buffer_append_string(output_buffer,
")\n", 2);
2596 pm_buffer_concat(output_buffer, prefix_buffer);
2597 pm_buffer_append_string(output_buffer,
"+-- target:", 11);
2598 pm_buffer_append_byte(output_buffer,
'\n');
2600 size_t prefix_length = prefix_buffer->length;
2601 pm_buffer_append_string(prefix_buffer,
"| ", 4);
2602 pm_buffer_concat(output_buffer, prefix_buffer);
2603 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
target, prefix_buffer);
2604 prefix_buffer->length = prefix_length;
2609 pm_buffer_concat(output_buffer, prefix_buffer);
2610 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
2612 pm_buffer_append_byte(output_buffer,
' ');
2613 prettyprint_location(output_buffer, parser, location);
2614 pm_buffer_append_string(output_buffer,
" = \"", 4);
2615 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2616 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2621 pm_buffer_concat(output_buffer, prefix_buffer);
2622 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
2623 pm_buffer_append_byte(output_buffer,
'\n');
2625 size_t prefix_length = prefix_buffer->length;
2626 pm_buffer_append_string(prefix_buffer,
" ", 4);
2627 pm_buffer_concat(output_buffer, prefix_buffer);
2628 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
2629 prefix_buffer->length = prefix_length;
2634 case PM_CONSTANT_PATH_TARGET_NODE: {
2636 pm_buffer_append_string(output_buffer,
"@ ConstantPathTargetNode (location: ", 36);
2637 prettyprint_location(output_buffer, parser, &node->
location);
2638 pm_buffer_append_string(output_buffer,
")\n", 2);
2642 pm_buffer_concat(output_buffer, prefix_buffer);
2643 pm_buffer_append_string(output_buffer,
"+-- parent:", 11);
2644 if (cast->
parent == NULL) {
2645 pm_buffer_append_string(output_buffer,
" nil\n", 5);
2647 pm_buffer_append_byte(output_buffer,
'\n');
2649 size_t prefix_length = prefix_buffer->length;
2650 pm_buffer_append_string(prefix_buffer,
"| ", 4);
2651 pm_buffer_concat(output_buffer, prefix_buffer);
2652 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
parent, prefix_buffer);
2653 prefix_buffer->length = prefix_length;
2659 pm_buffer_concat(output_buffer, prefix_buffer);
2660 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
2661 if (cast->
name == 0) {
2662 pm_buffer_append_string(output_buffer,
" nil\n", 5);
2664 pm_buffer_append_byte(output_buffer,
' ');
2665 prettyprint_constant(output_buffer, parser, cast->
name);
2666 pm_buffer_append_byte(output_buffer,
'\n');
2672 pm_buffer_concat(output_buffer, prefix_buffer);
2673 pm_buffer_append_string(output_buffer,
"+-- delimiter_loc:", 18);
2675 pm_buffer_append_byte(output_buffer,
' ');
2676 prettyprint_location(output_buffer, parser, location);
2677 pm_buffer_append_string(output_buffer,
" = \"", 4);
2678 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2679 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2684 pm_buffer_concat(output_buffer, prefix_buffer);
2685 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
2687 pm_buffer_append_byte(output_buffer,
' ');
2688 prettyprint_location(output_buffer, parser, location);
2689 pm_buffer_append_string(output_buffer,
" = \"", 4);
2690 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2691 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2696 case PM_CONSTANT_PATH_WRITE_NODE: {
2698 pm_buffer_append_string(output_buffer,
"@ ConstantPathWriteNode (location: ", 35);
2699 prettyprint_location(output_buffer, parser, &node->
location);
2700 pm_buffer_append_string(output_buffer,
")\n", 2);
2704 pm_buffer_concat(output_buffer, prefix_buffer);
2705 pm_buffer_append_string(output_buffer,
"+-- target:", 11);
2706 pm_buffer_append_byte(output_buffer,
'\n');
2708 size_t prefix_length = prefix_buffer->length;
2709 pm_buffer_append_string(prefix_buffer,
"| ", 4);
2710 pm_buffer_concat(output_buffer, prefix_buffer);
2711 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
target, prefix_buffer);
2712 prefix_buffer->length = prefix_length;
2717 pm_buffer_concat(output_buffer, prefix_buffer);
2718 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
2720 pm_buffer_append_byte(output_buffer,
' ');
2721 prettyprint_location(output_buffer, parser, location);
2722 pm_buffer_append_string(output_buffer,
" = \"", 4);
2723 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2724 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2729 pm_buffer_concat(output_buffer, prefix_buffer);
2730 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
2731 pm_buffer_append_byte(output_buffer,
'\n');
2733 size_t prefix_length = prefix_buffer->length;
2734 pm_buffer_append_string(prefix_buffer,
" ", 4);
2735 pm_buffer_concat(output_buffer, prefix_buffer);
2736 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
2737 prefix_buffer->length = prefix_length;
2742 case PM_CONSTANT_READ_NODE: {
2744 pm_buffer_append_string(output_buffer,
"@ ConstantReadNode (location: ", 30);
2745 prettyprint_location(output_buffer, parser, &node->
location);
2746 pm_buffer_append_string(output_buffer,
")\n", 2);
2750 pm_buffer_concat(output_buffer, prefix_buffer);
2751 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
2752 pm_buffer_append_byte(output_buffer,
' ');
2753 prettyprint_constant(output_buffer, parser, cast->
name);
2754 pm_buffer_append_byte(output_buffer,
'\n');
2759 case PM_CONSTANT_TARGET_NODE: {
2761 pm_buffer_append_string(output_buffer,
"@ ConstantTargetNode (location: ", 32);
2762 prettyprint_location(output_buffer, parser, &node->
location);
2763 pm_buffer_append_string(output_buffer,
")\n", 2);
2767 pm_buffer_concat(output_buffer, prefix_buffer);
2768 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
2769 pm_buffer_append_byte(output_buffer,
' ');
2770 prettyprint_constant(output_buffer, parser, cast->
name);
2771 pm_buffer_append_byte(output_buffer,
'\n');
2776 case PM_CONSTANT_WRITE_NODE: {
2778 pm_buffer_append_string(output_buffer,
"@ ConstantWriteNode (location: ", 31);
2779 prettyprint_location(output_buffer, parser, &node->
location);
2780 pm_buffer_append_string(output_buffer,
")\n", 2);
2784 pm_buffer_concat(output_buffer, prefix_buffer);
2785 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
2786 pm_buffer_append_byte(output_buffer,
' ');
2787 prettyprint_constant(output_buffer, parser, cast->
name);
2788 pm_buffer_append_byte(output_buffer,
'\n');
2793 pm_buffer_concat(output_buffer, prefix_buffer);
2794 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
2796 pm_buffer_append_byte(output_buffer,
' ');
2797 prettyprint_location(output_buffer, parser, location);
2798 pm_buffer_append_string(output_buffer,
" = \"", 4);
2799 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2800 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2805 pm_buffer_concat(output_buffer, prefix_buffer);
2806 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
2807 pm_buffer_append_byte(output_buffer,
'\n');
2809 size_t prefix_length = prefix_buffer->length;
2810 pm_buffer_append_string(prefix_buffer,
"| ", 4);
2811 pm_buffer_concat(output_buffer, prefix_buffer);
2812 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
2813 prefix_buffer->length = prefix_length;
2818 pm_buffer_concat(output_buffer, prefix_buffer);
2819 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
2821 pm_buffer_append_byte(output_buffer,
' ');
2822 prettyprint_location(output_buffer, parser, location);
2823 pm_buffer_append_string(output_buffer,
" = \"", 4);
2824 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2825 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2832 pm_buffer_append_string(output_buffer,
"@ DefNode (location: ", 21);
2833 prettyprint_location(output_buffer, parser, &node->
location);
2834 pm_buffer_append_string(output_buffer,
")\n", 2);
2838 pm_buffer_concat(output_buffer, prefix_buffer);
2839 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
2840 pm_buffer_append_byte(output_buffer,
' ');
2841 prettyprint_constant(output_buffer, parser, cast->
name);
2842 pm_buffer_append_byte(output_buffer,
'\n');
2847 pm_buffer_concat(output_buffer, prefix_buffer);
2848 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
2850 pm_buffer_append_byte(output_buffer,
' ');
2851 prettyprint_location(output_buffer, parser, location);
2852 pm_buffer_append_string(output_buffer,
" = \"", 4);
2853 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2854 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2859 pm_buffer_concat(output_buffer, prefix_buffer);
2860 pm_buffer_append_string(output_buffer,
"+-- receiver:", 13);
2862 pm_buffer_append_string(output_buffer,
" nil\n", 5);
2864 pm_buffer_append_byte(output_buffer,
'\n');
2866 size_t prefix_length = prefix_buffer->length;
2867 pm_buffer_append_string(prefix_buffer,
"| ", 4);
2868 pm_buffer_concat(output_buffer, prefix_buffer);
2869 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
2870 prefix_buffer->length = prefix_length;
2876 pm_buffer_concat(output_buffer, prefix_buffer);
2877 pm_buffer_append_string(output_buffer,
"+-- parameters:", 15);
2879 pm_buffer_append_string(output_buffer,
" nil\n", 5);
2881 pm_buffer_append_byte(output_buffer,
'\n');
2883 size_t prefix_length = prefix_buffer->length;
2884 pm_buffer_append_string(prefix_buffer,
"| ", 4);
2885 pm_buffer_concat(output_buffer, prefix_buffer);
2887 prefix_buffer->length = prefix_length;
2893 pm_buffer_concat(output_buffer, prefix_buffer);
2894 pm_buffer_append_string(output_buffer,
"+-- body:", 9);
2895 if (cast->
body == NULL) {
2896 pm_buffer_append_string(output_buffer,
" nil\n", 5);
2898 pm_buffer_append_byte(output_buffer,
'\n');
2900 size_t prefix_length = prefix_buffer->length;
2901 pm_buffer_append_string(prefix_buffer,
"| ", 4);
2902 pm_buffer_concat(output_buffer, prefix_buffer);
2903 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
body, prefix_buffer);
2904 prefix_buffer->length = prefix_length;
2910 pm_buffer_concat(output_buffer, prefix_buffer);
2911 pm_buffer_append_string(output_buffer,
"+-- locals:", 11);
2912 pm_buffer_append_string(output_buffer,
" [", 2);
2913 for (uint32_t index = 0; index < cast->
locals.
size; index++) {
2914 if (index != 0) pm_buffer_append_string(output_buffer,
", ", 2);
2915 prettyprint_constant(output_buffer, parser, cast->
locals.
ids[index]);
2917 pm_buffer_append_string(output_buffer,
"]\n", 2);
2922 pm_buffer_concat(output_buffer, prefix_buffer);
2923 pm_buffer_append_string(output_buffer,
"+-- def_keyword_loc:", 20);
2925 pm_buffer_append_byte(output_buffer,
' ');
2926 prettyprint_location(output_buffer, parser, location);
2927 pm_buffer_append_string(output_buffer,
" = \"", 4);
2928 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2929 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2934 pm_buffer_concat(output_buffer, prefix_buffer);
2935 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
2937 if (location->
length == 0) {
2938 pm_buffer_append_string(output_buffer,
" nil\n", 5);
2940 pm_buffer_append_byte(output_buffer,
' ');
2941 prettyprint_location(output_buffer, parser, location);
2942 pm_buffer_append_string(output_buffer,
" = \"", 4);
2943 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2944 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2950 pm_buffer_concat(output_buffer, prefix_buffer);
2951 pm_buffer_append_string(output_buffer,
"+-- lparen_loc:", 15);
2953 if (location->
length == 0) {
2954 pm_buffer_append_string(output_buffer,
" nil\n", 5);
2956 pm_buffer_append_byte(output_buffer,
' ');
2957 prettyprint_location(output_buffer, parser, location);
2958 pm_buffer_append_string(output_buffer,
" = \"", 4);
2959 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2960 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2966 pm_buffer_concat(output_buffer, prefix_buffer);
2967 pm_buffer_append_string(output_buffer,
"+-- rparen_loc:", 15);
2969 if (location->
length == 0) {
2970 pm_buffer_append_string(output_buffer,
" nil\n", 5);
2972 pm_buffer_append_byte(output_buffer,
' ');
2973 prettyprint_location(output_buffer, parser, location);
2974 pm_buffer_append_string(output_buffer,
" = \"", 4);
2975 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2976 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2982 pm_buffer_concat(output_buffer, prefix_buffer);
2983 pm_buffer_append_string(output_buffer,
"+-- equal_loc:", 14);
2985 if (location->
length == 0) {
2986 pm_buffer_append_string(output_buffer,
" nil\n", 5);
2988 pm_buffer_append_byte(output_buffer,
' ');
2989 prettyprint_location(output_buffer, parser, location);
2990 pm_buffer_append_string(output_buffer,
" = \"", 4);
2991 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
2992 pm_buffer_append_string(output_buffer,
"\"\n", 2);
2998 pm_buffer_concat(output_buffer, prefix_buffer);
2999 pm_buffer_append_string(output_buffer,
"+-- end_keyword_loc:", 20);
3001 if (location->
length == 0) {
3002 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3004 pm_buffer_append_byte(output_buffer,
' ');
3005 prettyprint_location(output_buffer, parser, location);
3006 pm_buffer_append_string(output_buffer,
" = \"", 4);
3007 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3008 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3014 case PM_DEFINED_NODE: {
3016 pm_buffer_append_string(output_buffer,
"@ DefinedNode (location: ", 25);
3017 prettyprint_location(output_buffer, parser, &node->
location);
3018 pm_buffer_append_string(output_buffer,
")\n", 2);
3022 pm_buffer_concat(output_buffer, prefix_buffer);
3023 pm_buffer_append_string(output_buffer,
"+-- lparen_loc:", 15);
3025 if (location->
length == 0) {
3026 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3028 pm_buffer_append_byte(output_buffer,
' ');
3029 prettyprint_location(output_buffer, parser, location);
3030 pm_buffer_append_string(output_buffer,
" = \"", 4);
3031 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3032 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3038 pm_buffer_concat(output_buffer, prefix_buffer);
3039 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
3040 pm_buffer_append_byte(output_buffer,
'\n');
3042 size_t prefix_length = prefix_buffer->length;
3043 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3044 pm_buffer_concat(output_buffer, prefix_buffer);
3045 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
3046 prefix_buffer->length = prefix_length;
3051 pm_buffer_concat(output_buffer, prefix_buffer);
3052 pm_buffer_append_string(output_buffer,
"+-- rparen_loc:", 15);
3054 if (location->
length == 0) {
3055 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3057 pm_buffer_append_byte(output_buffer,
' ');
3058 prettyprint_location(output_buffer, parser, location);
3059 pm_buffer_append_string(output_buffer,
" = \"", 4);
3060 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3061 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3067 pm_buffer_concat(output_buffer, prefix_buffer);
3068 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
3070 pm_buffer_append_byte(output_buffer,
' ');
3071 prettyprint_location(output_buffer, parser, location);
3072 pm_buffer_append_string(output_buffer,
" = \"", 4);
3073 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3074 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3079 case PM_ELSE_NODE: {
3081 pm_buffer_append_string(output_buffer,
"@ ElseNode (location: ", 22);
3082 prettyprint_location(output_buffer, parser, &node->
location);
3083 pm_buffer_append_string(output_buffer,
")\n", 2);
3087 pm_buffer_concat(output_buffer, prefix_buffer);
3088 pm_buffer_append_string(output_buffer,
"+-- else_keyword_loc:", 21);
3090 pm_buffer_append_byte(output_buffer,
' ');
3091 prettyprint_location(output_buffer, parser, location);
3092 pm_buffer_append_string(output_buffer,
" = \"", 4);
3093 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3094 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3099 pm_buffer_concat(output_buffer, prefix_buffer);
3100 pm_buffer_append_string(output_buffer,
"+-- statements:", 15);
3102 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3104 pm_buffer_append_byte(output_buffer,
'\n');
3106 size_t prefix_length = prefix_buffer->length;
3107 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3108 pm_buffer_concat(output_buffer, prefix_buffer);
3110 prefix_buffer->length = prefix_length;
3116 pm_buffer_concat(output_buffer, prefix_buffer);
3117 pm_buffer_append_string(output_buffer,
"+-- end_keyword_loc:", 20);
3119 if (location->
length == 0) {
3120 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3122 pm_buffer_append_byte(output_buffer,
' ');
3123 prettyprint_location(output_buffer, parser, location);
3124 pm_buffer_append_string(output_buffer,
" = \"", 4);
3125 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3126 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3132 case PM_EMBEDDED_STATEMENTS_NODE: {
3134 pm_buffer_append_string(output_buffer,
"@ EmbeddedStatementsNode (location: ", 36);
3135 prettyprint_location(output_buffer, parser, &node->
location);
3136 pm_buffer_append_string(output_buffer,
")\n", 2);
3140 pm_buffer_concat(output_buffer, prefix_buffer);
3141 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
3143 pm_buffer_append_byte(output_buffer,
' ');
3144 prettyprint_location(output_buffer, parser, location);
3145 pm_buffer_append_string(output_buffer,
" = \"", 4);
3146 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3147 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3152 pm_buffer_concat(output_buffer, prefix_buffer);
3153 pm_buffer_append_string(output_buffer,
"+-- statements:", 15);
3155 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3157 pm_buffer_append_byte(output_buffer,
'\n');
3159 size_t prefix_length = prefix_buffer->length;
3160 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3161 pm_buffer_concat(output_buffer, prefix_buffer);
3163 prefix_buffer->length = prefix_length;
3169 pm_buffer_concat(output_buffer, prefix_buffer);
3170 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
3172 pm_buffer_append_byte(output_buffer,
' ');
3173 prettyprint_location(output_buffer, parser, location);
3174 pm_buffer_append_string(output_buffer,
" = \"", 4);
3175 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3176 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3181 case PM_EMBEDDED_VARIABLE_NODE: {
3183 pm_buffer_append_string(output_buffer,
"@ EmbeddedVariableNode (location: ", 34);
3184 prettyprint_location(output_buffer, parser, &node->
location);
3185 pm_buffer_append_string(output_buffer,
")\n", 2);
3189 pm_buffer_concat(output_buffer, prefix_buffer);
3190 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
3192 pm_buffer_append_byte(output_buffer,
' ');
3193 prettyprint_location(output_buffer, parser, location);
3194 pm_buffer_append_string(output_buffer,
" = \"", 4);
3195 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3196 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3201 pm_buffer_concat(output_buffer, prefix_buffer);
3202 pm_buffer_append_string(output_buffer,
"+-- variable:", 13);
3203 pm_buffer_append_byte(output_buffer,
'\n');
3205 size_t prefix_length = prefix_buffer->length;
3206 pm_buffer_append_string(prefix_buffer,
" ", 4);
3207 pm_buffer_concat(output_buffer, prefix_buffer);
3208 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
variable, prefix_buffer);
3209 prefix_buffer->length = prefix_length;
3214 case PM_ENSURE_NODE: {
3216 pm_buffer_append_string(output_buffer,
"@ EnsureNode (location: ", 24);
3217 prettyprint_location(output_buffer, parser, &node->
location);
3218 pm_buffer_append_string(output_buffer,
")\n", 2);
3222 pm_buffer_concat(output_buffer, prefix_buffer);
3223 pm_buffer_append_string(output_buffer,
"+-- ensure_keyword_loc:", 23);
3225 pm_buffer_append_byte(output_buffer,
' ');
3226 prettyprint_location(output_buffer, parser, location);
3227 pm_buffer_append_string(output_buffer,
" = \"", 4);
3228 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3229 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3234 pm_buffer_concat(output_buffer, prefix_buffer);
3235 pm_buffer_append_string(output_buffer,
"+-- statements:", 15);
3237 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3239 pm_buffer_append_byte(output_buffer,
'\n');
3241 size_t prefix_length = prefix_buffer->length;
3242 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3243 pm_buffer_concat(output_buffer, prefix_buffer);
3245 prefix_buffer->length = prefix_length;
3251 pm_buffer_concat(output_buffer, prefix_buffer);
3252 pm_buffer_append_string(output_buffer,
"+-- end_keyword_loc:", 20);
3254 pm_buffer_append_byte(output_buffer,
' ');
3255 prettyprint_location(output_buffer, parser, location);
3256 pm_buffer_append_string(output_buffer,
" = \"", 4);
3257 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3258 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3263 case PM_ERROR_RECOVERY_NODE: {
3265 pm_buffer_append_string(output_buffer,
"@ ErrorRecoveryNode (location: ", 31);
3266 prettyprint_location(output_buffer, parser, &node->
location);
3267 pm_buffer_append_string(output_buffer,
")\n", 2);
3271 pm_buffer_concat(output_buffer, prefix_buffer);
3272 pm_buffer_append_string(output_buffer,
"+-- unexpected:", 15);
3274 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3276 pm_buffer_append_byte(output_buffer,
'\n');
3278 size_t prefix_length = prefix_buffer->length;
3279 pm_buffer_append_string(prefix_buffer,
" ", 4);
3280 pm_buffer_concat(output_buffer, prefix_buffer);
3282 prefix_buffer->length = prefix_length;
3288 case PM_FALSE_NODE: {
3289 pm_buffer_append_string(output_buffer,
"@ FalseNode (location: ", 23);
3290 prettyprint_location(output_buffer, parser, &node->
location);
3291 pm_buffer_append_string(output_buffer,
")\n", 2);
3295 case PM_FIND_PATTERN_NODE: {
3297 pm_buffer_append_string(output_buffer,
"@ FindPatternNode (location: ", 29);
3298 prettyprint_location(output_buffer, parser, &node->
location);
3299 pm_buffer_append_string(output_buffer,
")\n", 2);
3303 pm_buffer_concat(output_buffer, prefix_buffer);
3304 pm_buffer_append_string(output_buffer,
"+-- constant:", 13);
3306 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3308 pm_buffer_append_byte(output_buffer,
'\n');
3310 size_t prefix_length = prefix_buffer->length;
3311 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3312 pm_buffer_concat(output_buffer, prefix_buffer);
3313 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
constant, prefix_buffer);
3314 prefix_buffer->length = prefix_length;
3320 pm_buffer_concat(output_buffer, prefix_buffer);
3321 pm_buffer_append_string(output_buffer,
"+-- left:", 9);
3322 pm_buffer_append_byte(output_buffer,
'\n');
3324 size_t prefix_length = prefix_buffer->length;
3325 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3326 pm_buffer_concat(output_buffer, prefix_buffer);
3327 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
left, prefix_buffer);
3328 prefix_buffer->length = prefix_length;
3333 pm_buffer_concat(output_buffer, prefix_buffer);
3334 pm_buffer_append_string(output_buffer,
"+-- requireds:", 14);
3335 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
requireds.
size));
3338 for (uint32_t index = 0; index < last_index; index++) {
3339 size_t prefix_length = prefix_buffer->length;
3340 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3341 pm_buffer_concat(output_buffer, prefix_buffer);
3342 pm_buffer_append_string(output_buffer,
"+-- ", 4);
3343 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
3345 prefix_buffer->length = prefix_length;
3351 pm_buffer_concat(output_buffer, prefix_buffer);
3352 pm_buffer_append_string(output_buffer,
"+-- right:", 10);
3353 pm_buffer_append_byte(output_buffer,
'\n');
3355 size_t prefix_length = prefix_buffer->length;
3356 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3357 pm_buffer_concat(output_buffer, prefix_buffer);
3358 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
right, prefix_buffer);
3359 prefix_buffer->length = prefix_length;
3364 pm_buffer_concat(output_buffer, prefix_buffer);
3365 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
3367 if (location->
length == 0) {
3368 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3370 pm_buffer_append_byte(output_buffer,
' ');
3371 prettyprint_location(output_buffer, parser, location);
3372 pm_buffer_append_string(output_buffer,
" = \"", 4);
3373 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3374 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3380 pm_buffer_concat(output_buffer, prefix_buffer);
3381 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
3383 if (location->
length == 0) {
3384 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3386 pm_buffer_append_byte(output_buffer,
' ');
3387 prettyprint_location(output_buffer, parser, location);
3388 pm_buffer_append_string(output_buffer,
" = \"", 4);
3389 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3390 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3396 case PM_FLIP_FLOP_NODE: {
3398 pm_buffer_append_string(output_buffer,
"@ FlipFlopNode (location: ", 26);
3399 prettyprint_location(output_buffer, parser, &node->
location);
3400 pm_buffer_append_string(output_buffer,
")\n", 2);
3404 pm_buffer_concat(output_buffer, prefix_buffer);
3405 pm_buffer_append_string(output_buffer,
"+-- RangeFlags:", 15);
3407 if (cast->
base.
flags & PM_RANGE_FLAGS_EXCLUDE_END) {
3408 if (found) pm_buffer_append_byte(output_buffer,
',');
3409 pm_buffer_append_string(output_buffer,
" exclude_end", 12);
3412 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
3413 pm_buffer_append_byte(output_buffer,
'\n');
3418 pm_buffer_concat(output_buffer, prefix_buffer);
3419 pm_buffer_append_string(output_buffer,
"+-- left:", 9);
3420 if (cast->
left == NULL) {
3421 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3423 pm_buffer_append_byte(output_buffer,
'\n');
3425 size_t prefix_length = prefix_buffer->length;
3426 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3427 pm_buffer_concat(output_buffer, prefix_buffer);
3428 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
left, prefix_buffer);
3429 prefix_buffer->length = prefix_length;
3435 pm_buffer_concat(output_buffer, prefix_buffer);
3436 pm_buffer_append_string(output_buffer,
"+-- right:", 10);
3437 if (cast->
right == NULL) {
3438 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3440 pm_buffer_append_byte(output_buffer,
'\n');
3442 size_t prefix_length = prefix_buffer->length;
3443 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3444 pm_buffer_concat(output_buffer, prefix_buffer);
3445 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
right, prefix_buffer);
3446 prefix_buffer->length = prefix_length;
3452 pm_buffer_concat(output_buffer, prefix_buffer);
3453 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
3455 pm_buffer_append_byte(output_buffer,
' ');
3456 prettyprint_location(output_buffer, parser, location);
3457 pm_buffer_append_string(output_buffer,
" = \"", 4);
3458 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3459 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3464 case PM_FLOAT_NODE: {
3466 pm_buffer_append_string(output_buffer,
"@ FloatNode (location: ", 23);
3467 prettyprint_location(output_buffer, parser, &node->
location);
3468 pm_buffer_append_string(output_buffer,
")\n", 2);
3472 pm_buffer_concat(output_buffer, prefix_buffer);
3473 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
3474 pm_buffer_append_format(output_buffer,
" %f\n", cast->
value);
3481 pm_buffer_append_string(output_buffer,
"@ ForNode (location: ", 21);
3482 prettyprint_location(output_buffer, parser, &node->
location);
3483 pm_buffer_append_string(output_buffer,
")\n", 2);
3487 pm_buffer_concat(output_buffer, prefix_buffer);
3488 pm_buffer_append_string(output_buffer,
"+-- index:", 10);
3489 pm_buffer_append_byte(output_buffer,
'\n');
3491 size_t prefix_length = prefix_buffer->length;
3492 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3493 pm_buffer_concat(output_buffer, prefix_buffer);
3494 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
index, prefix_buffer);
3495 prefix_buffer->length = prefix_length;
3500 pm_buffer_concat(output_buffer, prefix_buffer);
3501 pm_buffer_append_string(output_buffer,
"+-- collection:", 15);
3502 pm_buffer_append_byte(output_buffer,
'\n');
3504 size_t prefix_length = prefix_buffer->length;
3505 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3506 pm_buffer_concat(output_buffer, prefix_buffer);
3508 prefix_buffer->length = prefix_length;
3513 pm_buffer_concat(output_buffer, prefix_buffer);
3514 pm_buffer_append_string(output_buffer,
"+-- statements:", 15);
3516 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3518 pm_buffer_append_byte(output_buffer,
'\n');
3520 size_t prefix_length = prefix_buffer->length;
3521 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3522 pm_buffer_concat(output_buffer, prefix_buffer);
3524 prefix_buffer->length = prefix_length;
3530 pm_buffer_concat(output_buffer, prefix_buffer);
3531 pm_buffer_append_string(output_buffer,
"+-- for_keyword_loc:", 20);
3533 pm_buffer_append_byte(output_buffer,
' ');
3534 prettyprint_location(output_buffer, parser, location);
3535 pm_buffer_append_string(output_buffer,
" = \"", 4);
3536 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3537 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3542 pm_buffer_concat(output_buffer, prefix_buffer);
3543 pm_buffer_append_string(output_buffer,
"+-- in_keyword_loc:", 19);
3545 pm_buffer_append_byte(output_buffer,
' ');
3546 prettyprint_location(output_buffer, parser, location);
3547 pm_buffer_append_string(output_buffer,
" = \"", 4);
3548 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3549 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3554 pm_buffer_concat(output_buffer, prefix_buffer);
3555 pm_buffer_append_string(output_buffer,
"+-- do_keyword_loc:", 19);
3557 if (location->
length == 0) {
3558 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3560 pm_buffer_append_byte(output_buffer,
' ');
3561 prettyprint_location(output_buffer, parser, location);
3562 pm_buffer_append_string(output_buffer,
" = \"", 4);
3563 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3564 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3570 pm_buffer_concat(output_buffer, prefix_buffer);
3571 pm_buffer_append_string(output_buffer,
"+-- end_keyword_loc:", 20);
3573 pm_buffer_append_byte(output_buffer,
' ');
3574 prettyprint_location(output_buffer, parser, location);
3575 pm_buffer_append_string(output_buffer,
" = \"", 4);
3576 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3577 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3582 case PM_FORWARDING_ARGUMENTS_NODE: {
3583 pm_buffer_append_string(output_buffer,
"@ ForwardingArgumentsNode (location: ", 37);
3584 prettyprint_location(output_buffer, parser, &node->
location);
3585 pm_buffer_append_string(output_buffer,
")\n", 2);
3589 case PM_FORWARDING_PARAMETER_NODE: {
3590 pm_buffer_append_string(output_buffer,
"@ ForwardingParameterNode (location: ", 37);
3591 prettyprint_location(output_buffer, parser, &node->
location);
3592 pm_buffer_append_string(output_buffer,
")\n", 2);
3596 case PM_FORWARDING_SUPER_NODE: {
3598 pm_buffer_append_string(output_buffer,
"@ ForwardingSuperNode (location: ", 33);
3599 prettyprint_location(output_buffer, parser, &node->
location);
3600 pm_buffer_append_string(output_buffer,
")\n", 2);
3604 pm_buffer_concat(output_buffer, prefix_buffer);
3605 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
3607 pm_buffer_append_byte(output_buffer,
' ');
3608 prettyprint_location(output_buffer, parser, location);
3609 pm_buffer_append_string(output_buffer,
" = \"", 4);
3610 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3611 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3616 pm_buffer_concat(output_buffer, prefix_buffer);
3617 pm_buffer_append_string(output_buffer,
"+-- block:", 10);
3618 if (cast->
block == NULL) {
3619 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3621 pm_buffer_append_byte(output_buffer,
'\n');
3623 size_t prefix_length = prefix_buffer->length;
3624 pm_buffer_append_string(prefix_buffer,
" ", 4);
3625 pm_buffer_concat(output_buffer, prefix_buffer);
3626 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
block, prefix_buffer);
3627 prefix_buffer->length = prefix_length;
3633 case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
3635 pm_buffer_append_string(output_buffer,
"@ GlobalVariableAndWriteNode (location: ", 40);
3636 prettyprint_location(output_buffer, parser, &node->
location);
3637 pm_buffer_append_string(output_buffer,
")\n", 2);
3641 pm_buffer_concat(output_buffer, prefix_buffer);
3642 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
3643 pm_buffer_append_byte(output_buffer,
' ');
3644 prettyprint_constant(output_buffer, parser, cast->
name);
3645 pm_buffer_append_byte(output_buffer,
'\n');
3650 pm_buffer_concat(output_buffer, prefix_buffer);
3651 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
3653 pm_buffer_append_byte(output_buffer,
' ');
3654 prettyprint_location(output_buffer, parser, location);
3655 pm_buffer_append_string(output_buffer,
" = \"", 4);
3656 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3657 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3662 pm_buffer_concat(output_buffer, prefix_buffer);
3663 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
3665 pm_buffer_append_byte(output_buffer,
' ');
3666 prettyprint_location(output_buffer, parser, location);
3667 pm_buffer_append_string(output_buffer,
" = \"", 4);
3668 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3669 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3674 pm_buffer_concat(output_buffer, prefix_buffer);
3675 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
3676 pm_buffer_append_byte(output_buffer,
'\n');
3678 size_t prefix_length = prefix_buffer->length;
3679 pm_buffer_append_string(prefix_buffer,
" ", 4);
3680 pm_buffer_concat(output_buffer, prefix_buffer);
3681 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
3682 prefix_buffer->length = prefix_length;
3687 case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
3689 pm_buffer_append_string(output_buffer,
"@ GlobalVariableOperatorWriteNode (location: ", 45);
3690 prettyprint_location(output_buffer, parser, &node->
location);
3691 pm_buffer_append_string(output_buffer,
")\n", 2);
3695 pm_buffer_concat(output_buffer, prefix_buffer);
3696 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
3697 pm_buffer_append_byte(output_buffer,
' ');
3698 prettyprint_constant(output_buffer, parser, cast->
name);
3699 pm_buffer_append_byte(output_buffer,
'\n');
3704 pm_buffer_concat(output_buffer, prefix_buffer);
3705 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
3707 pm_buffer_append_byte(output_buffer,
' ');
3708 prettyprint_location(output_buffer, parser, location);
3709 pm_buffer_append_string(output_buffer,
" = \"", 4);
3710 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3711 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3716 pm_buffer_concat(output_buffer, prefix_buffer);
3717 pm_buffer_append_string(output_buffer,
"+-- binary_operator_loc:", 24);
3719 pm_buffer_append_byte(output_buffer,
' ');
3720 prettyprint_location(output_buffer, parser, location);
3721 pm_buffer_append_string(output_buffer,
" = \"", 4);
3722 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3723 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3728 pm_buffer_concat(output_buffer, prefix_buffer);
3729 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
3730 pm_buffer_append_byte(output_buffer,
'\n');
3732 size_t prefix_length = prefix_buffer->length;
3733 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3734 pm_buffer_concat(output_buffer, prefix_buffer);
3735 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
3736 prefix_buffer->length = prefix_length;
3741 pm_buffer_concat(output_buffer, prefix_buffer);
3742 pm_buffer_append_string(output_buffer,
"+-- binary_operator:", 20);
3743 pm_buffer_append_byte(output_buffer,
' ');
3745 pm_buffer_append_byte(output_buffer,
'\n');
3750 case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
3752 pm_buffer_append_string(output_buffer,
"@ GlobalVariableOrWriteNode (location: ", 39);
3753 prettyprint_location(output_buffer, parser, &node->
location);
3754 pm_buffer_append_string(output_buffer,
")\n", 2);
3758 pm_buffer_concat(output_buffer, prefix_buffer);
3759 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
3760 pm_buffer_append_byte(output_buffer,
' ');
3761 prettyprint_constant(output_buffer, parser, cast->
name);
3762 pm_buffer_append_byte(output_buffer,
'\n');
3767 pm_buffer_concat(output_buffer, prefix_buffer);
3768 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
3770 pm_buffer_append_byte(output_buffer,
' ');
3771 prettyprint_location(output_buffer, parser, location);
3772 pm_buffer_append_string(output_buffer,
" = \"", 4);
3773 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3774 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3779 pm_buffer_concat(output_buffer, prefix_buffer);
3780 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
3782 pm_buffer_append_byte(output_buffer,
' ');
3783 prettyprint_location(output_buffer, parser, location);
3784 pm_buffer_append_string(output_buffer,
" = \"", 4);
3785 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3786 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3791 pm_buffer_concat(output_buffer, prefix_buffer);
3792 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
3793 pm_buffer_append_byte(output_buffer,
'\n');
3795 size_t prefix_length = prefix_buffer->length;
3796 pm_buffer_append_string(prefix_buffer,
" ", 4);
3797 pm_buffer_concat(output_buffer, prefix_buffer);
3798 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
3799 prefix_buffer->length = prefix_length;
3804 case PM_GLOBAL_VARIABLE_READ_NODE: {
3806 pm_buffer_append_string(output_buffer,
"@ GlobalVariableReadNode (location: ", 36);
3807 prettyprint_location(output_buffer, parser, &node->
location);
3808 pm_buffer_append_string(output_buffer,
")\n", 2);
3812 pm_buffer_concat(output_buffer, prefix_buffer);
3813 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
3814 pm_buffer_append_byte(output_buffer,
' ');
3815 prettyprint_constant(output_buffer, parser, cast->
name);
3816 pm_buffer_append_byte(output_buffer,
'\n');
3821 case PM_GLOBAL_VARIABLE_TARGET_NODE: {
3823 pm_buffer_append_string(output_buffer,
"@ GlobalVariableTargetNode (location: ", 38);
3824 prettyprint_location(output_buffer, parser, &node->
location);
3825 pm_buffer_append_string(output_buffer,
")\n", 2);
3829 pm_buffer_concat(output_buffer, prefix_buffer);
3830 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
3831 pm_buffer_append_byte(output_buffer,
' ');
3832 prettyprint_constant(output_buffer, parser, cast->
name);
3833 pm_buffer_append_byte(output_buffer,
'\n');
3838 case PM_GLOBAL_VARIABLE_WRITE_NODE: {
3840 pm_buffer_append_string(output_buffer,
"@ GlobalVariableWriteNode (location: ", 37);
3841 prettyprint_location(output_buffer, parser, &node->
location);
3842 pm_buffer_append_string(output_buffer,
")\n", 2);
3846 pm_buffer_concat(output_buffer, prefix_buffer);
3847 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
3848 pm_buffer_append_byte(output_buffer,
' ');
3849 prettyprint_constant(output_buffer, parser, cast->
name);
3850 pm_buffer_append_byte(output_buffer,
'\n');
3855 pm_buffer_concat(output_buffer, prefix_buffer);
3856 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
3858 pm_buffer_append_byte(output_buffer,
' ');
3859 prettyprint_location(output_buffer, parser, location);
3860 pm_buffer_append_string(output_buffer,
" = \"", 4);
3861 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3862 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3867 pm_buffer_concat(output_buffer, prefix_buffer);
3868 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
3869 pm_buffer_append_byte(output_buffer,
'\n');
3871 size_t prefix_length = prefix_buffer->length;
3872 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3873 pm_buffer_concat(output_buffer, prefix_buffer);
3874 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
3875 prefix_buffer->length = prefix_length;
3880 pm_buffer_concat(output_buffer, prefix_buffer);
3881 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
3883 pm_buffer_append_byte(output_buffer,
' ');
3884 prettyprint_location(output_buffer, parser, location);
3885 pm_buffer_append_string(output_buffer,
" = \"", 4);
3886 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3887 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3892 case PM_HASH_NODE: {
3894 pm_buffer_append_string(output_buffer,
"@ HashNode (location: ", 22);
3895 prettyprint_location(output_buffer, parser, &node->
location);
3896 pm_buffer_append_string(output_buffer,
")\n", 2);
3900 pm_buffer_concat(output_buffer, prefix_buffer);
3901 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
3903 pm_buffer_append_byte(output_buffer,
' ');
3904 prettyprint_location(output_buffer, parser, location);
3905 pm_buffer_append_string(output_buffer,
" = \"", 4);
3906 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3907 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3912 pm_buffer_concat(output_buffer, prefix_buffer);
3913 pm_buffer_append_string(output_buffer,
"+-- elements:", 13);
3914 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
elements.
size));
3917 for (uint32_t index = 0; index < last_index; index++) {
3918 size_t prefix_length = prefix_buffer->length;
3919 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3920 pm_buffer_concat(output_buffer, prefix_buffer);
3921 pm_buffer_append_string(output_buffer,
"+-- ", 4);
3922 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
3924 prefix_buffer->length = prefix_length;
3930 pm_buffer_concat(output_buffer, prefix_buffer);
3931 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
3933 pm_buffer_append_byte(output_buffer,
' ');
3934 prettyprint_location(output_buffer, parser, location);
3935 pm_buffer_append_string(output_buffer,
" = \"", 4);
3936 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
3937 pm_buffer_append_string(output_buffer,
"\"\n", 2);
3942 case PM_HASH_PATTERN_NODE: {
3944 pm_buffer_append_string(output_buffer,
"@ HashPatternNode (location: ", 29);
3945 prettyprint_location(output_buffer, parser, &node->
location);
3946 pm_buffer_append_string(output_buffer,
")\n", 2);
3950 pm_buffer_concat(output_buffer, prefix_buffer);
3951 pm_buffer_append_string(output_buffer,
"+-- constant:", 13);
3953 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3955 pm_buffer_append_byte(output_buffer,
'\n');
3957 size_t prefix_length = prefix_buffer->length;
3958 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3959 pm_buffer_concat(output_buffer, prefix_buffer);
3960 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
constant, prefix_buffer);
3961 prefix_buffer->length = prefix_length;
3967 pm_buffer_concat(output_buffer, prefix_buffer);
3968 pm_buffer_append_string(output_buffer,
"+-- elements:", 13);
3969 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
elements.
size));
3972 for (uint32_t index = 0; index < last_index; index++) {
3973 size_t prefix_length = prefix_buffer->length;
3974 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3975 pm_buffer_concat(output_buffer, prefix_buffer);
3976 pm_buffer_append_string(output_buffer,
"+-- ", 4);
3977 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
3979 prefix_buffer->length = prefix_length;
3985 pm_buffer_concat(output_buffer, prefix_buffer);
3986 pm_buffer_append_string(output_buffer,
"+-- rest:", 9);
3987 if (cast->
rest == NULL) {
3988 pm_buffer_append_string(output_buffer,
" nil\n", 5);
3990 pm_buffer_append_byte(output_buffer,
'\n');
3992 size_t prefix_length = prefix_buffer->length;
3993 pm_buffer_append_string(prefix_buffer,
"| ", 4);
3994 pm_buffer_concat(output_buffer, prefix_buffer);
3995 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
rest, prefix_buffer);
3996 prefix_buffer->length = prefix_length;
4002 pm_buffer_concat(output_buffer, prefix_buffer);
4003 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
4005 if (location->
length == 0) {
4006 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4008 pm_buffer_append_byte(output_buffer,
' ');
4009 prettyprint_location(output_buffer, parser, location);
4010 pm_buffer_append_string(output_buffer,
" = \"", 4);
4011 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4012 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4018 pm_buffer_concat(output_buffer, prefix_buffer);
4019 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
4021 if (location->
length == 0) {
4022 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4024 pm_buffer_append_byte(output_buffer,
' ');
4025 prettyprint_location(output_buffer, parser, location);
4026 pm_buffer_append_string(output_buffer,
" = \"", 4);
4027 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4028 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4036 pm_buffer_append_string(output_buffer,
"@ IfNode (location: ", 20);
4037 prettyprint_location(output_buffer, parser, &node->
location);
4038 pm_buffer_append_string(output_buffer,
")\n", 2);
4042 pm_buffer_concat(output_buffer, prefix_buffer);
4043 pm_buffer_append_string(output_buffer,
"+-- if_keyword_loc:", 19);
4045 if (location->
length == 0) {
4046 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4048 pm_buffer_append_byte(output_buffer,
' ');
4049 prettyprint_location(output_buffer, parser, location);
4050 pm_buffer_append_string(output_buffer,
" = \"", 4);
4051 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4052 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4058 pm_buffer_concat(output_buffer, prefix_buffer);
4059 pm_buffer_append_string(output_buffer,
"+-- predicate:", 14);
4060 pm_buffer_append_byte(output_buffer,
'\n');
4062 size_t prefix_length = prefix_buffer->length;
4063 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4064 pm_buffer_concat(output_buffer, prefix_buffer);
4065 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
predicate, prefix_buffer);
4066 prefix_buffer->length = prefix_length;
4071 pm_buffer_concat(output_buffer, prefix_buffer);
4072 pm_buffer_append_string(output_buffer,
"+-- then_keyword_loc:", 21);
4074 if (location->
length == 0) {
4075 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4077 pm_buffer_append_byte(output_buffer,
' ');
4078 prettyprint_location(output_buffer, parser, location);
4079 pm_buffer_append_string(output_buffer,
" = \"", 4);
4080 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4081 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4087 pm_buffer_concat(output_buffer, prefix_buffer);
4088 pm_buffer_append_string(output_buffer,
"+-- statements:", 15);
4090 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4092 pm_buffer_append_byte(output_buffer,
'\n');
4094 size_t prefix_length = prefix_buffer->length;
4095 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4096 pm_buffer_concat(output_buffer, prefix_buffer);
4098 prefix_buffer->length = prefix_length;
4104 pm_buffer_concat(output_buffer, prefix_buffer);
4105 pm_buffer_append_string(output_buffer,
"+-- subsequent:", 15);
4107 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4109 pm_buffer_append_byte(output_buffer,
'\n');
4111 size_t prefix_length = prefix_buffer->length;
4112 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4113 pm_buffer_concat(output_buffer, prefix_buffer);
4115 prefix_buffer->length = prefix_length;
4121 pm_buffer_concat(output_buffer, prefix_buffer);
4122 pm_buffer_append_string(output_buffer,
"+-- end_keyword_loc:", 20);
4124 if (location->
length == 0) {
4125 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4127 pm_buffer_append_byte(output_buffer,
' ');
4128 prettyprint_location(output_buffer, parser, location);
4129 pm_buffer_append_string(output_buffer,
" = \"", 4);
4130 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4131 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4137 case PM_IMAGINARY_NODE: {
4139 pm_buffer_append_string(output_buffer,
"@ ImaginaryNode (location: ", 27);
4140 prettyprint_location(output_buffer, parser, &node->
location);
4141 pm_buffer_append_string(output_buffer,
")\n", 2);
4145 pm_buffer_concat(output_buffer, prefix_buffer);
4146 pm_buffer_append_string(output_buffer,
"+-- numeric:", 12);
4147 pm_buffer_append_byte(output_buffer,
'\n');
4149 size_t prefix_length = prefix_buffer->length;
4150 pm_buffer_append_string(prefix_buffer,
" ", 4);
4151 pm_buffer_concat(output_buffer, prefix_buffer);
4152 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
numeric, prefix_buffer);
4153 prefix_buffer->length = prefix_length;
4158 case PM_IMPLICIT_NODE: {
4160 pm_buffer_append_string(output_buffer,
"@ ImplicitNode (location: ", 26);
4161 prettyprint_location(output_buffer, parser, &node->
location);
4162 pm_buffer_append_string(output_buffer,
")\n", 2);
4166 pm_buffer_concat(output_buffer, prefix_buffer);
4167 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
4168 pm_buffer_append_byte(output_buffer,
'\n');
4170 size_t prefix_length = prefix_buffer->length;
4171 pm_buffer_append_string(prefix_buffer,
" ", 4);
4172 pm_buffer_concat(output_buffer, prefix_buffer);
4173 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
4174 prefix_buffer->length = prefix_length;
4179 case PM_IMPLICIT_REST_NODE: {
4180 pm_buffer_append_string(output_buffer,
"@ ImplicitRestNode (location: ", 30);
4181 prettyprint_location(output_buffer, parser, &node->
location);
4182 pm_buffer_append_string(output_buffer,
")\n", 2);
4188 pm_buffer_append_string(output_buffer,
"@ InNode (location: ", 20);
4189 prettyprint_location(output_buffer, parser, &node->
location);
4190 pm_buffer_append_string(output_buffer,
")\n", 2);
4194 pm_buffer_concat(output_buffer, prefix_buffer);
4195 pm_buffer_append_string(output_buffer,
"+-- pattern:", 12);
4196 pm_buffer_append_byte(output_buffer,
'\n');
4198 size_t prefix_length = prefix_buffer->length;
4199 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4200 pm_buffer_concat(output_buffer, prefix_buffer);
4201 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
pattern, prefix_buffer);
4202 prefix_buffer->length = prefix_length;
4207 pm_buffer_concat(output_buffer, prefix_buffer);
4208 pm_buffer_append_string(output_buffer,
"+-- statements:", 15);
4210 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4212 pm_buffer_append_byte(output_buffer,
'\n');
4214 size_t prefix_length = prefix_buffer->length;
4215 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4216 pm_buffer_concat(output_buffer, prefix_buffer);
4218 prefix_buffer->length = prefix_length;
4224 pm_buffer_concat(output_buffer, prefix_buffer);
4225 pm_buffer_append_string(output_buffer,
"+-- in_keyword_loc:", 19);
4227 pm_buffer_append_byte(output_buffer,
' ');
4228 prettyprint_location(output_buffer, parser, location);
4229 pm_buffer_append_string(output_buffer,
" = \"", 4);
4230 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4231 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4236 pm_buffer_concat(output_buffer, prefix_buffer);
4237 pm_buffer_append_string(output_buffer,
"+-- then_keyword_loc:", 21);
4239 if (location->
length == 0) {
4240 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4242 pm_buffer_append_byte(output_buffer,
' ');
4243 prettyprint_location(output_buffer, parser, location);
4244 pm_buffer_append_string(output_buffer,
" = \"", 4);
4245 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4246 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4252 case PM_INDEX_AND_WRITE_NODE: {
4254 pm_buffer_append_string(output_buffer,
"@ IndexAndWriteNode (location: ", 31);
4255 prettyprint_location(output_buffer, parser, &node->
location);
4256 pm_buffer_append_string(output_buffer,
")\n", 2);
4260 pm_buffer_concat(output_buffer, prefix_buffer);
4261 pm_buffer_append_string(output_buffer,
"+-- CallNodeFlags:", 18);
4263 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
4264 if (found) pm_buffer_append_byte(output_buffer,
',');
4265 pm_buffer_append_string(output_buffer,
" safe_navigation", 16);
4268 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
4269 if (found) pm_buffer_append_byte(output_buffer,
',');
4270 pm_buffer_append_string(output_buffer,
" variable_call", 14);
4273 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
4274 if (found) pm_buffer_append_byte(output_buffer,
',');
4275 pm_buffer_append_string(output_buffer,
" attribute_write", 16);
4278 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
4279 if (found) pm_buffer_append_byte(output_buffer,
',');
4280 pm_buffer_append_string(output_buffer,
" ignore_visibility", 18);
4283 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
4284 pm_buffer_append_byte(output_buffer,
'\n');
4289 pm_buffer_concat(output_buffer, prefix_buffer);
4290 pm_buffer_append_string(output_buffer,
"+-- receiver:", 13);
4292 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4294 pm_buffer_append_byte(output_buffer,
'\n');
4296 size_t prefix_length = prefix_buffer->length;
4297 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4298 pm_buffer_concat(output_buffer, prefix_buffer);
4299 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
4300 prefix_buffer->length = prefix_length;
4306 pm_buffer_concat(output_buffer, prefix_buffer);
4307 pm_buffer_append_string(output_buffer,
"+-- call_operator_loc:", 22);
4309 if (location->
length == 0) {
4310 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4312 pm_buffer_append_byte(output_buffer,
' ');
4313 prettyprint_location(output_buffer, parser, location);
4314 pm_buffer_append_string(output_buffer,
" = \"", 4);
4315 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4316 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4322 pm_buffer_concat(output_buffer, prefix_buffer);
4323 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
4325 pm_buffer_append_byte(output_buffer,
' ');
4326 prettyprint_location(output_buffer, parser, location);
4327 pm_buffer_append_string(output_buffer,
" = \"", 4);
4328 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4329 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4334 pm_buffer_concat(output_buffer, prefix_buffer);
4335 pm_buffer_append_string(output_buffer,
"+-- arguments:", 14);
4337 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4339 pm_buffer_append_byte(output_buffer,
'\n');
4341 size_t prefix_length = prefix_buffer->length;
4342 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4343 pm_buffer_concat(output_buffer, prefix_buffer);
4344 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
4345 prefix_buffer->length = prefix_length;
4351 pm_buffer_concat(output_buffer, prefix_buffer);
4352 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
4354 pm_buffer_append_byte(output_buffer,
' ');
4355 prettyprint_location(output_buffer, parser, location);
4356 pm_buffer_append_string(output_buffer,
" = \"", 4);
4357 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4358 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4363 pm_buffer_concat(output_buffer, prefix_buffer);
4364 pm_buffer_append_string(output_buffer,
"+-- block:", 10);
4365 if (cast->
block == NULL) {
4366 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4368 pm_buffer_append_byte(output_buffer,
'\n');
4370 size_t prefix_length = prefix_buffer->length;
4371 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4372 pm_buffer_concat(output_buffer, prefix_buffer);
4373 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
block, prefix_buffer);
4374 prefix_buffer->length = prefix_length;
4380 pm_buffer_concat(output_buffer, prefix_buffer);
4381 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
4383 pm_buffer_append_byte(output_buffer,
' ');
4384 prettyprint_location(output_buffer, parser, location);
4385 pm_buffer_append_string(output_buffer,
" = \"", 4);
4386 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4387 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4392 pm_buffer_concat(output_buffer, prefix_buffer);
4393 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
4394 pm_buffer_append_byte(output_buffer,
'\n');
4396 size_t prefix_length = prefix_buffer->length;
4397 pm_buffer_append_string(prefix_buffer,
" ", 4);
4398 pm_buffer_concat(output_buffer, prefix_buffer);
4399 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
4400 prefix_buffer->length = prefix_length;
4405 case PM_INDEX_OPERATOR_WRITE_NODE: {
4407 pm_buffer_append_string(output_buffer,
"@ IndexOperatorWriteNode (location: ", 36);
4408 prettyprint_location(output_buffer, parser, &node->
location);
4409 pm_buffer_append_string(output_buffer,
")\n", 2);
4413 pm_buffer_concat(output_buffer, prefix_buffer);
4414 pm_buffer_append_string(output_buffer,
"+-- CallNodeFlags:", 18);
4416 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
4417 if (found) pm_buffer_append_byte(output_buffer,
',');
4418 pm_buffer_append_string(output_buffer,
" safe_navigation", 16);
4421 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
4422 if (found) pm_buffer_append_byte(output_buffer,
',');
4423 pm_buffer_append_string(output_buffer,
" variable_call", 14);
4426 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
4427 if (found) pm_buffer_append_byte(output_buffer,
',');
4428 pm_buffer_append_string(output_buffer,
" attribute_write", 16);
4431 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
4432 if (found) pm_buffer_append_byte(output_buffer,
',');
4433 pm_buffer_append_string(output_buffer,
" ignore_visibility", 18);
4436 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
4437 pm_buffer_append_byte(output_buffer,
'\n');
4442 pm_buffer_concat(output_buffer, prefix_buffer);
4443 pm_buffer_append_string(output_buffer,
"+-- receiver:", 13);
4445 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4447 pm_buffer_append_byte(output_buffer,
'\n');
4449 size_t prefix_length = prefix_buffer->length;
4450 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4451 pm_buffer_concat(output_buffer, prefix_buffer);
4452 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
4453 prefix_buffer->length = prefix_length;
4459 pm_buffer_concat(output_buffer, prefix_buffer);
4460 pm_buffer_append_string(output_buffer,
"+-- call_operator_loc:", 22);
4462 if (location->
length == 0) {
4463 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4465 pm_buffer_append_byte(output_buffer,
' ');
4466 prettyprint_location(output_buffer, parser, location);
4467 pm_buffer_append_string(output_buffer,
" = \"", 4);
4468 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4469 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4475 pm_buffer_concat(output_buffer, prefix_buffer);
4476 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
4478 pm_buffer_append_byte(output_buffer,
' ');
4479 prettyprint_location(output_buffer, parser, location);
4480 pm_buffer_append_string(output_buffer,
" = \"", 4);
4481 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4482 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4487 pm_buffer_concat(output_buffer, prefix_buffer);
4488 pm_buffer_append_string(output_buffer,
"+-- arguments:", 14);
4490 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4492 pm_buffer_append_byte(output_buffer,
'\n');
4494 size_t prefix_length = prefix_buffer->length;
4495 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4496 pm_buffer_concat(output_buffer, prefix_buffer);
4497 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
4498 prefix_buffer->length = prefix_length;
4504 pm_buffer_concat(output_buffer, prefix_buffer);
4505 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
4507 pm_buffer_append_byte(output_buffer,
' ');
4508 prettyprint_location(output_buffer, parser, location);
4509 pm_buffer_append_string(output_buffer,
" = \"", 4);
4510 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4511 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4516 pm_buffer_concat(output_buffer, prefix_buffer);
4517 pm_buffer_append_string(output_buffer,
"+-- block:", 10);
4518 if (cast->
block == NULL) {
4519 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4521 pm_buffer_append_byte(output_buffer,
'\n');
4523 size_t prefix_length = prefix_buffer->length;
4524 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4525 pm_buffer_concat(output_buffer, prefix_buffer);
4526 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
block, prefix_buffer);
4527 prefix_buffer->length = prefix_length;
4533 pm_buffer_concat(output_buffer, prefix_buffer);
4534 pm_buffer_append_string(output_buffer,
"+-- binary_operator:", 20);
4535 pm_buffer_append_byte(output_buffer,
' ');
4537 pm_buffer_append_byte(output_buffer,
'\n');
4542 pm_buffer_concat(output_buffer, prefix_buffer);
4543 pm_buffer_append_string(output_buffer,
"+-- binary_operator_loc:", 24);
4545 pm_buffer_append_byte(output_buffer,
' ');
4546 prettyprint_location(output_buffer, parser, location);
4547 pm_buffer_append_string(output_buffer,
" = \"", 4);
4548 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4549 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4554 pm_buffer_concat(output_buffer, prefix_buffer);
4555 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
4556 pm_buffer_append_byte(output_buffer,
'\n');
4558 size_t prefix_length = prefix_buffer->length;
4559 pm_buffer_append_string(prefix_buffer,
" ", 4);
4560 pm_buffer_concat(output_buffer, prefix_buffer);
4561 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
4562 prefix_buffer->length = prefix_length;
4567 case PM_INDEX_OR_WRITE_NODE: {
4569 pm_buffer_append_string(output_buffer,
"@ IndexOrWriteNode (location: ", 30);
4570 prettyprint_location(output_buffer, parser, &node->
location);
4571 pm_buffer_append_string(output_buffer,
")\n", 2);
4575 pm_buffer_concat(output_buffer, prefix_buffer);
4576 pm_buffer_append_string(output_buffer,
"+-- CallNodeFlags:", 18);
4578 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
4579 if (found) pm_buffer_append_byte(output_buffer,
',');
4580 pm_buffer_append_string(output_buffer,
" safe_navigation", 16);
4583 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
4584 if (found) pm_buffer_append_byte(output_buffer,
',');
4585 pm_buffer_append_string(output_buffer,
" variable_call", 14);
4588 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
4589 if (found) pm_buffer_append_byte(output_buffer,
',');
4590 pm_buffer_append_string(output_buffer,
" attribute_write", 16);
4593 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
4594 if (found) pm_buffer_append_byte(output_buffer,
',');
4595 pm_buffer_append_string(output_buffer,
" ignore_visibility", 18);
4598 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
4599 pm_buffer_append_byte(output_buffer,
'\n');
4604 pm_buffer_concat(output_buffer, prefix_buffer);
4605 pm_buffer_append_string(output_buffer,
"+-- receiver:", 13);
4607 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4609 pm_buffer_append_byte(output_buffer,
'\n');
4611 size_t prefix_length = prefix_buffer->length;
4612 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4613 pm_buffer_concat(output_buffer, prefix_buffer);
4614 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
4615 prefix_buffer->length = prefix_length;
4621 pm_buffer_concat(output_buffer, prefix_buffer);
4622 pm_buffer_append_string(output_buffer,
"+-- call_operator_loc:", 22);
4624 if (location->
length == 0) {
4625 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4627 pm_buffer_append_byte(output_buffer,
' ');
4628 prettyprint_location(output_buffer, parser, location);
4629 pm_buffer_append_string(output_buffer,
" = \"", 4);
4630 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4631 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4637 pm_buffer_concat(output_buffer, prefix_buffer);
4638 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
4640 pm_buffer_append_byte(output_buffer,
' ');
4641 prettyprint_location(output_buffer, parser, location);
4642 pm_buffer_append_string(output_buffer,
" = \"", 4);
4643 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4644 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4649 pm_buffer_concat(output_buffer, prefix_buffer);
4650 pm_buffer_append_string(output_buffer,
"+-- arguments:", 14);
4652 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4654 pm_buffer_append_byte(output_buffer,
'\n');
4656 size_t prefix_length = prefix_buffer->length;
4657 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4658 pm_buffer_concat(output_buffer, prefix_buffer);
4659 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
4660 prefix_buffer->length = prefix_length;
4666 pm_buffer_concat(output_buffer, prefix_buffer);
4667 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
4669 pm_buffer_append_byte(output_buffer,
' ');
4670 prettyprint_location(output_buffer, parser, location);
4671 pm_buffer_append_string(output_buffer,
" = \"", 4);
4672 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4673 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4678 pm_buffer_concat(output_buffer, prefix_buffer);
4679 pm_buffer_append_string(output_buffer,
"+-- block:", 10);
4680 if (cast->
block == NULL) {
4681 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4683 pm_buffer_append_byte(output_buffer,
'\n');
4685 size_t prefix_length = prefix_buffer->length;
4686 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4687 pm_buffer_concat(output_buffer, prefix_buffer);
4688 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
block, prefix_buffer);
4689 prefix_buffer->length = prefix_length;
4695 pm_buffer_concat(output_buffer, prefix_buffer);
4696 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
4698 pm_buffer_append_byte(output_buffer,
' ');
4699 prettyprint_location(output_buffer, parser, location);
4700 pm_buffer_append_string(output_buffer,
" = \"", 4);
4701 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4702 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4707 pm_buffer_concat(output_buffer, prefix_buffer);
4708 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
4709 pm_buffer_append_byte(output_buffer,
'\n');
4711 size_t prefix_length = prefix_buffer->length;
4712 pm_buffer_append_string(prefix_buffer,
" ", 4);
4713 pm_buffer_concat(output_buffer, prefix_buffer);
4714 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
4715 prefix_buffer->length = prefix_length;
4720 case PM_INDEX_TARGET_NODE: {
4722 pm_buffer_append_string(output_buffer,
"@ IndexTargetNode (location: ", 29);
4723 prettyprint_location(output_buffer, parser, &node->
location);
4724 pm_buffer_append_string(output_buffer,
")\n", 2);
4728 pm_buffer_concat(output_buffer, prefix_buffer);
4729 pm_buffer_append_string(output_buffer,
"+-- CallNodeFlags:", 18);
4731 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) {
4732 if (found) pm_buffer_append_byte(output_buffer,
',');
4733 pm_buffer_append_string(output_buffer,
" safe_navigation", 16);
4736 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_VARIABLE_CALL) {
4737 if (found) pm_buffer_append_byte(output_buffer,
',');
4738 pm_buffer_append_string(output_buffer,
" variable_call", 14);
4741 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE) {
4742 if (found) pm_buffer_append_byte(output_buffer,
',');
4743 pm_buffer_append_string(output_buffer,
" attribute_write", 16);
4746 if (cast->
base.
flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
4747 if (found) pm_buffer_append_byte(output_buffer,
',');
4748 pm_buffer_append_string(output_buffer,
" ignore_visibility", 18);
4751 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
4752 pm_buffer_append_byte(output_buffer,
'\n');
4757 pm_buffer_concat(output_buffer, prefix_buffer);
4758 pm_buffer_append_string(output_buffer,
"+-- receiver:", 13);
4759 pm_buffer_append_byte(output_buffer,
'\n');
4761 size_t prefix_length = prefix_buffer->length;
4762 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4763 pm_buffer_concat(output_buffer, prefix_buffer);
4764 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
receiver, prefix_buffer);
4765 prefix_buffer->length = prefix_length;
4770 pm_buffer_concat(output_buffer, prefix_buffer);
4771 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
4773 pm_buffer_append_byte(output_buffer,
' ');
4774 prettyprint_location(output_buffer, parser, location);
4775 pm_buffer_append_string(output_buffer,
" = \"", 4);
4776 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4777 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4782 pm_buffer_concat(output_buffer, prefix_buffer);
4783 pm_buffer_append_string(output_buffer,
"+-- arguments:", 14);
4785 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4787 pm_buffer_append_byte(output_buffer,
'\n');
4789 size_t prefix_length = prefix_buffer->length;
4790 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4791 pm_buffer_concat(output_buffer, prefix_buffer);
4792 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
4793 prefix_buffer->length = prefix_length;
4799 pm_buffer_concat(output_buffer, prefix_buffer);
4800 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
4802 pm_buffer_append_byte(output_buffer,
' ');
4803 prettyprint_location(output_buffer, parser, location);
4804 pm_buffer_append_string(output_buffer,
" = \"", 4);
4805 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4806 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4811 pm_buffer_concat(output_buffer, prefix_buffer);
4812 pm_buffer_append_string(output_buffer,
"+-- block:", 10);
4813 if (cast->
block == NULL) {
4814 pm_buffer_append_string(output_buffer,
" nil\n", 5);
4816 pm_buffer_append_byte(output_buffer,
'\n');
4818 size_t prefix_length = prefix_buffer->length;
4819 pm_buffer_append_string(prefix_buffer,
" ", 4);
4820 pm_buffer_concat(output_buffer, prefix_buffer);
4821 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
block, prefix_buffer);
4822 prefix_buffer->length = prefix_length;
4828 case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
4830 pm_buffer_append_string(output_buffer,
"@ InstanceVariableAndWriteNode (location: ", 42);
4831 prettyprint_location(output_buffer, parser, &node->
location);
4832 pm_buffer_append_string(output_buffer,
")\n", 2);
4836 pm_buffer_concat(output_buffer, prefix_buffer);
4837 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
4838 pm_buffer_append_byte(output_buffer,
' ');
4839 prettyprint_constant(output_buffer, parser, cast->
name);
4840 pm_buffer_append_byte(output_buffer,
'\n');
4845 pm_buffer_concat(output_buffer, prefix_buffer);
4846 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
4848 pm_buffer_append_byte(output_buffer,
' ');
4849 prettyprint_location(output_buffer, parser, location);
4850 pm_buffer_append_string(output_buffer,
" = \"", 4);
4851 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4852 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4857 pm_buffer_concat(output_buffer, prefix_buffer);
4858 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
4860 pm_buffer_append_byte(output_buffer,
' ');
4861 prettyprint_location(output_buffer, parser, location);
4862 pm_buffer_append_string(output_buffer,
" = \"", 4);
4863 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4864 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4869 pm_buffer_concat(output_buffer, prefix_buffer);
4870 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
4871 pm_buffer_append_byte(output_buffer,
'\n');
4873 size_t prefix_length = prefix_buffer->length;
4874 pm_buffer_append_string(prefix_buffer,
" ", 4);
4875 pm_buffer_concat(output_buffer, prefix_buffer);
4876 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
4877 prefix_buffer->length = prefix_length;
4882 case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
4884 pm_buffer_append_string(output_buffer,
"@ InstanceVariableOperatorWriteNode (location: ", 47);
4885 prettyprint_location(output_buffer, parser, &node->
location);
4886 pm_buffer_append_string(output_buffer,
")\n", 2);
4890 pm_buffer_concat(output_buffer, prefix_buffer);
4891 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
4892 pm_buffer_append_byte(output_buffer,
' ');
4893 prettyprint_constant(output_buffer, parser, cast->
name);
4894 pm_buffer_append_byte(output_buffer,
'\n');
4899 pm_buffer_concat(output_buffer, prefix_buffer);
4900 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
4902 pm_buffer_append_byte(output_buffer,
' ');
4903 prettyprint_location(output_buffer, parser, location);
4904 pm_buffer_append_string(output_buffer,
" = \"", 4);
4905 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4906 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4911 pm_buffer_concat(output_buffer, prefix_buffer);
4912 pm_buffer_append_string(output_buffer,
"+-- binary_operator_loc:", 24);
4914 pm_buffer_append_byte(output_buffer,
' ');
4915 prettyprint_location(output_buffer, parser, location);
4916 pm_buffer_append_string(output_buffer,
" = \"", 4);
4917 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4918 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4923 pm_buffer_concat(output_buffer, prefix_buffer);
4924 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
4925 pm_buffer_append_byte(output_buffer,
'\n');
4927 size_t prefix_length = prefix_buffer->length;
4928 pm_buffer_append_string(prefix_buffer,
"| ", 4);
4929 pm_buffer_concat(output_buffer, prefix_buffer);
4930 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
4931 prefix_buffer->length = prefix_length;
4936 pm_buffer_concat(output_buffer, prefix_buffer);
4937 pm_buffer_append_string(output_buffer,
"+-- binary_operator:", 20);
4938 pm_buffer_append_byte(output_buffer,
' ');
4940 pm_buffer_append_byte(output_buffer,
'\n');
4945 case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
4947 pm_buffer_append_string(output_buffer,
"@ InstanceVariableOrWriteNode (location: ", 41);
4948 prettyprint_location(output_buffer, parser, &node->
location);
4949 pm_buffer_append_string(output_buffer,
")\n", 2);
4953 pm_buffer_concat(output_buffer, prefix_buffer);
4954 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
4955 pm_buffer_append_byte(output_buffer,
' ');
4956 prettyprint_constant(output_buffer, parser, cast->
name);
4957 pm_buffer_append_byte(output_buffer,
'\n');
4962 pm_buffer_concat(output_buffer, prefix_buffer);
4963 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
4965 pm_buffer_append_byte(output_buffer,
' ');
4966 prettyprint_location(output_buffer, parser, location);
4967 pm_buffer_append_string(output_buffer,
" = \"", 4);
4968 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4969 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4974 pm_buffer_concat(output_buffer, prefix_buffer);
4975 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
4977 pm_buffer_append_byte(output_buffer,
' ');
4978 prettyprint_location(output_buffer, parser, location);
4979 pm_buffer_append_string(output_buffer,
" = \"", 4);
4980 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
4981 pm_buffer_append_string(output_buffer,
"\"\n", 2);
4986 pm_buffer_concat(output_buffer, prefix_buffer);
4987 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
4988 pm_buffer_append_byte(output_buffer,
'\n');
4990 size_t prefix_length = prefix_buffer->length;
4991 pm_buffer_append_string(prefix_buffer,
" ", 4);
4992 pm_buffer_concat(output_buffer, prefix_buffer);
4993 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
4994 prefix_buffer->length = prefix_length;
4999 case PM_INSTANCE_VARIABLE_READ_NODE: {
5001 pm_buffer_append_string(output_buffer,
"@ InstanceVariableReadNode (location: ", 38);
5002 prettyprint_location(output_buffer, parser, &node->
location);
5003 pm_buffer_append_string(output_buffer,
")\n", 2);
5007 pm_buffer_concat(output_buffer, prefix_buffer);
5008 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
5009 pm_buffer_append_byte(output_buffer,
' ');
5010 prettyprint_constant(output_buffer, parser, cast->
name);
5011 pm_buffer_append_byte(output_buffer,
'\n');
5016 case PM_INSTANCE_VARIABLE_TARGET_NODE: {
5018 pm_buffer_append_string(output_buffer,
"@ InstanceVariableTargetNode (location: ", 40);
5019 prettyprint_location(output_buffer, parser, &node->
location);
5020 pm_buffer_append_string(output_buffer,
")\n", 2);
5024 pm_buffer_concat(output_buffer, prefix_buffer);
5025 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
5026 pm_buffer_append_byte(output_buffer,
' ');
5027 prettyprint_constant(output_buffer, parser, cast->
name);
5028 pm_buffer_append_byte(output_buffer,
'\n');
5033 case PM_INSTANCE_VARIABLE_WRITE_NODE: {
5035 pm_buffer_append_string(output_buffer,
"@ InstanceVariableWriteNode (location: ", 39);
5036 prettyprint_location(output_buffer, parser, &node->
location);
5037 pm_buffer_append_string(output_buffer,
")\n", 2);
5041 pm_buffer_concat(output_buffer, prefix_buffer);
5042 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
5043 pm_buffer_append_byte(output_buffer,
' ');
5044 prettyprint_constant(output_buffer, parser, cast->
name);
5045 pm_buffer_append_byte(output_buffer,
'\n');
5050 pm_buffer_concat(output_buffer, prefix_buffer);
5051 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
5053 pm_buffer_append_byte(output_buffer,
' ');
5054 prettyprint_location(output_buffer, parser, location);
5055 pm_buffer_append_string(output_buffer,
" = \"", 4);
5056 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5057 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5062 pm_buffer_concat(output_buffer, prefix_buffer);
5063 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
5064 pm_buffer_append_byte(output_buffer,
'\n');
5066 size_t prefix_length = prefix_buffer->length;
5067 pm_buffer_append_string(prefix_buffer,
"| ", 4);
5068 pm_buffer_concat(output_buffer, prefix_buffer);
5069 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
5070 prefix_buffer->length = prefix_length;
5075 pm_buffer_concat(output_buffer, prefix_buffer);
5076 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
5078 pm_buffer_append_byte(output_buffer,
' ');
5079 prettyprint_location(output_buffer, parser, location);
5080 pm_buffer_append_string(output_buffer,
" = \"", 4);
5081 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5082 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5087 case PM_INTEGER_NODE: {
5089 pm_buffer_append_string(output_buffer,
"@ IntegerNode (location: ", 25);
5090 prettyprint_location(output_buffer, parser, &node->
location);
5091 pm_buffer_append_string(output_buffer,
")\n", 2);
5095 pm_buffer_concat(output_buffer, prefix_buffer);
5096 pm_buffer_append_string(output_buffer,
"+-- IntegerBaseFlags:", 21);
5098 if (cast->
base.
flags & PM_INTEGER_BASE_FLAGS_BINARY) {
5099 if (found) pm_buffer_append_byte(output_buffer,
',');
5100 pm_buffer_append_string(output_buffer,
" binary", 7);
5103 if (cast->
base.
flags & PM_INTEGER_BASE_FLAGS_DECIMAL) {
5104 if (found) pm_buffer_append_byte(output_buffer,
',');
5105 pm_buffer_append_string(output_buffer,
" decimal", 8);
5108 if (cast->
base.
flags & PM_INTEGER_BASE_FLAGS_OCTAL) {
5109 if (found) pm_buffer_append_byte(output_buffer,
',');
5110 pm_buffer_append_string(output_buffer,
" octal", 6);
5113 if (cast->
base.
flags & PM_INTEGER_BASE_FLAGS_HEXADECIMAL) {
5114 if (found) pm_buffer_append_byte(output_buffer,
',');
5115 pm_buffer_append_string(output_buffer,
" hexadecimal", 12);
5118 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
5119 pm_buffer_append_byte(output_buffer,
'\n');
5124 pm_buffer_concat(output_buffer, prefix_buffer);
5125 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
5127 pm_buffer_append_byte(output_buffer,
' ');
5128 pm_integer_string(output_buffer, integer);
5129 pm_buffer_append_byte(output_buffer,
'\n');
5134 case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
5136 pm_buffer_append_string(output_buffer,
"@ InterpolatedMatchLastLineNode (location: ", 43);
5137 prettyprint_location(output_buffer, parser, &node->
location);
5138 pm_buffer_append_string(output_buffer,
")\n", 2);
5142 pm_buffer_concat(output_buffer, prefix_buffer);
5143 pm_buffer_append_string(output_buffer,
"+-- RegularExpressionFlags:", 27);
5145 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE) {
5146 if (found) pm_buffer_append_byte(output_buffer,
',');
5147 pm_buffer_append_string(output_buffer,
" ignore_case", 12);
5150 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_EXTENDED) {
5151 if (found) pm_buffer_append_byte(output_buffer,
',');
5152 pm_buffer_append_string(output_buffer,
" extended", 9);
5155 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE) {
5156 if (found) pm_buffer_append_byte(output_buffer,
',');
5157 pm_buffer_append_string(output_buffer,
" multi_line", 11);
5160 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_ONCE) {
5161 if (found) pm_buffer_append_byte(output_buffer,
',');
5162 pm_buffer_append_string(output_buffer,
" once", 5);
5165 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_EUC_JP) {
5166 if (found) pm_buffer_append_byte(output_buffer,
',');
5167 pm_buffer_append_string(output_buffer,
" euc_jp", 7);
5170 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT) {
5171 if (found) pm_buffer_append_byte(output_buffer,
',');
5172 pm_buffer_append_string(output_buffer,
" ascii_8bit", 11);
5175 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J) {
5176 if (found) pm_buffer_append_byte(output_buffer,
',');
5177 pm_buffer_append_string(output_buffer,
" windows_31j", 12);
5180 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_UTF_8) {
5181 if (found) pm_buffer_append_byte(output_buffer,
',');
5182 pm_buffer_append_string(output_buffer,
" utf_8", 6);
5185 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING) {
5186 if (found) pm_buffer_append_byte(output_buffer,
',');
5187 pm_buffer_append_string(output_buffer,
" forced_utf8_encoding", 21);
5190 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING) {
5191 if (found) pm_buffer_append_byte(output_buffer,
',');
5192 pm_buffer_append_string(output_buffer,
" forced_binary_encoding", 23);
5195 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING) {
5196 if (found) pm_buffer_append_byte(output_buffer,
',');
5197 pm_buffer_append_string(output_buffer,
" forced_us_ascii_encoding", 25);
5200 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
5201 pm_buffer_append_byte(output_buffer,
'\n');
5206 pm_buffer_concat(output_buffer, prefix_buffer);
5207 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
5209 pm_buffer_append_byte(output_buffer,
' ');
5210 prettyprint_location(output_buffer, parser, location);
5211 pm_buffer_append_string(output_buffer,
" = \"", 4);
5212 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5213 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5218 pm_buffer_concat(output_buffer, prefix_buffer);
5219 pm_buffer_append_string(output_buffer,
"+-- parts:", 10);
5220 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
parts.
size));
5223 for (uint32_t index = 0; index < last_index; index++) {
5224 size_t prefix_length = prefix_buffer->length;
5225 pm_buffer_append_string(prefix_buffer,
"| ", 4);
5226 pm_buffer_concat(output_buffer, prefix_buffer);
5227 pm_buffer_append_string(output_buffer,
"+-- ", 4);
5228 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
5229 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
parts.
nodes[index], prefix_buffer);
5230 prefix_buffer->length = prefix_length;
5236 pm_buffer_concat(output_buffer, prefix_buffer);
5237 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
5239 pm_buffer_append_byte(output_buffer,
' ');
5240 prettyprint_location(output_buffer, parser, location);
5241 pm_buffer_append_string(output_buffer,
" = \"", 4);
5242 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5243 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5248 case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
5250 pm_buffer_append_string(output_buffer,
"@ InterpolatedRegularExpressionNode (location: ", 47);
5251 prettyprint_location(output_buffer, parser, &node->
location);
5252 pm_buffer_append_string(output_buffer,
")\n", 2);
5256 pm_buffer_concat(output_buffer, prefix_buffer);
5257 pm_buffer_append_string(output_buffer,
"+-- RegularExpressionFlags:", 27);
5259 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE) {
5260 if (found) pm_buffer_append_byte(output_buffer,
',');
5261 pm_buffer_append_string(output_buffer,
" ignore_case", 12);
5264 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_EXTENDED) {
5265 if (found) pm_buffer_append_byte(output_buffer,
',');
5266 pm_buffer_append_string(output_buffer,
" extended", 9);
5269 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE) {
5270 if (found) pm_buffer_append_byte(output_buffer,
',');
5271 pm_buffer_append_string(output_buffer,
" multi_line", 11);
5274 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_ONCE) {
5275 if (found) pm_buffer_append_byte(output_buffer,
',');
5276 pm_buffer_append_string(output_buffer,
" once", 5);
5279 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_EUC_JP) {
5280 if (found) pm_buffer_append_byte(output_buffer,
',');
5281 pm_buffer_append_string(output_buffer,
" euc_jp", 7);
5284 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT) {
5285 if (found) pm_buffer_append_byte(output_buffer,
',');
5286 pm_buffer_append_string(output_buffer,
" ascii_8bit", 11);
5289 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J) {
5290 if (found) pm_buffer_append_byte(output_buffer,
',');
5291 pm_buffer_append_string(output_buffer,
" windows_31j", 12);
5294 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_UTF_8) {
5295 if (found) pm_buffer_append_byte(output_buffer,
',');
5296 pm_buffer_append_string(output_buffer,
" utf_8", 6);
5299 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING) {
5300 if (found) pm_buffer_append_byte(output_buffer,
',');
5301 pm_buffer_append_string(output_buffer,
" forced_utf8_encoding", 21);
5304 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING) {
5305 if (found) pm_buffer_append_byte(output_buffer,
',');
5306 pm_buffer_append_string(output_buffer,
" forced_binary_encoding", 23);
5309 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING) {
5310 if (found) pm_buffer_append_byte(output_buffer,
',');
5311 pm_buffer_append_string(output_buffer,
" forced_us_ascii_encoding", 25);
5314 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
5315 pm_buffer_append_byte(output_buffer,
'\n');
5320 pm_buffer_concat(output_buffer, prefix_buffer);
5321 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
5323 pm_buffer_append_byte(output_buffer,
' ');
5324 prettyprint_location(output_buffer, parser, location);
5325 pm_buffer_append_string(output_buffer,
" = \"", 4);
5326 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5327 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5332 pm_buffer_concat(output_buffer, prefix_buffer);
5333 pm_buffer_append_string(output_buffer,
"+-- parts:", 10);
5334 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
parts.
size));
5337 for (uint32_t index = 0; index < last_index; index++) {
5338 size_t prefix_length = prefix_buffer->length;
5339 pm_buffer_append_string(prefix_buffer,
"| ", 4);
5340 pm_buffer_concat(output_buffer, prefix_buffer);
5341 pm_buffer_append_string(output_buffer,
"+-- ", 4);
5342 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
5343 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
parts.
nodes[index], prefix_buffer);
5344 prefix_buffer->length = prefix_length;
5350 pm_buffer_concat(output_buffer, prefix_buffer);
5351 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
5353 pm_buffer_append_byte(output_buffer,
' ');
5354 prettyprint_location(output_buffer, parser, location);
5355 pm_buffer_append_string(output_buffer,
" = \"", 4);
5356 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5357 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5362 case PM_INTERPOLATED_STRING_NODE: {
5364 pm_buffer_append_string(output_buffer,
"@ InterpolatedStringNode (location: ", 36);
5365 prettyprint_location(output_buffer, parser, &node->
location);
5366 pm_buffer_append_string(output_buffer,
")\n", 2);
5370 pm_buffer_concat(output_buffer, prefix_buffer);
5371 pm_buffer_append_string(output_buffer,
"+-- InterpolatedStringNodeFlags:", 32);
5373 if (cast->
base.
flags & PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN) {
5374 if (found) pm_buffer_append_byte(output_buffer,
',');
5375 pm_buffer_append_string(output_buffer,
" frozen", 7);
5378 if (cast->
base.
flags & PM_INTERPOLATED_STRING_NODE_FLAGS_MUTABLE) {
5379 if (found) pm_buffer_append_byte(output_buffer,
',');
5380 pm_buffer_append_string(output_buffer,
" mutable", 8);
5383 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
5384 pm_buffer_append_byte(output_buffer,
'\n');
5389 pm_buffer_concat(output_buffer, prefix_buffer);
5390 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
5392 if (location->
length == 0) {
5393 pm_buffer_append_string(output_buffer,
" nil\n", 5);
5395 pm_buffer_append_byte(output_buffer,
' ');
5396 prettyprint_location(output_buffer, parser, location);
5397 pm_buffer_append_string(output_buffer,
" = \"", 4);
5398 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5399 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5405 pm_buffer_concat(output_buffer, prefix_buffer);
5406 pm_buffer_append_string(output_buffer,
"+-- parts:", 10);
5407 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
parts.
size));
5410 for (uint32_t index = 0; index < last_index; index++) {
5411 size_t prefix_length = prefix_buffer->length;
5412 pm_buffer_append_string(prefix_buffer,
"| ", 4);
5413 pm_buffer_concat(output_buffer, prefix_buffer);
5414 pm_buffer_append_string(output_buffer,
"+-- ", 4);
5415 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
5416 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
parts.
nodes[index], prefix_buffer);
5417 prefix_buffer->length = prefix_length;
5423 pm_buffer_concat(output_buffer, prefix_buffer);
5424 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
5426 if (location->
length == 0) {
5427 pm_buffer_append_string(output_buffer,
" nil\n", 5);
5429 pm_buffer_append_byte(output_buffer,
' ');
5430 prettyprint_location(output_buffer, parser, location);
5431 pm_buffer_append_string(output_buffer,
" = \"", 4);
5432 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5433 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5439 case PM_INTERPOLATED_SYMBOL_NODE: {
5441 pm_buffer_append_string(output_buffer,
"@ InterpolatedSymbolNode (location: ", 36);
5442 prettyprint_location(output_buffer, parser, &node->
location);
5443 pm_buffer_append_string(output_buffer,
")\n", 2);
5447 pm_buffer_concat(output_buffer, prefix_buffer);
5448 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
5450 if (location->
length == 0) {
5451 pm_buffer_append_string(output_buffer,
" nil\n", 5);
5453 pm_buffer_append_byte(output_buffer,
' ');
5454 prettyprint_location(output_buffer, parser, location);
5455 pm_buffer_append_string(output_buffer,
" = \"", 4);
5456 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5457 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5463 pm_buffer_concat(output_buffer, prefix_buffer);
5464 pm_buffer_append_string(output_buffer,
"+-- parts:", 10);
5465 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
parts.
size));
5468 for (uint32_t index = 0; index < last_index; index++) {
5469 size_t prefix_length = prefix_buffer->length;
5470 pm_buffer_append_string(prefix_buffer,
"| ", 4);
5471 pm_buffer_concat(output_buffer, prefix_buffer);
5472 pm_buffer_append_string(output_buffer,
"+-- ", 4);
5473 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
5474 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
parts.
nodes[index], prefix_buffer);
5475 prefix_buffer->length = prefix_length;
5481 pm_buffer_concat(output_buffer, prefix_buffer);
5482 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
5484 if (location->
length == 0) {
5485 pm_buffer_append_string(output_buffer,
" nil\n", 5);
5487 pm_buffer_append_byte(output_buffer,
' ');
5488 prettyprint_location(output_buffer, parser, location);
5489 pm_buffer_append_string(output_buffer,
" = \"", 4);
5490 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5491 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5497 case PM_INTERPOLATED_X_STRING_NODE: {
5499 pm_buffer_append_string(output_buffer,
"@ InterpolatedXStringNode (location: ", 37);
5500 prettyprint_location(output_buffer, parser, &node->
location);
5501 pm_buffer_append_string(output_buffer,
")\n", 2);
5505 pm_buffer_concat(output_buffer, prefix_buffer);
5506 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
5508 pm_buffer_append_byte(output_buffer,
' ');
5509 prettyprint_location(output_buffer, parser, location);
5510 pm_buffer_append_string(output_buffer,
" = \"", 4);
5511 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5512 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5517 pm_buffer_concat(output_buffer, prefix_buffer);
5518 pm_buffer_append_string(output_buffer,
"+-- parts:", 10);
5519 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
parts.
size));
5522 for (uint32_t index = 0; index < last_index; index++) {
5523 size_t prefix_length = prefix_buffer->length;
5524 pm_buffer_append_string(prefix_buffer,
"| ", 4);
5525 pm_buffer_concat(output_buffer, prefix_buffer);
5526 pm_buffer_append_string(output_buffer,
"+-- ", 4);
5527 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
5528 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
parts.
nodes[index], prefix_buffer);
5529 prefix_buffer->length = prefix_length;
5535 pm_buffer_concat(output_buffer, prefix_buffer);
5536 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
5538 pm_buffer_append_byte(output_buffer,
' ');
5539 prettyprint_location(output_buffer, parser, location);
5540 pm_buffer_append_string(output_buffer,
" = \"", 4);
5541 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5542 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5547 case PM_IT_LOCAL_VARIABLE_READ_NODE: {
5548 pm_buffer_append_string(output_buffer,
"@ ItLocalVariableReadNode (location: ", 37);
5549 prettyprint_location(output_buffer, parser, &node->
location);
5550 pm_buffer_append_string(output_buffer,
")\n", 2);
5554 case PM_IT_PARAMETERS_NODE: {
5555 pm_buffer_append_string(output_buffer,
"@ ItParametersNode (location: ", 30);
5556 prettyprint_location(output_buffer, parser, &node->
location);
5557 pm_buffer_append_string(output_buffer,
")\n", 2);
5561 case PM_KEYWORD_HASH_NODE: {
5563 pm_buffer_append_string(output_buffer,
"@ KeywordHashNode (location: ", 29);
5564 prettyprint_location(output_buffer, parser, &node->
location);
5565 pm_buffer_append_string(output_buffer,
")\n", 2);
5569 pm_buffer_concat(output_buffer, prefix_buffer);
5570 pm_buffer_append_string(output_buffer,
"+-- KeywordHashNodeFlags:", 25);
5572 if (cast->
base.
flags & PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS) {
5573 if (found) pm_buffer_append_byte(output_buffer,
',');
5574 pm_buffer_append_string(output_buffer,
" symbol_keys", 12);
5577 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
5578 pm_buffer_append_byte(output_buffer,
'\n');
5583 pm_buffer_concat(output_buffer, prefix_buffer);
5584 pm_buffer_append_string(output_buffer,
"+-- elements:", 13);
5585 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
elements.
size));
5588 for (uint32_t index = 0; index < last_index; index++) {
5589 size_t prefix_length = prefix_buffer->length;
5590 pm_buffer_append_string(prefix_buffer,
" ", 4);
5591 pm_buffer_concat(output_buffer, prefix_buffer);
5592 pm_buffer_append_string(output_buffer,
"+-- ", 4);
5593 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
5595 prefix_buffer->length = prefix_length;
5601 case PM_KEYWORD_REST_PARAMETER_NODE: {
5603 pm_buffer_append_string(output_buffer,
"@ KeywordRestParameterNode (location: ", 38);
5604 prettyprint_location(output_buffer, parser, &node->
location);
5605 pm_buffer_append_string(output_buffer,
")\n", 2);
5609 pm_buffer_concat(output_buffer, prefix_buffer);
5610 pm_buffer_append_string(output_buffer,
"+-- ParameterFlags:", 19);
5612 if (cast->
base.
flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
5613 if (found) pm_buffer_append_byte(output_buffer,
',');
5614 pm_buffer_append_string(output_buffer,
" repeated_parameter", 19);
5617 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
5618 pm_buffer_append_byte(output_buffer,
'\n');
5623 pm_buffer_concat(output_buffer, prefix_buffer);
5624 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
5625 if (cast->
name == 0) {
5626 pm_buffer_append_string(output_buffer,
" nil\n", 5);
5628 pm_buffer_append_byte(output_buffer,
' ');
5629 prettyprint_constant(output_buffer, parser, cast->
name);
5630 pm_buffer_append_byte(output_buffer,
'\n');
5636 pm_buffer_concat(output_buffer, prefix_buffer);
5637 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
5639 if (location->
length == 0) {
5640 pm_buffer_append_string(output_buffer,
" nil\n", 5);
5642 pm_buffer_append_byte(output_buffer,
' ');
5643 prettyprint_location(output_buffer, parser, location);
5644 pm_buffer_append_string(output_buffer,
" = \"", 4);
5645 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5646 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5652 pm_buffer_concat(output_buffer, prefix_buffer);
5653 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
5655 pm_buffer_append_byte(output_buffer,
' ');
5656 prettyprint_location(output_buffer, parser, location);
5657 pm_buffer_append_string(output_buffer,
" = \"", 4);
5658 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5659 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5664 case PM_LAMBDA_NODE: {
5666 pm_buffer_append_string(output_buffer,
"@ LambdaNode (location: ", 24);
5667 prettyprint_location(output_buffer, parser, &node->
location);
5668 pm_buffer_append_string(output_buffer,
")\n", 2);
5672 pm_buffer_concat(output_buffer, prefix_buffer);
5673 pm_buffer_append_string(output_buffer,
"+-- locals:", 11);
5674 pm_buffer_append_string(output_buffer,
" [", 2);
5675 for (uint32_t index = 0; index < cast->
locals.
size; index++) {
5676 if (index != 0) pm_buffer_append_string(output_buffer,
", ", 2);
5677 prettyprint_constant(output_buffer, parser, cast->
locals.
ids[index]);
5679 pm_buffer_append_string(output_buffer,
"]\n", 2);
5684 pm_buffer_concat(output_buffer, prefix_buffer);
5685 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
5687 pm_buffer_append_byte(output_buffer,
' ');
5688 prettyprint_location(output_buffer, parser, location);
5689 pm_buffer_append_string(output_buffer,
" = \"", 4);
5690 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5691 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5696 pm_buffer_concat(output_buffer, prefix_buffer);
5697 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
5699 pm_buffer_append_byte(output_buffer,
' ');
5700 prettyprint_location(output_buffer, parser, location);
5701 pm_buffer_append_string(output_buffer,
" = \"", 4);
5702 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5703 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5708 pm_buffer_concat(output_buffer, prefix_buffer);
5709 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
5711 pm_buffer_append_byte(output_buffer,
' ');
5712 prettyprint_location(output_buffer, parser, location);
5713 pm_buffer_append_string(output_buffer,
" = \"", 4);
5714 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5715 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5720 pm_buffer_concat(output_buffer, prefix_buffer);
5721 pm_buffer_append_string(output_buffer,
"+-- parameters:", 15);
5723 pm_buffer_append_string(output_buffer,
" nil\n", 5);
5725 pm_buffer_append_byte(output_buffer,
'\n');
5727 size_t prefix_length = prefix_buffer->length;
5728 pm_buffer_append_string(prefix_buffer,
"| ", 4);
5729 pm_buffer_concat(output_buffer, prefix_buffer);
5731 prefix_buffer->length = prefix_length;
5737 pm_buffer_concat(output_buffer, prefix_buffer);
5738 pm_buffer_append_string(output_buffer,
"+-- body:", 9);
5739 if (cast->
body == NULL) {
5740 pm_buffer_append_string(output_buffer,
" nil\n", 5);
5742 pm_buffer_append_byte(output_buffer,
'\n');
5744 size_t prefix_length = prefix_buffer->length;
5745 pm_buffer_append_string(prefix_buffer,
" ", 4);
5746 pm_buffer_concat(output_buffer, prefix_buffer);
5747 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
body, prefix_buffer);
5748 prefix_buffer->length = prefix_length;
5754 case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
5756 pm_buffer_append_string(output_buffer,
"@ LocalVariableAndWriteNode (location: ", 39);
5757 prettyprint_location(output_buffer, parser, &node->
location);
5758 pm_buffer_append_string(output_buffer,
")\n", 2);
5762 pm_buffer_concat(output_buffer, prefix_buffer);
5763 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
5765 pm_buffer_append_byte(output_buffer,
' ');
5766 prettyprint_location(output_buffer, parser, location);
5767 pm_buffer_append_string(output_buffer,
" = \"", 4);
5768 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5769 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5774 pm_buffer_concat(output_buffer, prefix_buffer);
5775 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
5777 pm_buffer_append_byte(output_buffer,
' ');
5778 prettyprint_location(output_buffer, parser, location);
5779 pm_buffer_append_string(output_buffer,
" = \"", 4);
5780 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5781 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5786 pm_buffer_concat(output_buffer, prefix_buffer);
5787 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
5788 pm_buffer_append_byte(output_buffer,
'\n');
5790 size_t prefix_length = prefix_buffer->length;
5791 pm_buffer_append_string(prefix_buffer,
"| ", 4);
5792 pm_buffer_concat(output_buffer, prefix_buffer);
5793 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
5794 prefix_buffer->length = prefix_length;
5799 pm_buffer_concat(output_buffer, prefix_buffer);
5800 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
5801 pm_buffer_append_byte(output_buffer,
' ');
5802 prettyprint_constant(output_buffer, parser, cast->
name);
5803 pm_buffer_append_byte(output_buffer,
'\n');
5808 pm_buffer_concat(output_buffer, prefix_buffer);
5809 pm_buffer_append_string(output_buffer,
"+-- depth:", 10);
5810 pm_buffer_append_format(output_buffer,
" %" PRIu32
"\n", cast->
depth);
5815 case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
5817 pm_buffer_append_string(output_buffer,
"@ LocalVariableOperatorWriteNode (location: ", 44);
5818 prettyprint_location(output_buffer, parser, &node->
location);
5819 pm_buffer_append_string(output_buffer,
")\n", 2);
5823 pm_buffer_concat(output_buffer, prefix_buffer);
5824 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
5826 pm_buffer_append_byte(output_buffer,
' ');
5827 prettyprint_location(output_buffer, parser, location);
5828 pm_buffer_append_string(output_buffer,
" = \"", 4);
5829 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5830 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5835 pm_buffer_concat(output_buffer, prefix_buffer);
5836 pm_buffer_append_string(output_buffer,
"+-- binary_operator_loc:", 24);
5838 pm_buffer_append_byte(output_buffer,
' ');
5839 prettyprint_location(output_buffer, parser, location);
5840 pm_buffer_append_string(output_buffer,
" = \"", 4);
5841 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5842 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5847 pm_buffer_concat(output_buffer, prefix_buffer);
5848 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
5849 pm_buffer_append_byte(output_buffer,
'\n');
5851 size_t prefix_length = prefix_buffer->length;
5852 pm_buffer_append_string(prefix_buffer,
"| ", 4);
5853 pm_buffer_concat(output_buffer, prefix_buffer);
5854 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
5855 prefix_buffer->length = prefix_length;
5860 pm_buffer_concat(output_buffer, prefix_buffer);
5861 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
5862 pm_buffer_append_byte(output_buffer,
' ');
5863 prettyprint_constant(output_buffer, parser, cast->
name);
5864 pm_buffer_append_byte(output_buffer,
'\n');
5869 pm_buffer_concat(output_buffer, prefix_buffer);
5870 pm_buffer_append_string(output_buffer,
"+-- binary_operator:", 20);
5871 pm_buffer_append_byte(output_buffer,
' ');
5873 pm_buffer_append_byte(output_buffer,
'\n');
5878 pm_buffer_concat(output_buffer, prefix_buffer);
5879 pm_buffer_append_string(output_buffer,
"+-- depth:", 10);
5880 pm_buffer_append_format(output_buffer,
" %" PRIu32
"\n", cast->
depth);
5885 case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
5887 pm_buffer_append_string(output_buffer,
"@ LocalVariableOrWriteNode (location: ", 38);
5888 prettyprint_location(output_buffer, parser, &node->
location);
5889 pm_buffer_append_string(output_buffer,
")\n", 2);
5893 pm_buffer_concat(output_buffer, prefix_buffer);
5894 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
5896 pm_buffer_append_byte(output_buffer,
' ');
5897 prettyprint_location(output_buffer, parser, location);
5898 pm_buffer_append_string(output_buffer,
" = \"", 4);
5899 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5900 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5905 pm_buffer_concat(output_buffer, prefix_buffer);
5906 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
5908 pm_buffer_append_byte(output_buffer,
' ');
5909 prettyprint_location(output_buffer, parser, location);
5910 pm_buffer_append_string(output_buffer,
" = \"", 4);
5911 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
5912 pm_buffer_append_string(output_buffer,
"\"\n", 2);
5917 pm_buffer_concat(output_buffer, prefix_buffer);
5918 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
5919 pm_buffer_append_byte(output_buffer,
'\n');
5921 size_t prefix_length = prefix_buffer->length;
5922 pm_buffer_append_string(prefix_buffer,
"| ", 4);
5923 pm_buffer_concat(output_buffer, prefix_buffer);
5924 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
5925 prefix_buffer->length = prefix_length;
5930 pm_buffer_concat(output_buffer, prefix_buffer);
5931 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
5932 pm_buffer_append_byte(output_buffer,
' ');
5933 prettyprint_constant(output_buffer, parser, cast->
name);
5934 pm_buffer_append_byte(output_buffer,
'\n');
5939 pm_buffer_concat(output_buffer, prefix_buffer);
5940 pm_buffer_append_string(output_buffer,
"+-- depth:", 10);
5941 pm_buffer_append_format(output_buffer,
" %" PRIu32
"\n", cast->
depth);
5946 case PM_LOCAL_VARIABLE_READ_NODE: {
5948 pm_buffer_append_string(output_buffer,
"@ LocalVariableReadNode (location: ", 35);
5949 prettyprint_location(output_buffer, parser, &node->
location);
5950 pm_buffer_append_string(output_buffer,
")\n", 2);
5954 pm_buffer_concat(output_buffer, prefix_buffer);
5955 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
5956 pm_buffer_append_byte(output_buffer,
' ');
5957 prettyprint_constant(output_buffer, parser, cast->
name);
5958 pm_buffer_append_byte(output_buffer,
'\n');
5963 pm_buffer_concat(output_buffer, prefix_buffer);
5964 pm_buffer_append_string(output_buffer,
"+-- depth:", 10);
5965 pm_buffer_append_format(output_buffer,
" %" PRIu32
"\n", cast->
depth);
5970 case PM_LOCAL_VARIABLE_TARGET_NODE: {
5972 pm_buffer_append_string(output_buffer,
"@ LocalVariableTargetNode (location: ", 37);
5973 prettyprint_location(output_buffer, parser, &node->
location);
5974 pm_buffer_append_string(output_buffer,
")\n", 2);
5978 pm_buffer_concat(output_buffer, prefix_buffer);
5979 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
5980 pm_buffer_append_byte(output_buffer,
' ');
5981 prettyprint_constant(output_buffer, parser, cast->
name);
5982 pm_buffer_append_byte(output_buffer,
'\n');
5987 pm_buffer_concat(output_buffer, prefix_buffer);
5988 pm_buffer_append_string(output_buffer,
"+-- depth:", 10);
5989 pm_buffer_append_format(output_buffer,
" %" PRIu32
"\n", cast->
depth);
5994 case PM_LOCAL_VARIABLE_WRITE_NODE: {
5996 pm_buffer_append_string(output_buffer,
"@ LocalVariableWriteNode (location: ", 36);
5997 prettyprint_location(output_buffer, parser, &node->
location);
5998 pm_buffer_append_string(output_buffer,
")\n", 2);
6002 pm_buffer_concat(output_buffer, prefix_buffer);
6003 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
6004 pm_buffer_append_byte(output_buffer,
' ');
6005 prettyprint_constant(output_buffer, parser, cast->
name);
6006 pm_buffer_append_byte(output_buffer,
'\n');
6011 pm_buffer_concat(output_buffer, prefix_buffer);
6012 pm_buffer_append_string(output_buffer,
"+-- depth:", 10);
6013 pm_buffer_append_format(output_buffer,
" %" PRIu32
"\n", cast->
depth);
6018 pm_buffer_concat(output_buffer, prefix_buffer);
6019 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
6021 pm_buffer_append_byte(output_buffer,
' ');
6022 prettyprint_location(output_buffer, parser, location);
6023 pm_buffer_append_string(output_buffer,
" = \"", 4);
6024 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6025 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6030 pm_buffer_concat(output_buffer, prefix_buffer);
6031 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
6032 pm_buffer_append_byte(output_buffer,
'\n');
6034 size_t prefix_length = prefix_buffer->length;
6035 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6036 pm_buffer_concat(output_buffer, prefix_buffer);
6037 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
6038 prefix_buffer->length = prefix_length;
6043 pm_buffer_concat(output_buffer, prefix_buffer);
6044 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
6046 pm_buffer_append_byte(output_buffer,
' ');
6047 prettyprint_location(output_buffer, parser, location);
6048 pm_buffer_append_string(output_buffer,
" = \"", 4);
6049 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6050 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6055 case PM_MATCH_LAST_LINE_NODE: {
6057 pm_buffer_append_string(output_buffer,
"@ MatchLastLineNode (location: ", 31);
6058 prettyprint_location(output_buffer, parser, &node->
location);
6059 pm_buffer_append_string(output_buffer,
")\n", 2);
6063 pm_buffer_concat(output_buffer, prefix_buffer);
6064 pm_buffer_append_string(output_buffer,
"+-- RegularExpressionFlags:", 27);
6066 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE) {
6067 if (found) pm_buffer_append_byte(output_buffer,
',');
6068 pm_buffer_append_string(output_buffer,
" ignore_case", 12);
6071 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_EXTENDED) {
6072 if (found) pm_buffer_append_byte(output_buffer,
',');
6073 pm_buffer_append_string(output_buffer,
" extended", 9);
6076 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE) {
6077 if (found) pm_buffer_append_byte(output_buffer,
',');
6078 pm_buffer_append_string(output_buffer,
" multi_line", 11);
6081 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_ONCE) {
6082 if (found) pm_buffer_append_byte(output_buffer,
',');
6083 pm_buffer_append_string(output_buffer,
" once", 5);
6086 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_EUC_JP) {
6087 if (found) pm_buffer_append_byte(output_buffer,
',');
6088 pm_buffer_append_string(output_buffer,
" euc_jp", 7);
6091 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT) {
6092 if (found) pm_buffer_append_byte(output_buffer,
',');
6093 pm_buffer_append_string(output_buffer,
" ascii_8bit", 11);
6096 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J) {
6097 if (found) pm_buffer_append_byte(output_buffer,
',');
6098 pm_buffer_append_string(output_buffer,
" windows_31j", 12);
6101 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_UTF_8) {
6102 if (found) pm_buffer_append_byte(output_buffer,
',');
6103 pm_buffer_append_string(output_buffer,
" utf_8", 6);
6106 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING) {
6107 if (found) pm_buffer_append_byte(output_buffer,
',');
6108 pm_buffer_append_string(output_buffer,
" forced_utf8_encoding", 21);
6111 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING) {
6112 if (found) pm_buffer_append_byte(output_buffer,
',');
6113 pm_buffer_append_string(output_buffer,
" forced_binary_encoding", 23);
6116 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING) {
6117 if (found) pm_buffer_append_byte(output_buffer,
',');
6118 pm_buffer_append_string(output_buffer,
" forced_us_ascii_encoding", 25);
6121 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
6122 pm_buffer_append_byte(output_buffer,
'\n');
6127 pm_buffer_concat(output_buffer, prefix_buffer);
6128 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
6130 pm_buffer_append_byte(output_buffer,
' ');
6131 prettyprint_location(output_buffer, parser, location);
6132 pm_buffer_append_string(output_buffer,
" = \"", 4);
6133 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6134 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6139 pm_buffer_concat(output_buffer, prefix_buffer);
6140 pm_buffer_append_string(output_buffer,
"+-- content_loc:", 16);
6142 pm_buffer_append_byte(output_buffer,
' ');
6143 prettyprint_location(output_buffer, parser, location);
6144 pm_buffer_append_string(output_buffer,
" = \"", 4);
6145 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6146 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6151 pm_buffer_concat(output_buffer, prefix_buffer);
6152 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
6154 pm_buffer_append_byte(output_buffer,
' ');
6155 prettyprint_location(output_buffer, parser, location);
6156 pm_buffer_append_string(output_buffer,
" = \"", 4);
6157 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6158 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6163 pm_buffer_concat(output_buffer, prefix_buffer);
6164 pm_buffer_append_string(output_buffer,
"+-- unescaped:", 14);
6165 pm_buffer_append_string(output_buffer,
" \"", 2);
6166 pm_buffer_append_source(output_buffer, pm_string_source(&cast->
unescaped), pm_string_length(&cast->
unescaped), PM_BUFFER_ESCAPING_RUBY);
6167 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6172 case PM_MATCH_PREDICATE_NODE: {
6174 pm_buffer_append_string(output_buffer,
"@ MatchPredicateNode (location: ", 32);
6175 prettyprint_location(output_buffer, parser, &node->
location);
6176 pm_buffer_append_string(output_buffer,
")\n", 2);
6180 pm_buffer_concat(output_buffer, prefix_buffer);
6181 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
6182 pm_buffer_append_byte(output_buffer,
'\n');
6184 size_t prefix_length = prefix_buffer->length;
6185 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6186 pm_buffer_concat(output_buffer, prefix_buffer);
6187 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
6188 prefix_buffer->length = prefix_length;
6193 pm_buffer_concat(output_buffer, prefix_buffer);
6194 pm_buffer_append_string(output_buffer,
"+-- pattern:", 12);
6195 pm_buffer_append_byte(output_buffer,
'\n');
6197 size_t prefix_length = prefix_buffer->length;
6198 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6199 pm_buffer_concat(output_buffer, prefix_buffer);
6200 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
pattern, prefix_buffer);
6201 prefix_buffer->length = prefix_length;
6206 pm_buffer_concat(output_buffer, prefix_buffer);
6207 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
6209 pm_buffer_append_byte(output_buffer,
' ');
6210 prettyprint_location(output_buffer, parser, location);
6211 pm_buffer_append_string(output_buffer,
" = \"", 4);
6212 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6213 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6218 case PM_MATCH_REQUIRED_NODE: {
6220 pm_buffer_append_string(output_buffer,
"@ MatchRequiredNode (location: ", 31);
6221 prettyprint_location(output_buffer, parser, &node->
location);
6222 pm_buffer_append_string(output_buffer,
")\n", 2);
6226 pm_buffer_concat(output_buffer, prefix_buffer);
6227 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
6228 pm_buffer_append_byte(output_buffer,
'\n');
6230 size_t prefix_length = prefix_buffer->length;
6231 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6232 pm_buffer_concat(output_buffer, prefix_buffer);
6233 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
6234 prefix_buffer->length = prefix_length;
6239 pm_buffer_concat(output_buffer, prefix_buffer);
6240 pm_buffer_append_string(output_buffer,
"+-- pattern:", 12);
6241 pm_buffer_append_byte(output_buffer,
'\n');
6243 size_t prefix_length = prefix_buffer->length;
6244 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6245 pm_buffer_concat(output_buffer, prefix_buffer);
6246 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
pattern, prefix_buffer);
6247 prefix_buffer->length = prefix_length;
6252 pm_buffer_concat(output_buffer, prefix_buffer);
6253 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
6255 pm_buffer_append_byte(output_buffer,
' ');
6256 prettyprint_location(output_buffer, parser, location);
6257 pm_buffer_append_string(output_buffer,
" = \"", 4);
6258 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6259 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6264 case PM_MATCH_WRITE_NODE: {
6266 pm_buffer_append_string(output_buffer,
"@ MatchWriteNode (location: ", 28);
6267 prettyprint_location(output_buffer, parser, &node->
location);
6268 pm_buffer_append_string(output_buffer,
")\n", 2);
6272 pm_buffer_concat(output_buffer, prefix_buffer);
6273 pm_buffer_append_string(output_buffer,
"+-- call:", 9);
6274 pm_buffer_append_byte(output_buffer,
'\n');
6276 size_t prefix_length = prefix_buffer->length;
6277 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6278 pm_buffer_concat(output_buffer, prefix_buffer);
6279 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
call, prefix_buffer);
6280 prefix_buffer->length = prefix_length;
6285 pm_buffer_concat(output_buffer, prefix_buffer);
6286 pm_buffer_append_string(output_buffer,
"+-- targets:", 12);
6287 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
targets.
size));
6290 for (uint32_t index = 0; index < last_index; index++) {
6291 size_t prefix_length = prefix_buffer->length;
6292 pm_buffer_append_string(prefix_buffer,
" ", 4);
6293 pm_buffer_concat(output_buffer, prefix_buffer);
6294 pm_buffer_append_string(output_buffer,
"+-- ", 4);
6295 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
6297 prefix_buffer->length = prefix_length;
6303 case PM_MODULE_NODE: {
6305 pm_buffer_append_string(output_buffer,
"@ ModuleNode (location: ", 24);
6306 prettyprint_location(output_buffer, parser, &node->
location);
6307 pm_buffer_append_string(output_buffer,
")\n", 2);
6311 pm_buffer_concat(output_buffer, prefix_buffer);
6312 pm_buffer_append_string(output_buffer,
"+-- locals:", 11);
6313 pm_buffer_append_string(output_buffer,
" [", 2);
6314 for (uint32_t index = 0; index < cast->
locals.
size; index++) {
6315 if (index != 0) pm_buffer_append_string(output_buffer,
", ", 2);
6316 prettyprint_constant(output_buffer, parser, cast->
locals.
ids[index]);
6318 pm_buffer_append_string(output_buffer,
"]\n", 2);
6323 pm_buffer_concat(output_buffer, prefix_buffer);
6324 pm_buffer_append_string(output_buffer,
"+-- module_keyword_loc:", 23);
6326 pm_buffer_append_byte(output_buffer,
' ');
6327 prettyprint_location(output_buffer, parser, location);
6328 pm_buffer_append_string(output_buffer,
" = \"", 4);
6329 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6330 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6335 pm_buffer_concat(output_buffer, prefix_buffer);
6336 pm_buffer_append_string(output_buffer,
"+-- constant_path:", 18);
6337 pm_buffer_append_byte(output_buffer,
'\n');
6339 size_t prefix_length = prefix_buffer->length;
6340 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6341 pm_buffer_concat(output_buffer, prefix_buffer);
6343 prefix_buffer->length = prefix_length;
6348 pm_buffer_concat(output_buffer, prefix_buffer);
6349 pm_buffer_append_string(output_buffer,
"+-- body:", 9);
6350 if (cast->
body == NULL) {
6351 pm_buffer_append_string(output_buffer,
" nil\n", 5);
6353 pm_buffer_append_byte(output_buffer,
'\n');
6355 size_t prefix_length = prefix_buffer->length;
6356 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6357 pm_buffer_concat(output_buffer, prefix_buffer);
6358 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
body, prefix_buffer);
6359 prefix_buffer->length = prefix_length;
6365 pm_buffer_concat(output_buffer, prefix_buffer);
6366 pm_buffer_append_string(output_buffer,
"+-- end_keyword_loc:", 20);
6368 pm_buffer_append_byte(output_buffer,
' ');
6369 prettyprint_location(output_buffer, parser, location);
6370 pm_buffer_append_string(output_buffer,
" = \"", 4);
6371 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6372 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6377 pm_buffer_concat(output_buffer, prefix_buffer);
6378 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
6379 pm_buffer_append_byte(output_buffer,
' ');
6380 prettyprint_constant(output_buffer, parser, cast->
name);
6381 pm_buffer_append_byte(output_buffer,
'\n');
6386 case PM_MULTI_TARGET_NODE: {
6388 pm_buffer_append_string(output_buffer,
"@ MultiTargetNode (location: ", 29);
6389 prettyprint_location(output_buffer, parser, &node->
location);
6390 pm_buffer_append_string(output_buffer,
")\n", 2);
6394 pm_buffer_concat(output_buffer, prefix_buffer);
6395 pm_buffer_append_string(output_buffer,
"+-- lefts:", 10);
6396 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
lefts.
size));
6399 for (uint32_t index = 0; index < last_index; index++) {
6400 size_t prefix_length = prefix_buffer->length;
6401 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6402 pm_buffer_concat(output_buffer, prefix_buffer);
6403 pm_buffer_append_string(output_buffer,
"+-- ", 4);
6404 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
6405 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
lefts.
nodes[index], prefix_buffer);
6406 prefix_buffer->length = prefix_length;
6412 pm_buffer_concat(output_buffer, prefix_buffer);
6413 pm_buffer_append_string(output_buffer,
"+-- rest:", 9);
6414 if (cast->
rest == NULL) {
6415 pm_buffer_append_string(output_buffer,
" nil\n", 5);
6417 pm_buffer_append_byte(output_buffer,
'\n');
6419 size_t prefix_length = prefix_buffer->length;
6420 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6421 pm_buffer_concat(output_buffer, prefix_buffer);
6422 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
rest, prefix_buffer);
6423 prefix_buffer->length = prefix_length;
6429 pm_buffer_concat(output_buffer, prefix_buffer);
6430 pm_buffer_append_string(output_buffer,
"+-- rights:", 11);
6431 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
rights.
size));
6434 for (uint32_t index = 0; index < last_index; index++) {
6435 size_t prefix_length = prefix_buffer->length;
6436 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6437 pm_buffer_concat(output_buffer, prefix_buffer);
6438 pm_buffer_append_string(output_buffer,
"+-- ", 4);
6439 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
6440 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
rights.
nodes[index], prefix_buffer);
6441 prefix_buffer->length = prefix_length;
6447 pm_buffer_concat(output_buffer, prefix_buffer);
6448 pm_buffer_append_string(output_buffer,
"+-- lparen_loc:", 15);
6450 if (location->
length == 0) {
6451 pm_buffer_append_string(output_buffer,
" nil\n", 5);
6453 pm_buffer_append_byte(output_buffer,
' ');
6454 prettyprint_location(output_buffer, parser, location);
6455 pm_buffer_append_string(output_buffer,
" = \"", 4);
6456 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6457 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6463 pm_buffer_concat(output_buffer, prefix_buffer);
6464 pm_buffer_append_string(output_buffer,
"+-- rparen_loc:", 15);
6466 if (location->
length == 0) {
6467 pm_buffer_append_string(output_buffer,
" nil\n", 5);
6469 pm_buffer_append_byte(output_buffer,
' ');
6470 prettyprint_location(output_buffer, parser, location);
6471 pm_buffer_append_string(output_buffer,
" = \"", 4);
6472 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6473 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6479 case PM_MULTI_WRITE_NODE: {
6481 pm_buffer_append_string(output_buffer,
"@ MultiWriteNode (location: ", 28);
6482 prettyprint_location(output_buffer, parser, &node->
location);
6483 pm_buffer_append_string(output_buffer,
")\n", 2);
6487 pm_buffer_concat(output_buffer, prefix_buffer);
6488 pm_buffer_append_string(output_buffer,
"+-- lefts:", 10);
6489 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
lefts.
size));
6492 for (uint32_t index = 0; index < last_index; index++) {
6493 size_t prefix_length = prefix_buffer->length;
6494 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6495 pm_buffer_concat(output_buffer, prefix_buffer);
6496 pm_buffer_append_string(output_buffer,
"+-- ", 4);
6497 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
6498 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
lefts.
nodes[index], prefix_buffer);
6499 prefix_buffer->length = prefix_length;
6505 pm_buffer_concat(output_buffer, prefix_buffer);
6506 pm_buffer_append_string(output_buffer,
"+-- rest:", 9);
6507 if (cast->
rest == NULL) {
6508 pm_buffer_append_string(output_buffer,
" nil\n", 5);
6510 pm_buffer_append_byte(output_buffer,
'\n');
6512 size_t prefix_length = prefix_buffer->length;
6513 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6514 pm_buffer_concat(output_buffer, prefix_buffer);
6515 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
rest, prefix_buffer);
6516 prefix_buffer->length = prefix_length;
6522 pm_buffer_concat(output_buffer, prefix_buffer);
6523 pm_buffer_append_string(output_buffer,
"+-- rights:", 11);
6524 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
rights.
size));
6527 for (uint32_t index = 0; index < last_index; index++) {
6528 size_t prefix_length = prefix_buffer->length;
6529 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6530 pm_buffer_concat(output_buffer, prefix_buffer);
6531 pm_buffer_append_string(output_buffer,
"+-- ", 4);
6532 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
6533 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
rights.
nodes[index], prefix_buffer);
6534 prefix_buffer->length = prefix_length;
6540 pm_buffer_concat(output_buffer, prefix_buffer);
6541 pm_buffer_append_string(output_buffer,
"+-- lparen_loc:", 15);
6543 if (location->
length == 0) {
6544 pm_buffer_append_string(output_buffer,
" nil\n", 5);
6546 pm_buffer_append_byte(output_buffer,
' ');
6547 prettyprint_location(output_buffer, parser, location);
6548 pm_buffer_append_string(output_buffer,
" = \"", 4);
6549 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6550 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6556 pm_buffer_concat(output_buffer, prefix_buffer);
6557 pm_buffer_append_string(output_buffer,
"+-- rparen_loc:", 15);
6559 if (location->
length == 0) {
6560 pm_buffer_append_string(output_buffer,
" nil\n", 5);
6562 pm_buffer_append_byte(output_buffer,
' ');
6563 prettyprint_location(output_buffer, parser, location);
6564 pm_buffer_append_string(output_buffer,
" = \"", 4);
6565 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6566 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6572 pm_buffer_concat(output_buffer, prefix_buffer);
6573 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
6575 pm_buffer_append_byte(output_buffer,
' ');
6576 prettyprint_location(output_buffer, parser, location);
6577 pm_buffer_append_string(output_buffer,
" = \"", 4);
6578 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6579 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6584 pm_buffer_concat(output_buffer, prefix_buffer);
6585 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
6586 pm_buffer_append_byte(output_buffer,
'\n');
6588 size_t prefix_length = prefix_buffer->length;
6589 pm_buffer_append_string(prefix_buffer,
" ", 4);
6590 pm_buffer_concat(output_buffer, prefix_buffer);
6591 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
6592 prefix_buffer->length = prefix_length;
6597 case PM_NEXT_NODE: {
6599 pm_buffer_append_string(output_buffer,
"@ NextNode (location: ", 22);
6600 prettyprint_location(output_buffer, parser, &node->
location);
6601 pm_buffer_append_string(output_buffer,
")\n", 2);
6605 pm_buffer_concat(output_buffer, prefix_buffer);
6606 pm_buffer_append_string(output_buffer,
"+-- arguments:", 14);
6608 pm_buffer_append_string(output_buffer,
" nil\n", 5);
6610 pm_buffer_append_byte(output_buffer,
'\n');
6612 size_t prefix_length = prefix_buffer->length;
6613 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6614 pm_buffer_concat(output_buffer, prefix_buffer);
6615 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
6616 prefix_buffer->length = prefix_length;
6622 pm_buffer_concat(output_buffer, prefix_buffer);
6623 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
6625 pm_buffer_append_byte(output_buffer,
' ');
6626 prettyprint_location(output_buffer, parser, location);
6627 pm_buffer_append_string(output_buffer,
" = \"", 4);
6628 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6629 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6635 pm_buffer_append_string(output_buffer,
"@ NilNode (location: ", 21);
6636 prettyprint_location(output_buffer, parser, &node->
location);
6637 pm_buffer_append_string(output_buffer,
")\n", 2);
6641 case PM_NO_BLOCK_PARAMETER_NODE: {
6643 pm_buffer_append_string(output_buffer,
"@ NoBlockParameterNode (location: ", 34);
6644 prettyprint_location(output_buffer, parser, &node->
location);
6645 pm_buffer_append_string(output_buffer,
")\n", 2);
6649 pm_buffer_concat(output_buffer, prefix_buffer);
6650 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
6652 pm_buffer_append_byte(output_buffer,
' ');
6653 prettyprint_location(output_buffer, parser, location);
6654 pm_buffer_append_string(output_buffer,
" = \"", 4);
6655 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6656 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6661 pm_buffer_concat(output_buffer, prefix_buffer);
6662 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
6664 pm_buffer_append_byte(output_buffer,
' ');
6665 prettyprint_location(output_buffer, parser, location);
6666 pm_buffer_append_string(output_buffer,
" = \"", 4);
6667 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6668 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6673 case PM_NO_KEYWORDS_PARAMETER_NODE: {
6675 pm_buffer_append_string(output_buffer,
"@ NoKeywordsParameterNode (location: ", 37);
6676 prettyprint_location(output_buffer, parser, &node->
location);
6677 pm_buffer_append_string(output_buffer,
")\n", 2);
6681 pm_buffer_concat(output_buffer, prefix_buffer);
6682 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
6684 pm_buffer_append_byte(output_buffer,
' ');
6685 prettyprint_location(output_buffer, parser, location);
6686 pm_buffer_append_string(output_buffer,
" = \"", 4);
6687 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6688 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6693 pm_buffer_concat(output_buffer, prefix_buffer);
6694 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
6696 pm_buffer_append_byte(output_buffer,
' ');
6697 prettyprint_location(output_buffer, parser, location);
6698 pm_buffer_append_string(output_buffer,
" = \"", 4);
6699 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6700 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6705 case PM_NUMBERED_PARAMETERS_NODE: {
6707 pm_buffer_append_string(output_buffer,
"@ NumberedParametersNode (location: ", 36);
6708 prettyprint_location(output_buffer, parser, &node->
location);
6709 pm_buffer_append_string(output_buffer,
")\n", 2);
6713 pm_buffer_concat(output_buffer, prefix_buffer);
6714 pm_buffer_append_string(output_buffer,
"+-- maximum:", 12);
6715 pm_buffer_append_format(output_buffer,
" %" PRIu8
"\n", cast->
maximum);
6720 case PM_NUMBERED_REFERENCE_READ_NODE: {
6722 pm_buffer_append_string(output_buffer,
"@ NumberedReferenceReadNode (location: ", 39);
6723 prettyprint_location(output_buffer, parser, &node->
location);
6724 pm_buffer_append_string(output_buffer,
")\n", 2);
6728 pm_buffer_concat(output_buffer, prefix_buffer);
6729 pm_buffer_append_string(output_buffer,
"+-- number:", 11);
6730 pm_buffer_append_format(output_buffer,
" %" PRIu32
"\n", cast->
number);
6735 case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
6737 pm_buffer_append_string(output_buffer,
"@ OptionalKeywordParameterNode (location: ", 42);
6738 prettyprint_location(output_buffer, parser, &node->
location);
6739 pm_buffer_append_string(output_buffer,
")\n", 2);
6743 pm_buffer_concat(output_buffer, prefix_buffer);
6744 pm_buffer_append_string(output_buffer,
"+-- ParameterFlags:", 19);
6746 if (cast->
base.
flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
6747 if (found) pm_buffer_append_byte(output_buffer,
',');
6748 pm_buffer_append_string(output_buffer,
" repeated_parameter", 19);
6751 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
6752 pm_buffer_append_byte(output_buffer,
'\n');
6757 pm_buffer_concat(output_buffer, prefix_buffer);
6758 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
6759 pm_buffer_append_byte(output_buffer,
' ');
6760 prettyprint_constant(output_buffer, parser, cast->
name);
6761 pm_buffer_append_byte(output_buffer,
'\n');
6766 pm_buffer_concat(output_buffer, prefix_buffer);
6767 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
6769 pm_buffer_append_byte(output_buffer,
' ');
6770 prettyprint_location(output_buffer, parser, location);
6771 pm_buffer_append_string(output_buffer,
" = \"", 4);
6772 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6773 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6778 pm_buffer_concat(output_buffer, prefix_buffer);
6779 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
6780 pm_buffer_append_byte(output_buffer,
'\n');
6782 size_t prefix_length = prefix_buffer->length;
6783 pm_buffer_append_string(prefix_buffer,
" ", 4);
6784 pm_buffer_concat(output_buffer, prefix_buffer);
6785 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
6786 prefix_buffer->length = prefix_length;
6791 case PM_OPTIONAL_PARAMETER_NODE: {
6793 pm_buffer_append_string(output_buffer,
"@ OptionalParameterNode (location: ", 35);
6794 prettyprint_location(output_buffer, parser, &node->
location);
6795 pm_buffer_append_string(output_buffer,
")\n", 2);
6799 pm_buffer_concat(output_buffer, prefix_buffer);
6800 pm_buffer_append_string(output_buffer,
"+-- ParameterFlags:", 19);
6802 if (cast->
base.
flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
6803 if (found) pm_buffer_append_byte(output_buffer,
',');
6804 pm_buffer_append_string(output_buffer,
" repeated_parameter", 19);
6807 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
6808 pm_buffer_append_byte(output_buffer,
'\n');
6813 pm_buffer_concat(output_buffer, prefix_buffer);
6814 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
6815 pm_buffer_append_byte(output_buffer,
' ');
6816 prettyprint_constant(output_buffer, parser, cast->
name);
6817 pm_buffer_append_byte(output_buffer,
'\n');
6822 pm_buffer_concat(output_buffer, prefix_buffer);
6823 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
6825 pm_buffer_append_byte(output_buffer,
' ');
6826 prettyprint_location(output_buffer, parser, location);
6827 pm_buffer_append_string(output_buffer,
" = \"", 4);
6828 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6829 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6834 pm_buffer_concat(output_buffer, prefix_buffer);
6835 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
6837 pm_buffer_append_byte(output_buffer,
' ');
6838 prettyprint_location(output_buffer, parser, location);
6839 pm_buffer_append_string(output_buffer,
" = \"", 4);
6840 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6841 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6846 pm_buffer_concat(output_buffer, prefix_buffer);
6847 pm_buffer_append_string(output_buffer,
"+-- value:", 10);
6848 pm_buffer_append_byte(output_buffer,
'\n');
6850 size_t prefix_length = prefix_buffer->length;
6851 pm_buffer_append_string(prefix_buffer,
" ", 4);
6852 pm_buffer_concat(output_buffer, prefix_buffer);
6853 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
value, prefix_buffer);
6854 prefix_buffer->length = prefix_length;
6861 pm_buffer_append_string(output_buffer,
"@ OrNode (location: ", 20);
6862 prettyprint_location(output_buffer, parser, &node->
location);
6863 pm_buffer_append_string(output_buffer,
")\n", 2);
6867 pm_buffer_concat(output_buffer, prefix_buffer);
6868 pm_buffer_append_string(output_buffer,
"+-- left:", 9);
6869 pm_buffer_append_byte(output_buffer,
'\n');
6871 size_t prefix_length = prefix_buffer->length;
6872 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6873 pm_buffer_concat(output_buffer, prefix_buffer);
6874 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
left, prefix_buffer);
6875 prefix_buffer->length = prefix_length;
6880 pm_buffer_concat(output_buffer, prefix_buffer);
6881 pm_buffer_append_string(output_buffer,
"+-- right:", 10);
6882 pm_buffer_append_byte(output_buffer,
'\n');
6884 size_t prefix_length = prefix_buffer->length;
6885 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6886 pm_buffer_concat(output_buffer, prefix_buffer);
6887 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
right, prefix_buffer);
6888 prefix_buffer->length = prefix_length;
6893 pm_buffer_concat(output_buffer, prefix_buffer);
6894 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
6896 pm_buffer_append_byte(output_buffer,
' ');
6897 prettyprint_location(output_buffer, parser, location);
6898 pm_buffer_append_string(output_buffer,
" = \"", 4);
6899 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
6900 pm_buffer_append_string(output_buffer,
"\"\n", 2);
6905 case PM_PARAMETERS_NODE: {
6907 pm_buffer_append_string(output_buffer,
"@ ParametersNode (location: ", 28);
6908 prettyprint_location(output_buffer, parser, &node->
location);
6909 pm_buffer_append_string(output_buffer,
")\n", 2);
6913 pm_buffer_concat(output_buffer, prefix_buffer);
6914 pm_buffer_append_string(output_buffer,
"+-- requireds:", 14);
6915 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
requireds.
size));
6918 for (uint32_t index = 0; index < last_index; index++) {
6919 size_t prefix_length = prefix_buffer->length;
6920 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6921 pm_buffer_concat(output_buffer, prefix_buffer);
6922 pm_buffer_append_string(output_buffer,
"+-- ", 4);
6923 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
6925 prefix_buffer->length = prefix_length;
6931 pm_buffer_concat(output_buffer, prefix_buffer);
6932 pm_buffer_append_string(output_buffer,
"+-- optionals:", 14);
6933 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
optionals.
size));
6936 for (uint32_t index = 0; index < last_index; index++) {
6937 size_t prefix_length = prefix_buffer->length;
6938 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6939 pm_buffer_concat(output_buffer, prefix_buffer);
6940 pm_buffer_append_string(output_buffer,
"+-- ", 4);
6941 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
6943 prefix_buffer->length = prefix_length;
6949 pm_buffer_concat(output_buffer, prefix_buffer);
6950 pm_buffer_append_string(output_buffer,
"+-- rest:", 9);
6951 if (cast->
rest == NULL) {
6952 pm_buffer_append_string(output_buffer,
" nil\n", 5);
6954 pm_buffer_append_byte(output_buffer,
'\n');
6956 size_t prefix_length = prefix_buffer->length;
6957 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6958 pm_buffer_concat(output_buffer, prefix_buffer);
6959 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
rest, prefix_buffer);
6960 prefix_buffer->length = prefix_length;
6966 pm_buffer_concat(output_buffer, prefix_buffer);
6967 pm_buffer_append_string(output_buffer,
"+-- posts:", 10);
6968 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
posts.
size));
6971 for (uint32_t index = 0; index < last_index; index++) {
6972 size_t prefix_length = prefix_buffer->length;
6973 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6974 pm_buffer_concat(output_buffer, prefix_buffer);
6975 pm_buffer_append_string(output_buffer,
"+-- ", 4);
6976 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
6977 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
posts.
nodes[index], prefix_buffer);
6978 prefix_buffer->length = prefix_length;
6984 pm_buffer_concat(output_buffer, prefix_buffer);
6985 pm_buffer_append_string(output_buffer,
"+-- keywords:", 13);
6986 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
keywords.
size));
6989 for (uint32_t index = 0; index < last_index; index++) {
6990 size_t prefix_length = prefix_buffer->length;
6991 pm_buffer_append_string(prefix_buffer,
"| ", 4);
6992 pm_buffer_concat(output_buffer, prefix_buffer);
6993 pm_buffer_append_string(output_buffer,
"+-- ", 4);
6994 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
6996 prefix_buffer->length = prefix_length;
7002 pm_buffer_concat(output_buffer, prefix_buffer);
7003 pm_buffer_append_string(output_buffer,
"+-- keyword_rest:", 17);
7005 pm_buffer_append_string(output_buffer,
" nil\n", 5);
7007 pm_buffer_append_byte(output_buffer,
'\n');
7009 size_t prefix_length = prefix_buffer->length;
7010 pm_buffer_append_string(prefix_buffer,
"| ", 4);
7011 pm_buffer_concat(output_buffer, prefix_buffer);
7013 prefix_buffer->length = prefix_length;
7019 pm_buffer_concat(output_buffer, prefix_buffer);
7020 pm_buffer_append_string(output_buffer,
"+-- block:", 10);
7021 if (cast->
block == NULL) {
7022 pm_buffer_append_string(output_buffer,
" nil\n", 5);
7024 pm_buffer_append_byte(output_buffer,
'\n');
7026 size_t prefix_length = prefix_buffer->length;
7027 pm_buffer_append_string(prefix_buffer,
" ", 4);
7028 pm_buffer_concat(output_buffer, prefix_buffer);
7029 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
block, prefix_buffer);
7030 prefix_buffer->length = prefix_length;
7036 case PM_PARENTHESES_NODE: {
7038 pm_buffer_append_string(output_buffer,
"@ ParenthesesNode (location: ", 29);
7039 prettyprint_location(output_buffer, parser, &node->
location);
7040 pm_buffer_append_string(output_buffer,
")\n", 2);
7044 pm_buffer_concat(output_buffer, prefix_buffer);
7045 pm_buffer_append_string(output_buffer,
"+-- ParenthesesNodeFlags:", 25);
7047 if (cast->
base.
flags & PM_PARENTHESES_NODE_FLAGS_MULTIPLE_STATEMENTS) {
7048 if (found) pm_buffer_append_byte(output_buffer,
',');
7049 pm_buffer_append_string(output_buffer,
" multiple_statements", 20);
7052 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
7053 pm_buffer_append_byte(output_buffer,
'\n');
7058 pm_buffer_concat(output_buffer, prefix_buffer);
7059 pm_buffer_append_string(output_buffer,
"+-- body:", 9);
7060 if (cast->
body == NULL) {
7061 pm_buffer_append_string(output_buffer,
" nil\n", 5);
7063 pm_buffer_append_byte(output_buffer,
'\n');
7065 size_t prefix_length = prefix_buffer->length;
7066 pm_buffer_append_string(prefix_buffer,
"| ", 4);
7067 pm_buffer_concat(output_buffer, prefix_buffer);
7068 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
body, prefix_buffer);
7069 prefix_buffer->length = prefix_length;
7075 pm_buffer_concat(output_buffer, prefix_buffer);
7076 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
7078 pm_buffer_append_byte(output_buffer,
' ');
7079 prettyprint_location(output_buffer, parser, location);
7080 pm_buffer_append_string(output_buffer,
" = \"", 4);
7081 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7082 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7087 pm_buffer_concat(output_buffer, prefix_buffer);
7088 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
7090 pm_buffer_append_byte(output_buffer,
' ');
7091 prettyprint_location(output_buffer, parser, location);
7092 pm_buffer_append_string(output_buffer,
" = \"", 4);
7093 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7094 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7099 case PM_PINNED_EXPRESSION_NODE: {
7101 pm_buffer_append_string(output_buffer,
"@ PinnedExpressionNode (location: ", 34);
7102 prettyprint_location(output_buffer, parser, &node->
location);
7103 pm_buffer_append_string(output_buffer,
")\n", 2);
7107 pm_buffer_concat(output_buffer, prefix_buffer);
7108 pm_buffer_append_string(output_buffer,
"+-- expression:", 15);
7109 pm_buffer_append_byte(output_buffer,
'\n');
7111 size_t prefix_length = prefix_buffer->length;
7112 pm_buffer_append_string(prefix_buffer,
"| ", 4);
7113 pm_buffer_concat(output_buffer, prefix_buffer);
7115 prefix_buffer->length = prefix_length;
7120 pm_buffer_concat(output_buffer, prefix_buffer);
7121 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
7123 pm_buffer_append_byte(output_buffer,
' ');
7124 prettyprint_location(output_buffer, parser, location);
7125 pm_buffer_append_string(output_buffer,
" = \"", 4);
7126 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7127 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7132 pm_buffer_concat(output_buffer, prefix_buffer);
7133 pm_buffer_append_string(output_buffer,
"+-- lparen_loc:", 15);
7135 pm_buffer_append_byte(output_buffer,
' ');
7136 prettyprint_location(output_buffer, parser, location);
7137 pm_buffer_append_string(output_buffer,
" = \"", 4);
7138 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7139 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7144 pm_buffer_concat(output_buffer, prefix_buffer);
7145 pm_buffer_append_string(output_buffer,
"+-- rparen_loc:", 15);
7147 pm_buffer_append_byte(output_buffer,
' ');
7148 prettyprint_location(output_buffer, parser, location);
7149 pm_buffer_append_string(output_buffer,
" = \"", 4);
7150 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7151 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7156 case PM_PINNED_VARIABLE_NODE: {
7158 pm_buffer_append_string(output_buffer,
"@ PinnedVariableNode (location: ", 32);
7159 prettyprint_location(output_buffer, parser, &node->
location);
7160 pm_buffer_append_string(output_buffer,
")\n", 2);
7164 pm_buffer_concat(output_buffer, prefix_buffer);
7165 pm_buffer_append_string(output_buffer,
"+-- variable:", 13);
7166 pm_buffer_append_byte(output_buffer,
'\n');
7168 size_t prefix_length = prefix_buffer->length;
7169 pm_buffer_append_string(prefix_buffer,
"| ", 4);
7170 pm_buffer_concat(output_buffer, prefix_buffer);
7171 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
variable, prefix_buffer);
7172 prefix_buffer->length = prefix_length;
7177 pm_buffer_concat(output_buffer, prefix_buffer);
7178 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
7180 pm_buffer_append_byte(output_buffer,
' ');
7181 prettyprint_location(output_buffer, parser, location);
7182 pm_buffer_append_string(output_buffer,
" = \"", 4);
7183 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7184 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7189 case PM_POST_EXECUTION_NODE: {
7191 pm_buffer_append_string(output_buffer,
"@ PostExecutionNode (location: ", 31);
7192 prettyprint_location(output_buffer, parser, &node->
location);
7193 pm_buffer_append_string(output_buffer,
")\n", 2);
7197 pm_buffer_concat(output_buffer, prefix_buffer);
7198 pm_buffer_append_string(output_buffer,
"+-- statements:", 15);
7200 pm_buffer_append_string(output_buffer,
" nil\n", 5);
7202 pm_buffer_append_byte(output_buffer,
'\n');
7204 size_t prefix_length = prefix_buffer->length;
7205 pm_buffer_append_string(prefix_buffer,
"| ", 4);
7206 pm_buffer_concat(output_buffer, prefix_buffer);
7208 prefix_buffer->length = prefix_length;
7214 pm_buffer_concat(output_buffer, prefix_buffer);
7215 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
7217 pm_buffer_append_byte(output_buffer,
' ');
7218 prettyprint_location(output_buffer, parser, location);
7219 pm_buffer_append_string(output_buffer,
" = \"", 4);
7220 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7221 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7226 pm_buffer_concat(output_buffer, prefix_buffer);
7227 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
7229 pm_buffer_append_byte(output_buffer,
' ');
7230 prettyprint_location(output_buffer, parser, location);
7231 pm_buffer_append_string(output_buffer,
" = \"", 4);
7232 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7233 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7238 pm_buffer_concat(output_buffer, prefix_buffer);
7239 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
7241 pm_buffer_append_byte(output_buffer,
' ');
7242 prettyprint_location(output_buffer, parser, location);
7243 pm_buffer_append_string(output_buffer,
" = \"", 4);
7244 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7245 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7250 case PM_PRE_EXECUTION_NODE: {
7252 pm_buffer_append_string(output_buffer,
"@ PreExecutionNode (location: ", 30);
7253 prettyprint_location(output_buffer, parser, &node->
location);
7254 pm_buffer_append_string(output_buffer,
")\n", 2);
7258 pm_buffer_concat(output_buffer, prefix_buffer);
7259 pm_buffer_append_string(output_buffer,
"+-- statements:", 15);
7261 pm_buffer_append_string(output_buffer,
" nil\n", 5);
7263 pm_buffer_append_byte(output_buffer,
'\n');
7265 size_t prefix_length = prefix_buffer->length;
7266 pm_buffer_append_string(prefix_buffer,
"| ", 4);
7267 pm_buffer_concat(output_buffer, prefix_buffer);
7269 prefix_buffer->length = prefix_length;
7275 pm_buffer_concat(output_buffer, prefix_buffer);
7276 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
7278 pm_buffer_append_byte(output_buffer,
' ');
7279 prettyprint_location(output_buffer, parser, location);
7280 pm_buffer_append_string(output_buffer,
" = \"", 4);
7281 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7282 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7287 pm_buffer_concat(output_buffer, prefix_buffer);
7288 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
7290 pm_buffer_append_byte(output_buffer,
' ');
7291 prettyprint_location(output_buffer, parser, location);
7292 pm_buffer_append_string(output_buffer,
" = \"", 4);
7293 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7294 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7299 pm_buffer_concat(output_buffer, prefix_buffer);
7300 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
7302 pm_buffer_append_byte(output_buffer,
' ');
7303 prettyprint_location(output_buffer, parser, location);
7304 pm_buffer_append_string(output_buffer,
" = \"", 4);
7305 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7306 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7311 case PM_PROGRAM_NODE: {
7313 pm_buffer_append_string(output_buffer,
"@ ProgramNode (location: ", 25);
7314 prettyprint_location(output_buffer, parser, &node->
location);
7315 pm_buffer_append_string(output_buffer,
")\n", 2);
7319 pm_buffer_concat(output_buffer, prefix_buffer);
7320 pm_buffer_append_string(output_buffer,
"+-- locals:", 11);
7321 pm_buffer_append_string(output_buffer,
" [", 2);
7322 for (uint32_t index = 0; index < cast->
locals.
size; index++) {
7323 if (index != 0) pm_buffer_append_string(output_buffer,
", ", 2);
7324 prettyprint_constant(output_buffer, parser, cast->
locals.
ids[index]);
7326 pm_buffer_append_string(output_buffer,
"]\n", 2);
7331 pm_buffer_concat(output_buffer, prefix_buffer);
7332 pm_buffer_append_string(output_buffer,
"+-- statements:", 15);
7333 pm_buffer_append_byte(output_buffer,
'\n');
7335 size_t prefix_length = prefix_buffer->length;
7336 pm_buffer_append_string(prefix_buffer,
" ", 4);
7337 pm_buffer_concat(output_buffer, prefix_buffer);
7339 prefix_buffer->length = prefix_length;
7344 case PM_RANGE_NODE: {
7346 pm_buffer_append_string(output_buffer,
"@ RangeNode (location: ", 23);
7347 prettyprint_location(output_buffer, parser, &node->
location);
7348 pm_buffer_append_string(output_buffer,
")\n", 2);
7352 pm_buffer_concat(output_buffer, prefix_buffer);
7353 pm_buffer_append_string(output_buffer,
"+-- RangeFlags:", 15);
7355 if (cast->
base.
flags & PM_RANGE_FLAGS_EXCLUDE_END) {
7356 if (found) pm_buffer_append_byte(output_buffer,
',');
7357 pm_buffer_append_string(output_buffer,
" exclude_end", 12);
7360 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
7361 pm_buffer_append_byte(output_buffer,
'\n');
7366 pm_buffer_concat(output_buffer, prefix_buffer);
7367 pm_buffer_append_string(output_buffer,
"+-- left:", 9);
7368 if (cast->
left == NULL) {
7369 pm_buffer_append_string(output_buffer,
" nil\n", 5);
7371 pm_buffer_append_byte(output_buffer,
'\n');
7373 size_t prefix_length = prefix_buffer->length;
7374 pm_buffer_append_string(prefix_buffer,
"| ", 4);
7375 pm_buffer_concat(output_buffer, prefix_buffer);
7376 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
left, prefix_buffer);
7377 prefix_buffer->length = prefix_length;
7383 pm_buffer_concat(output_buffer, prefix_buffer);
7384 pm_buffer_append_string(output_buffer,
"+-- right:", 10);
7385 if (cast->
right == NULL) {
7386 pm_buffer_append_string(output_buffer,
" nil\n", 5);
7388 pm_buffer_append_byte(output_buffer,
'\n');
7390 size_t prefix_length = prefix_buffer->length;
7391 pm_buffer_append_string(prefix_buffer,
"| ", 4);
7392 pm_buffer_concat(output_buffer, prefix_buffer);
7393 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
right, prefix_buffer);
7394 prefix_buffer->length = prefix_length;
7400 pm_buffer_concat(output_buffer, prefix_buffer);
7401 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
7403 pm_buffer_append_byte(output_buffer,
' ');
7404 prettyprint_location(output_buffer, parser, location);
7405 pm_buffer_append_string(output_buffer,
" = \"", 4);
7406 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7407 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7412 case PM_RATIONAL_NODE: {
7414 pm_buffer_append_string(output_buffer,
"@ RationalNode (location: ", 26);
7415 prettyprint_location(output_buffer, parser, &node->
location);
7416 pm_buffer_append_string(output_buffer,
")\n", 2);
7420 pm_buffer_concat(output_buffer, prefix_buffer);
7421 pm_buffer_append_string(output_buffer,
"+-- IntegerBaseFlags:", 21);
7423 if (cast->
base.
flags & PM_INTEGER_BASE_FLAGS_BINARY) {
7424 if (found) pm_buffer_append_byte(output_buffer,
',');
7425 pm_buffer_append_string(output_buffer,
" binary", 7);
7428 if (cast->
base.
flags & PM_INTEGER_BASE_FLAGS_DECIMAL) {
7429 if (found) pm_buffer_append_byte(output_buffer,
',');
7430 pm_buffer_append_string(output_buffer,
" decimal", 8);
7433 if (cast->
base.
flags & PM_INTEGER_BASE_FLAGS_OCTAL) {
7434 if (found) pm_buffer_append_byte(output_buffer,
',');
7435 pm_buffer_append_string(output_buffer,
" octal", 6);
7438 if (cast->
base.
flags & PM_INTEGER_BASE_FLAGS_HEXADECIMAL) {
7439 if (found) pm_buffer_append_byte(output_buffer,
',');
7440 pm_buffer_append_string(output_buffer,
" hexadecimal", 12);
7443 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
7444 pm_buffer_append_byte(output_buffer,
'\n');
7449 pm_buffer_concat(output_buffer, prefix_buffer);
7450 pm_buffer_append_string(output_buffer,
"+-- numerator:", 14);
7452 pm_buffer_append_byte(output_buffer,
' ');
7453 pm_integer_string(output_buffer, integer);
7454 pm_buffer_append_byte(output_buffer,
'\n');
7459 pm_buffer_concat(output_buffer, prefix_buffer);
7460 pm_buffer_append_string(output_buffer,
"+-- denominator:", 16);
7462 pm_buffer_append_byte(output_buffer,
' ');
7463 pm_integer_string(output_buffer, integer);
7464 pm_buffer_append_byte(output_buffer,
'\n');
7469 case PM_REDO_NODE: {
7470 pm_buffer_append_string(output_buffer,
"@ RedoNode (location: ", 22);
7471 prettyprint_location(output_buffer, parser, &node->
location);
7472 pm_buffer_append_string(output_buffer,
")\n", 2);
7476 case PM_REGULAR_EXPRESSION_NODE: {
7478 pm_buffer_append_string(output_buffer,
"@ RegularExpressionNode (location: ", 35);
7479 prettyprint_location(output_buffer, parser, &node->
location);
7480 pm_buffer_append_string(output_buffer,
")\n", 2);
7484 pm_buffer_concat(output_buffer, prefix_buffer);
7485 pm_buffer_append_string(output_buffer,
"+-- RegularExpressionFlags:", 27);
7487 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE) {
7488 if (found) pm_buffer_append_byte(output_buffer,
',');
7489 pm_buffer_append_string(output_buffer,
" ignore_case", 12);
7492 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_EXTENDED) {
7493 if (found) pm_buffer_append_byte(output_buffer,
',');
7494 pm_buffer_append_string(output_buffer,
" extended", 9);
7497 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE) {
7498 if (found) pm_buffer_append_byte(output_buffer,
',');
7499 pm_buffer_append_string(output_buffer,
" multi_line", 11);
7502 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_ONCE) {
7503 if (found) pm_buffer_append_byte(output_buffer,
',');
7504 pm_buffer_append_string(output_buffer,
" once", 5);
7507 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_EUC_JP) {
7508 if (found) pm_buffer_append_byte(output_buffer,
',');
7509 pm_buffer_append_string(output_buffer,
" euc_jp", 7);
7512 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT) {
7513 if (found) pm_buffer_append_byte(output_buffer,
',');
7514 pm_buffer_append_string(output_buffer,
" ascii_8bit", 11);
7517 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J) {
7518 if (found) pm_buffer_append_byte(output_buffer,
',');
7519 pm_buffer_append_string(output_buffer,
" windows_31j", 12);
7522 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_UTF_8) {
7523 if (found) pm_buffer_append_byte(output_buffer,
',');
7524 pm_buffer_append_string(output_buffer,
" utf_8", 6);
7527 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING) {
7528 if (found) pm_buffer_append_byte(output_buffer,
',');
7529 pm_buffer_append_string(output_buffer,
" forced_utf8_encoding", 21);
7532 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING) {
7533 if (found) pm_buffer_append_byte(output_buffer,
',');
7534 pm_buffer_append_string(output_buffer,
" forced_binary_encoding", 23);
7537 if (cast->
base.
flags & PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING) {
7538 if (found) pm_buffer_append_byte(output_buffer,
',');
7539 pm_buffer_append_string(output_buffer,
" forced_us_ascii_encoding", 25);
7542 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
7543 pm_buffer_append_byte(output_buffer,
'\n');
7548 pm_buffer_concat(output_buffer, prefix_buffer);
7549 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
7551 pm_buffer_append_byte(output_buffer,
' ');
7552 prettyprint_location(output_buffer, parser, location);
7553 pm_buffer_append_string(output_buffer,
" = \"", 4);
7554 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7555 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7560 pm_buffer_concat(output_buffer, prefix_buffer);
7561 pm_buffer_append_string(output_buffer,
"+-- content_loc:", 16);
7563 pm_buffer_append_byte(output_buffer,
' ');
7564 prettyprint_location(output_buffer, parser, location);
7565 pm_buffer_append_string(output_buffer,
" = \"", 4);
7566 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7567 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7572 pm_buffer_concat(output_buffer, prefix_buffer);
7573 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
7575 pm_buffer_append_byte(output_buffer,
' ');
7576 prettyprint_location(output_buffer, parser, location);
7577 pm_buffer_append_string(output_buffer,
" = \"", 4);
7578 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7579 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7584 pm_buffer_concat(output_buffer, prefix_buffer);
7585 pm_buffer_append_string(output_buffer,
"+-- unescaped:", 14);
7586 pm_buffer_append_string(output_buffer,
" \"", 2);
7587 pm_buffer_append_source(output_buffer, pm_string_source(&cast->
unescaped), pm_string_length(&cast->
unescaped), PM_BUFFER_ESCAPING_RUBY);
7588 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7593 case PM_REQUIRED_KEYWORD_PARAMETER_NODE: {
7595 pm_buffer_append_string(output_buffer,
"@ RequiredKeywordParameterNode (location: ", 42);
7596 prettyprint_location(output_buffer, parser, &node->
location);
7597 pm_buffer_append_string(output_buffer,
")\n", 2);
7601 pm_buffer_concat(output_buffer, prefix_buffer);
7602 pm_buffer_append_string(output_buffer,
"+-- ParameterFlags:", 19);
7604 if (cast->
base.
flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
7605 if (found) pm_buffer_append_byte(output_buffer,
',');
7606 pm_buffer_append_string(output_buffer,
" repeated_parameter", 19);
7609 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
7610 pm_buffer_append_byte(output_buffer,
'\n');
7615 pm_buffer_concat(output_buffer, prefix_buffer);
7616 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
7617 pm_buffer_append_byte(output_buffer,
' ');
7618 prettyprint_constant(output_buffer, parser, cast->
name);
7619 pm_buffer_append_byte(output_buffer,
'\n');
7624 pm_buffer_concat(output_buffer, prefix_buffer);
7625 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
7627 pm_buffer_append_byte(output_buffer,
' ');
7628 prettyprint_location(output_buffer, parser, location);
7629 pm_buffer_append_string(output_buffer,
" = \"", 4);
7630 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7631 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7636 case PM_REQUIRED_PARAMETER_NODE: {
7638 pm_buffer_append_string(output_buffer,
"@ RequiredParameterNode (location: ", 35);
7639 prettyprint_location(output_buffer, parser, &node->
location);
7640 pm_buffer_append_string(output_buffer,
")\n", 2);
7644 pm_buffer_concat(output_buffer, prefix_buffer);
7645 pm_buffer_append_string(output_buffer,
"+-- ParameterFlags:", 19);
7647 if (cast->
base.
flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
7648 if (found) pm_buffer_append_byte(output_buffer,
',');
7649 pm_buffer_append_string(output_buffer,
" repeated_parameter", 19);
7652 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
7653 pm_buffer_append_byte(output_buffer,
'\n');
7658 pm_buffer_concat(output_buffer, prefix_buffer);
7659 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
7660 pm_buffer_append_byte(output_buffer,
' ');
7661 prettyprint_constant(output_buffer, parser, cast->
name);
7662 pm_buffer_append_byte(output_buffer,
'\n');
7667 case PM_RESCUE_MODIFIER_NODE: {
7669 pm_buffer_append_string(output_buffer,
"@ RescueModifierNode (location: ", 32);
7670 prettyprint_location(output_buffer, parser, &node->
location);
7671 pm_buffer_append_string(output_buffer,
")\n", 2);
7675 pm_buffer_concat(output_buffer, prefix_buffer);
7676 pm_buffer_append_string(output_buffer,
"+-- expression:", 15);
7677 pm_buffer_append_byte(output_buffer,
'\n');
7679 size_t prefix_length = prefix_buffer->length;
7680 pm_buffer_append_string(prefix_buffer,
"| ", 4);
7681 pm_buffer_concat(output_buffer, prefix_buffer);
7683 prefix_buffer->length = prefix_length;
7688 pm_buffer_concat(output_buffer, prefix_buffer);
7689 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
7691 pm_buffer_append_byte(output_buffer,
' ');
7692 prettyprint_location(output_buffer, parser, location);
7693 pm_buffer_append_string(output_buffer,
" = \"", 4);
7694 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7695 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7700 pm_buffer_concat(output_buffer, prefix_buffer);
7701 pm_buffer_append_string(output_buffer,
"+-- rescue_expression:", 22);
7702 pm_buffer_append_byte(output_buffer,
'\n');
7704 size_t prefix_length = prefix_buffer->length;
7705 pm_buffer_append_string(prefix_buffer,
" ", 4);
7706 pm_buffer_concat(output_buffer, prefix_buffer);
7708 prefix_buffer->length = prefix_length;
7713 case PM_RESCUE_NODE: {
7715 pm_buffer_append_string(output_buffer,
"@ RescueNode (location: ", 24);
7716 prettyprint_location(output_buffer, parser, &node->
location);
7717 pm_buffer_append_string(output_buffer,
")\n", 2);
7721 pm_buffer_concat(output_buffer, prefix_buffer);
7722 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
7724 pm_buffer_append_byte(output_buffer,
' ');
7725 prettyprint_location(output_buffer, parser, location);
7726 pm_buffer_append_string(output_buffer,
" = \"", 4);
7727 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7728 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7733 pm_buffer_concat(output_buffer, prefix_buffer);
7734 pm_buffer_append_string(output_buffer,
"+-- exceptions:", 15);
7735 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
exceptions.
size));
7738 for (uint32_t index = 0; index < last_index; index++) {
7739 size_t prefix_length = prefix_buffer->length;
7740 pm_buffer_append_string(prefix_buffer,
"| ", 4);
7741 pm_buffer_concat(output_buffer, prefix_buffer);
7742 pm_buffer_append_string(output_buffer,
"+-- ", 4);
7743 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
7745 prefix_buffer->length = prefix_length;
7751 pm_buffer_concat(output_buffer, prefix_buffer);
7752 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
7754 if (location->
length == 0) {
7755 pm_buffer_append_string(output_buffer,
" nil\n", 5);
7757 pm_buffer_append_byte(output_buffer,
' ');
7758 prettyprint_location(output_buffer, parser, location);
7759 pm_buffer_append_string(output_buffer,
" = \"", 4);
7760 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7761 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7767 pm_buffer_concat(output_buffer, prefix_buffer);
7768 pm_buffer_append_string(output_buffer,
"+-- reference:", 14);
7770 pm_buffer_append_string(output_buffer,
" nil\n", 5);
7772 pm_buffer_append_byte(output_buffer,
'\n');
7774 size_t prefix_length = prefix_buffer->length;
7775 pm_buffer_append_string(prefix_buffer,
"| ", 4);
7776 pm_buffer_concat(output_buffer, prefix_buffer);
7777 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
reference, prefix_buffer);
7778 prefix_buffer->length = prefix_length;
7784 pm_buffer_concat(output_buffer, prefix_buffer);
7785 pm_buffer_append_string(output_buffer,
"+-- then_keyword_loc:", 21);
7787 if (location->
length == 0) {
7788 pm_buffer_append_string(output_buffer,
" nil\n", 5);
7790 pm_buffer_append_byte(output_buffer,
' ');
7791 prettyprint_location(output_buffer, parser, location);
7792 pm_buffer_append_string(output_buffer,
" = \"", 4);
7793 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7794 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7800 pm_buffer_concat(output_buffer, prefix_buffer);
7801 pm_buffer_append_string(output_buffer,
"+-- statements:", 15);
7803 pm_buffer_append_string(output_buffer,
" nil\n", 5);
7805 pm_buffer_append_byte(output_buffer,
'\n');
7807 size_t prefix_length = prefix_buffer->length;
7808 pm_buffer_append_string(prefix_buffer,
"| ", 4);
7809 pm_buffer_concat(output_buffer, prefix_buffer);
7811 prefix_buffer->length = prefix_length;
7817 pm_buffer_concat(output_buffer, prefix_buffer);
7818 pm_buffer_append_string(output_buffer,
"+-- subsequent:", 15);
7820 pm_buffer_append_string(output_buffer,
" nil\n", 5);
7822 pm_buffer_append_byte(output_buffer,
'\n');
7824 size_t prefix_length = prefix_buffer->length;
7825 pm_buffer_append_string(prefix_buffer,
" ", 4);
7826 pm_buffer_concat(output_buffer, prefix_buffer);
7828 prefix_buffer->length = prefix_length;
7834 case PM_REST_PARAMETER_NODE: {
7836 pm_buffer_append_string(output_buffer,
"@ RestParameterNode (location: ", 31);
7837 prettyprint_location(output_buffer, parser, &node->
location);
7838 pm_buffer_append_string(output_buffer,
")\n", 2);
7842 pm_buffer_concat(output_buffer, prefix_buffer);
7843 pm_buffer_append_string(output_buffer,
"+-- ParameterFlags:", 19);
7845 if (cast->
base.
flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
7846 if (found) pm_buffer_append_byte(output_buffer,
',');
7847 pm_buffer_append_string(output_buffer,
" repeated_parameter", 19);
7850 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
7851 pm_buffer_append_byte(output_buffer,
'\n');
7856 pm_buffer_concat(output_buffer, prefix_buffer);
7857 pm_buffer_append_string(output_buffer,
"+-- name:", 9);
7858 if (cast->
name == 0) {
7859 pm_buffer_append_string(output_buffer,
" nil\n", 5);
7861 pm_buffer_append_byte(output_buffer,
' ');
7862 prettyprint_constant(output_buffer, parser, cast->
name);
7863 pm_buffer_append_byte(output_buffer,
'\n');
7869 pm_buffer_concat(output_buffer, prefix_buffer);
7870 pm_buffer_append_string(output_buffer,
"+-- name_loc:", 13);
7872 if (location->
length == 0) {
7873 pm_buffer_append_string(output_buffer,
" nil\n", 5);
7875 pm_buffer_append_byte(output_buffer,
' ');
7876 prettyprint_location(output_buffer, parser, location);
7877 pm_buffer_append_string(output_buffer,
" = \"", 4);
7878 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7879 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7885 pm_buffer_concat(output_buffer, prefix_buffer);
7886 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
7888 pm_buffer_append_byte(output_buffer,
' ');
7889 prettyprint_location(output_buffer, parser, location);
7890 pm_buffer_append_string(output_buffer,
" = \"", 4);
7891 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7892 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7897 case PM_RETRY_NODE: {
7898 pm_buffer_append_string(output_buffer,
"@ RetryNode (location: ", 23);
7899 prettyprint_location(output_buffer, parser, &node->
location);
7900 pm_buffer_append_string(output_buffer,
")\n", 2);
7904 case PM_RETURN_NODE: {
7906 pm_buffer_append_string(output_buffer,
"@ ReturnNode (location: ", 24);
7907 prettyprint_location(output_buffer, parser, &node->
location);
7908 pm_buffer_append_string(output_buffer,
")\n", 2);
7912 pm_buffer_concat(output_buffer, prefix_buffer);
7913 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
7915 pm_buffer_append_byte(output_buffer,
' ');
7916 prettyprint_location(output_buffer, parser, location);
7917 pm_buffer_append_string(output_buffer,
" = \"", 4);
7918 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
7919 pm_buffer_append_string(output_buffer,
"\"\n", 2);
7924 pm_buffer_concat(output_buffer, prefix_buffer);
7925 pm_buffer_append_string(output_buffer,
"+-- arguments:", 14);
7927 pm_buffer_append_string(output_buffer,
" nil\n", 5);
7929 pm_buffer_append_byte(output_buffer,
'\n');
7931 size_t prefix_length = prefix_buffer->length;
7932 pm_buffer_append_string(prefix_buffer,
" ", 4);
7933 pm_buffer_concat(output_buffer, prefix_buffer);
7934 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
7935 prefix_buffer->length = prefix_length;
7941 case PM_SELF_NODE: {
7942 pm_buffer_append_string(output_buffer,
"@ SelfNode (location: ", 22);
7943 prettyprint_location(output_buffer, parser, &node->
location);
7944 pm_buffer_append_string(output_buffer,
")\n", 2);
7948 case PM_SHAREABLE_CONSTANT_NODE: {
7950 pm_buffer_append_string(output_buffer,
"@ ShareableConstantNode (location: ", 35);
7951 prettyprint_location(output_buffer, parser, &node->
location);
7952 pm_buffer_append_string(output_buffer,
")\n", 2);
7956 pm_buffer_concat(output_buffer, prefix_buffer);
7957 pm_buffer_append_string(output_buffer,
"+-- ShareableConstantNodeFlags:", 31);
7959 if (cast->
base.
flags & PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL) {
7960 if (found) pm_buffer_append_byte(output_buffer,
',');
7961 pm_buffer_append_string(output_buffer,
" literal", 8);
7964 if (cast->
base.
flags & PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_EVERYTHING) {
7965 if (found) pm_buffer_append_byte(output_buffer,
',');
7966 pm_buffer_append_string(output_buffer,
" experimental_everything", 24);
7969 if (cast->
base.
flags & PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_COPY) {
7970 if (found) pm_buffer_append_byte(output_buffer,
',');
7971 pm_buffer_append_string(output_buffer,
" experimental_copy", 18);
7974 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
7975 pm_buffer_append_byte(output_buffer,
'\n');
7980 pm_buffer_concat(output_buffer, prefix_buffer);
7981 pm_buffer_append_string(output_buffer,
"+-- write:", 10);
7982 pm_buffer_append_byte(output_buffer,
'\n');
7984 size_t prefix_length = prefix_buffer->length;
7985 pm_buffer_append_string(prefix_buffer,
" ", 4);
7986 pm_buffer_concat(output_buffer, prefix_buffer);
7987 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
write, prefix_buffer);
7988 prefix_buffer->length = prefix_length;
7993 case PM_SINGLETON_CLASS_NODE: {
7995 pm_buffer_append_string(output_buffer,
"@ SingletonClassNode (location: ", 32);
7996 prettyprint_location(output_buffer, parser, &node->
location);
7997 pm_buffer_append_string(output_buffer,
")\n", 2);
8001 pm_buffer_concat(output_buffer, prefix_buffer);
8002 pm_buffer_append_string(output_buffer,
"+-- locals:", 11);
8003 pm_buffer_append_string(output_buffer,
" [", 2);
8004 for (uint32_t index = 0; index < cast->
locals.
size; index++) {
8005 if (index != 0) pm_buffer_append_string(output_buffer,
", ", 2);
8006 prettyprint_constant(output_buffer, parser, cast->
locals.
ids[index]);
8008 pm_buffer_append_string(output_buffer,
"]\n", 2);
8013 pm_buffer_concat(output_buffer, prefix_buffer);
8014 pm_buffer_append_string(output_buffer,
"+-- class_keyword_loc:", 22);
8016 pm_buffer_append_byte(output_buffer,
' ');
8017 prettyprint_location(output_buffer, parser, location);
8018 pm_buffer_append_string(output_buffer,
" = \"", 4);
8019 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8020 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8025 pm_buffer_concat(output_buffer, prefix_buffer);
8026 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
8028 pm_buffer_append_byte(output_buffer,
' ');
8029 prettyprint_location(output_buffer, parser, location);
8030 pm_buffer_append_string(output_buffer,
" = \"", 4);
8031 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8032 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8037 pm_buffer_concat(output_buffer, prefix_buffer);
8038 pm_buffer_append_string(output_buffer,
"+-- expression:", 15);
8039 pm_buffer_append_byte(output_buffer,
'\n');
8041 size_t prefix_length = prefix_buffer->length;
8042 pm_buffer_append_string(prefix_buffer,
"| ", 4);
8043 pm_buffer_concat(output_buffer, prefix_buffer);
8045 prefix_buffer->length = prefix_length;
8050 pm_buffer_concat(output_buffer, prefix_buffer);
8051 pm_buffer_append_string(output_buffer,
"+-- body:", 9);
8052 if (cast->
body == NULL) {
8053 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8055 pm_buffer_append_byte(output_buffer,
'\n');
8057 size_t prefix_length = prefix_buffer->length;
8058 pm_buffer_append_string(prefix_buffer,
"| ", 4);
8059 pm_buffer_concat(output_buffer, prefix_buffer);
8060 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
body, prefix_buffer);
8061 prefix_buffer->length = prefix_length;
8067 pm_buffer_concat(output_buffer, prefix_buffer);
8068 pm_buffer_append_string(output_buffer,
"+-- end_keyword_loc:", 20);
8070 pm_buffer_append_byte(output_buffer,
' ');
8071 prettyprint_location(output_buffer, parser, location);
8072 pm_buffer_append_string(output_buffer,
" = \"", 4);
8073 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8074 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8079 case PM_SOURCE_ENCODING_NODE: {
8080 pm_buffer_append_string(output_buffer,
"@ SourceEncodingNode (location: ", 32);
8081 prettyprint_location(output_buffer, parser, &node->
location);
8082 pm_buffer_append_string(output_buffer,
")\n", 2);
8086 case PM_SOURCE_FILE_NODE: {
8088 pm_buffer_append_string(output_buffer,
"@ SourceFileNode (location: ", 28);
8089 prettyprint_location(output_buffer, parser, &node->
location);
8090 pm_buffer_append_string(output_buffer,
")\n", 2);
8094 pm_buffer_concat(output_buffer, prefix_buffer);
8095 pm_buffer_append_string(output_buffer,
"+-- StringFlags:", 16);
8097 if (cast->
base.
flags & PM_STRING_FLAGS_FORCED_UTF8_ENCODING) {
8098 if (found) pm_buffer_append_byte(output_buffer,
',');
8099 pm_buffer_append_string(output_buffer,
" forced_utf8_encoding", 21);
8102 if (cast->
base.
flags & PM_STRING_FLAGS_FORCED_BINARY_ENCODING) {
8103 if (found) pm_buffer_append_byte(output_buffer,
',');
8104 pm_buffer_append_string(output_buffer,
" forced_binary_encoding", 23);
8107 if (cast->
base.
flags & PM_STRING_FLAGS_FROZEN) {
8108 if (found) pm_buffer_append_byte(output_buffer,
',');
8109 pm_buffer_append_string(output_buffer,
" frozen", 7);
8112 if (cast->
base.
flags & PM_STRING_FLAGS_MUTABLE) {
8113 if (found) pm_buffer_append_byte(output_buffer,
',');
8114 pm_buffer_append_string(output_buffer,
" mutable", 8);
8117 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
8118 pm_buffer_append_byte(output_buffer,
'\n');
8123 pm_buffer_concat(output_buffer, prefix_buffer);
8124 pm_buffer_append_string(output_buffer,
"+-- filepath:", 13);
8125 pm_buffer_append_string(output_buffer,
" \"", 2);
8126 pm_buffer_append_source(output_buffer, pm_string_source(&cast->
filepath), pm_string_length(&cast->
filepath), PM_BUFFER_ESCAPING_RUBY);
8127 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8132 case PM_SOURCE_LINE_NODE: {
8133 pm_buffer_append_string(output_buffer,
"@ SourceLineNode (location: ", 28);
8134 prettyprint_location(output_buffer, parser, &node->
location);
8135 pm_buffer_append_string(output_buffer,
")\n", 2);
8139 case PM_SPLAT_NODE: {
8141 pm_buffer_append_string(output_buffer,
"@ SplatNode (location: ", 23);
8142 prettyprint_location(output_buffer, parser, &node->
location);
8143 pm_buffer_append_string(output_buffer,
")\n", 2);
8147 pm_buffer_concat(output_buffer, prefix_buffer);
8148 pm_buffer_append_string(output_buffer,
"+-- operator_loc:", 17);
8150 pm_buffer_append_byte(output_buffer,
' ');
8151 prettyprint_location(output_buffer, parser, location);
8152 pm_buffer_append_string(output_buffer,
" = \"", 4);
8153 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8154 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8159 pm_buffer_concat(output_buffer, prefix_buffer);
8160 pm_buffer_append_string(output_buffer,
"+-- expression:", 15);
8162 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8164 pm_buffer_append_byte(output_buffer,
'\n');
8166 size_t prefix_length = prefix_buffer->length;
8167 pm_buffer_append_string(prefix_buffer,
" ", 4);
8168 pm_buffer_concat(output_buffer, prefix_buffer);
8170 prefix_buffer->length = prefix_length;
8176 case PM_STATEMENTS_NODE: {
8178 pm_buffer_append_string(output_buffer,
"@ StatementsNode (location: ", 28);
8179 prettyprint_location(output_buffer, parser, &node->
location);
8180 pm_buffer_append_string(output_buffer,
")\n", 2);
8184 pm_buffer_concat(output_buffer, prefix_buffer);
8185 pm_buffer_append_string(output_buffer,
"+-- body:", 9);
8186 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
body.
size));
8188 size_t last_index = cast->
body.
size;
8189 for (uint32_t index = 0; index < last_index; index++) {
8190 size_t prefix_length = prefix_buffer->length;
8191 pm_buffer_append_string(prefix_buffer,
" ", 4);
8192 pm_buffer_concat(output_buffer, prefix_buffer);
8193 pm_buffer_append_string(output_buffer,
"+-- ", 4);
8194 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
8195 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
body.
nodes[index], prefix_buffer);
8196 prefix_buffer->length = prefix_length;
8202 case PM_STRING_NODE: {
8204 pm_buffer_append_string(output_buffer,
"@ StringNode (location: ", 24);
8205 prettyprint_location(output_buffer, parser, &node->
location);
8206 pm_buffer_append_string(output_buffer,
")\n", 2);
8210 pm_buffer_concat(output_buffer, prefix_buffer);
8211 pm_buffer_append_string(output_buffer,
"+-- StringFlags:", 16);
8213 if (cast->
base.
flags & PM_STRING_FLAGS_FORCED_UTF8_ENCODING) {
8214 if (found) pm_buffer_append_byte(output_buffer,
',');
8215 pm_buffer_append_string(output_buffer,
" forced_utf8_encoding", 21);
8218 if (cast->
base.
flags & PM_STRING_FLAGS_FORCED_BINARY_ENCODING) {
8219 if (found) pm_buffer_append_byte(output_buffer,
',');
8220 pm_buffer_append_string(output_buffer,
" forced_binary_encoding", 23);
8223 if (cast->
base.
flags & PM_STRING_FLAGS_FROZEN) {
8224 if (found) pm_buffer_append_byte(output_buffer,
',');
8225 pm_buffer_append_string(output_buffer,
" frozen", 7);
8228 if (cast->
base.
flags & PM_STRING_FLAGS_MUTABLE) {
8229 if (found) pm_buffer_append_byte(output_buffer,
',');
8230 pm_buffer_append_string(output_buffer,
" mutable", 8);
8233 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
8234 pm_buffer_append_byte(output_buffer,
'\n');
8239 pm_buffer_concat(output_buffer, prefix_buffer);
8240 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
8242 if (location->
length == 0) {
8243 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8245 pm_buffer_append_byte(output_buffer,
' ');
8246 prettyprint_location(output_buffer, parser, location);
8247 pm_buffer_append_string(output_buffer,
" = \"", 4);
8248 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8249 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8255 pm_buffer_concat(output_buffer, prefix_buffer);
8256 pm_buffer_append_string(output_buffer,
"+-- content_loc:", 16);
8258 pm_buffer_append_byte(output_buffer,
' ');
8259 prettyprint_location(output_buffer, parser, location);
8260 pm_buffer_append_string(output_buffer,
" = \"", 4);
8261 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8262 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8267 pm_buffer_concat(output_buffer, prefix_buffer);
8268 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
8270 if (location->
length == 0) {
8271 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8273 pm_buffer_append_byte(output_buffer,
' ');
8274 prettyprint_location(output_buffer, parser, location);
8275 pm_buffer_append_string(output_buffer,
" = \"", 4);
8276 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8277 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8283 pm_buffer_concat(output_buffer, prefix_buffer);
8284 pm_buffer_append_string(output_buffer,
"+-- unescaped:", 14);
8285 pm_buffer_append_string(output_buffer,
" \"", 2);
8286 pm_buffer_append_source(output_buffer, pm_string_source(&cast->
unescaped), pm_string_length(&cast->
unescaped), PM_BUFFER_ESCAPING_RUBY);
8287 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8292 case PM_SUPER_NODE: {
8294 pm_buffer_append_string(output_buffer,
"@ SuperNode (location: ", 23);
8295 prettyprint_location(output_buffer, parser, &node->
location);
8296 pm_buffer_append_string(output_buffer,
")\n", 2);
8300 pm_buffer_concat(output_buffer, prefix_buffer);
8301 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
8303 pm_buffer_append_byte(output_buffer,
' ');
8304 prettyprint_location(output_buffer, parser, location);
8305 pm_buffer_append_string(output_buffer,
" = \"", 4);
8306 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8307 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8312 pm_buffer_concat(output_buffer, prefix_buffer);
8313 pm_buffer_append_string(output_buffer,
"+-- lparen_loc:", 15);
8315 if (location->
length == 0) {
8316 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8318 pm_buffer_append_byte(output_buffer,
' ');
8319 prettyprint_location(output_buffer, parser, location);
8320 pm_buffer_append_string(output_buffer,
" = \"", 4);
8321 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8322 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8328 pm_buffer_concat(output_buffer, prefix_buffer);
8329 pm_buffer_append_string(output_buffer,
"+-- arguments:", 14);
8331 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8333 pm_buffer_append_byte(output_buffer,
'\n');
8335 size_t prefix_length = prefix_buffer->length;
8336 pm_buffer_append_string(prefix_buffer,
"| ", 4);
8337 pm_buffer_concat(output_buffer, prefix_buffer);
8338 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
8339 prefix_buffer->length = prefix_length;
8345 pm_buffer_concat(output_buffer, prefix_buffer);
8346 pm_buffer_append_string(output_buffer,
"+-- rparen_loc:", 15);
8348 if (location->
length == 0) {
8349 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8351 pm_buffer_append_byte(output_buffer,
' ');
8352 prettyprint_location(output_buffer, parser, location);
8353 pm_buffer_append_string(output_buffer,
" = \"", 4);
8354 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8355 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8361 pm_buffer_concat(output_buffer, prefix_buffer);
8362 pm_buffer_append_string(output_buffer,
"+-- block:", 10);
8363 if (cast->
block == NULL) {
8364 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8366 pm_buffer_append_byte(output_buffer,
'\n');
8368 size_t prefix_length = prefix_buffer->length;
8369 pm_buffer_append_string(prefix_buffer,
" ", 4);
8370 pm_buffer_concat(output_buffer, prefix_buffer);
8371 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
block, prefix_buffer);
8372 prefix_buffer->length = prefix_length;
8378 case PM_SYMBOL_NODE: {
8380 pm_buffer_append_string(output_buffer,
"@ SymbolNode (location: ", 24);
8381 prettyprint_location(output_buffer, parser, &node->
location);
8382 pm_buffer_append_string(output_buffer,
")\n", 2);
8386 pm_buffer_concat(output_buffer, prefix_buffer);
8387 pm_buffer_append_string(output_buffer,
"+-- SymbolFlags:", 16);
8389 if (cast->
base.
flags & PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING) {
8390 if (found) pm_buffer_append_byte(output_buffer,
',');
8391 pm_buffer_append_string(output_buffer,
" forced_utf8_encoding", 21);
8394 if (cast->
base.
flags & PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING) {
8395 if (found) pm_buffer_append_byte(output_buffer,
',');
8396 pm_buffer_append_string(output_buffer,
" forced_binary_encoding", 23);
8399 if (cast->
base.
flags & PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING) {
8400 if (found) pm_buffer_append_byte(output_buffer,
',');
8401 pm_buffer_append_string(output_buffer,
" forced_us_ascii_encoding", 25);
8404 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
8405 pm_buffer_append_byte(output_buffer,
'\n');
8410 pm_buffer_concat(output_buffer, prefix_buffer);
8411 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
8413 if (location->
length == 0) {
8414 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8416 pm_buffer_append_byte(output_buffer,
' ');
8417 prettyprint_location(output_buffer, parser, location);
8418 pm_buffer_append_string(output_buffer,
" = \"", 4);
8419 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8420 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8426 pm_buffer_concat(output_buffer, prefix_buffer);
8427 pm_buffer_append_string(output_buffer,
"+-- value_loc:", 14);
8429 pm_buffer_append_byte(output_buffer,
' ');
8430 prettyprint_location(output_buffer, parser, location);
8431 pm_buffer_append_string(output_buffer,
" = \"", 4);
8432 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8433 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8438 pm_buffer_concat(output_buffer, prefix_buffer);
8439 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
8441 if (location->
length == 0) {
8442 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8444 pm_buffer_append_byte(output_buffer,
' ');
8445 prettyprint_location(output_buffer, parser, location);
8446 pm_buffer_append_string(output_buffer,
" = \"", 4);
8447 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8448 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8454 pm_buffer_concat(output_buffer, prefix_buffer);
8455 pm_buffer_append_string(output_buffer,
"+-- unescaped:", 14);
8456 pm_buffer_append_string(output_buffer,
" \"", 2);
8457 pm_buffer_append_source(output_buffer, pm_string_source(&cast->
unescaped), pm_string_length(&cast->
unescaped), PM_BUFFER_ESCAPING_RUBY);
8458 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8463 case PM_TRUE_NODE: {
8464 pm_buffer_append_string(output_buffer,
"@ TrueNode (location: ", 22);
8465 prettyprint_location(output_buffer, parser, &node->
location);
8466 pm_buffer_append_string(output_buffer,
")\n", 2);
8470 case PM_UNDEF_NODE: {
8472 pm_buffer_append_string(output_buffer,
"@ UndefNode (location: ", 23);
8473 prettyprint_location(output_buffer, parser, &node->
location);
8474 pm_buffer_append_string(output_buffer,
")\n", 2);
8478 pm_buffer_concat(output_buffer, prefix_buffer);
8479 pm_buffer_append_string(output_buffer,
"+-- names:", 10);
8480 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
names.
size));
8483 for (uint32_t index = 0; index < last_index; index++) {
8484 size_t prefix_length = prefix_buffer->length;
8485 pm_buffer_append_string(prefix_buffer,
"| ", 4);
8486 pm_buffer_concat(output_buffer, prefix_buffer);
8487 pm_buffer_append_string(output_buffer,
"+-- ", 4);
8488 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
8489 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
names.
nodes[index], prefix_buffer);
8490 prefix_buffer->length = prefix_length;
8496 pm_buffer_concat(output_buffer, prefix_buffer);
8497 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
8499 pm_buffer_append_byte(output_buffer,
' ');
8500 prettyprint_location(output_buffer, parser, location);
8501 pm_buffer_append_string(output_buffer,
" = \"", 4);
8502 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8503 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8508 case PM_UNLESS_NODE: {
8510 pm_buffer_append_string(output_buffer,
"@ UnlessNode (location: ", 24);
8511 prettyprint_location(output_buffer, parser, &node->
location);
8512 pm_buffer_append_string(output_buffer,
")\n", 2);
8516 pm_buffer_concat(output_buffer, prefix_buffer);
8517 pm_buffer_append_string(output_buffer,
"+-- unless_keyword_loc:", 23);
8519 pm_buffer_append_byte(output_buffer,
' ');
8520 prettyprint_location(output_buffer, parser, location);
8521 pm_buffer_append_string(output_buffer,
" = \"", 4);
8522 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8523 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8528 pm_buffer_concat(output_buffer, prefix_buffer);
8529 pm_buffer_append_string(output_buffer,
"+-- predicate:", 14);
8530 pm_buffer_append_byte(output_buffer,
'\n');
8532 size_t prefix_length = prefix_buffer->length;
8533 pm_buffer_append_string(prefix_buffer,
"| ", 4);
8534 pm_buffer_concat(output_buffer, prefix_buffer);
8535 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
predicate, prefix_buffer);
8536 prefix_buffer->length = prefix_length;
8541 pm_buffer_concat(output_buffer, prefix_buffer);
8542 pm_buffer_append_string(output_buffer,
"+-- then_keyword_loc:", 21);
8544 if (location->
length == 0) {
8545 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8547 pm_buffer_append_byte(output_buffer,
' ');
8548 prettyprint_location(output_buffer, parser, location);
8549 pm_buffer_append_string(output_buffer,
" = \"", 4);
8550 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8551 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8557 pm_buffer_concat(output_buffer, prefix_buffer);
8558 pm_buffer_append_string(output_buffer,
"+-- statements:", 15);
8560 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8562 pm_buffer_append_byte(output_buffer,
'\n');
8564 size_t prefix_length = prefix_buffer->length;
8565 pm_buffer_append_string(prefix_buffer,
"| ", 4);
8566 pm_buffer_concat(output_buffer, prefix_buffer);
8568 prefix_buffer->length = prefix_length;
8574 pm_buffer_concat(output_buffer, prefix_buffer);
8575 pm_buffer_append_string(output_buffer,
"+-- else_clause:", 16);
8577 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8579 pm_buffer_append_byte(output_buffer,
'\n');
8581 size_t prefix_length = prefix_buffer->length;
8582 pm_buffer_append_string(prefix_buffer,
"| ", 4);
8583 pm_buffer_concat(output_buffer, prefix_buffer);
8585 prefix_buffer->length = prefix_length;
8591 pm_buffer_concat(output_buffer, prefix_buffer);
8592 pm_buffer_append_string(output_buffer,
"+-- end_keyword_loc:", 20);
8594 if (location->
length == 0) {
8595 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8597 pm_buffer_append_byte(output_buffer,
' ');
8598 prettyprint_location(output_buffer, parser, location);
8599 pm_buffer_append_string(output_buffer,
" = \"", 4);
8600 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8601 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8607 case PM_UNTIL_NODE: {
8609 pm_buffer_append_string(output_buffer,
"@ UntilNode (location: ", 23);
8610 prettyprint_location(output_buffer, parser, &node->
location);
8611 pm_buffer_append_string(output_buffer,
")\n", 2);
8615 pm_buffer_concat(output_buffer, prefix_buffer);
8616 pm_buffer_append_string(output_buffer,
"+-- LoopFlags:", 14);
8618 if (cast->
base.
flags & PM_LOOP_FLAGS_BEGIN_MODIFIER) {
8619 if (found) pm_buffer_append_byte(output_buffer,
',');
8620 pm_buffer_append_string(output_buffer,
" begin_modifier", 15);
8623 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
8624 pm_buffer_append_byte(output_buffer,
'\n');
8629 pm_buffer_concat(output_buffer, prefix_buffer);
8630 pm_buffer_append_string(output_buffer,
"+-- until_keyword_loc:", 22);
8632 pm_buffer_append_byte(output_buffer,
' ');
8633 prettyprint_location(output_buffer, parser, location);
8634 pm_buffer_append_string(output_buffer,
" = \"", 4);
8635 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8636 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8641 pm_buffer_concat(output_buffer, prefix_buffer);
8642 pm_buffer_append_string(output_buffer,
"+-- do_keyword_loc:", 19);
8644 if (location->
length == 0) {
8645 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8647 pm_buffer_append_byte(output_buffer,
' ');
8648 prettyprint_location(output_buffer, parser, location);
8649 pm_buffer_append_string(output_buffer,
" = \"", 4);
8650 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8651 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8657 pm_buffer_concat(output_buffer, prefix_buffer);
8658 pm_buffer_append_string(output_buffer,
"+-- end_keyword_loc:", 20);
8660 if (location->
length == 0) {
8661 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8663 pm_buffer_append_byte(output_buffer,
' ');
8664 prettyprint_location(output_buffer, parser, location);
8665 pm_buffer_append_string(output_buffer,
" = \"", 4);
8666 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8667 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8673 pm_buffer_concat(output_buffer, prefix_buffer);
8674 pm_buffer_append_string(output_buffer,
"+-- predicate:", 14);
8675 pm_buffer_append_byte(output_buffer,
'\n');
8677 size_t prefix_length = prefix_buffer->length;
8678 pm_buffer_append_string(prefix_buffer,
"| ", 4);
8679 pm_buffer_concat(output_buffer, prefix_buffer);
8680 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
predicate, prefix_buffer);
8681 prefix_buffer->length = prefix_length;
8686 pm_buffer_concat(output_buffer, prefix_buffer);
8687 pm_buffer_append_string(output_buffer,
"+-- statements:", 15);
8689 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8691 pm_buffer_append_byte(output_buffer,
'\n');
8693 size_t prefix_length = prefix_buffer->length;
8694 pm_buffer_append_string(prefix_buffer,
" ", 4);
8695 pm_buffer_concat(output_buffer, prefix_buffer);
8697 prefix_buffer->length = prefix_length;
8703 case PM_WHEN_NODE: {
8705 pm_buffer_append_string(output_buffer,
"@ WhenNode (location: ", 22);
8706 prettyprint_location(output_buffer, parser, &node->
location);
8707 pm_buffer_append_string(output_buffer,
")\n", 2);
8711 pm_buffer_concat(output_buffer, prefix_buffer);
8712 pm_buffer_append_string(output_buffer,
"+-- when_keyword_loc:", 21);
8714 pm_buffer_append_byte(output_buffer,
' ');
8715 prettyprint_location(output_buffer, parser, location);
8716 pm_buffer_append_string(output_buffer,
" = \"", 4);
8717 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8718 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8723 pm_buffer_concat(output_buffer, prefix_buffer);
8724 pm_buffer_append_string(output_buffer,
"+-- conditions:", 15);
8725 pm_buffer_append_format(output_buffer,
" (length: %lu)\n", (
unsigned long) (cast->
conditions.
size));
8728 for (uint32_t index = 0; index < last_index; index++) {
8729 size_t prefix_length = prefix_buffer->length;
8730 pm_buffer_append_string(prefix_buffer,
"| ", 4);
8731 pm_buffer_concat(output_buffer, prefix_buffer);
8732 pm_buffer_append_string(output_buffer,
"+-- ", 4);
8733 pm_buffer_append_string(prefix_buffer, (index == last_index - 1) ?
" " :
"| ", 4);
8735 prefix_buffer->length = prefix_length;
8741 pm_buffer_concat(output_buffer, prefix_buffer);
8742 pm_buffer_append_string(output_buffer,
"+-- then_keyword_loc:", 21);
8744 if (location->
length == 0) {
8745 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8747 pm_buffer_append_byte(output_buffer,
' ');
8748 prettyprint_location(output_buffer, parser, location);
8749 pm_buffer_append_string(output_buffer,
" = \"", 4);
8750 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8751 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8757 pm_buffer_concat(output_buffer, prefix_buffer);
8758 pm_buffer_append_string(output_buffer,
"+-- statements:", 15);
8760 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8762 pm_buffer_append_byte(output_buffer,
'\n');
8764 size_t prefix_length = prefix_buffer->length;
8765 pm_buffer_append_string(prefix_buffer,
" ", 4);
8766 pm_buffer_concat(output_buffer, prefix_buffer);
8768 prefix_buffer->length = prefix_length;
8774 case PM_WHILE_NODE: {
8776 pm_buffer_append_string(output_buffer,
"@ WhileNode (location: ", 23);
8777 prettyprint_location(output_buffer, parser, &node->
location);
8778 pm_buffer_append_string(output_buffer,
")\n", 2);
8782 pm_buffer_concat(output_buffer, prefix_buffer);
8783 pm_buffer_append_string(output_buffer,
"+-- LoopFlags:", 14);
8785 if (cast->
base.
flags & PM_LOOP_FLAGS_BEGIN_MODIFIER) {
8786 if (found) pm_buffer_append_byte(output_buffer,
',');
8787 pm_buffer_append_string(output_buffer,
" begin_modifier", 15);
8790 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
8791 pm_buffer_append_byte(output_buffer,
'\n');
8796 pm_buffer_concat(output_buffer, prefix_buffer);
8797 pm_buffer_append_string(output_buffer,
"+-- while_keyword_loc:", 22);
8799 pm_buffer_append_byte(output_buffer,
' ');
8800 prettyprint_location(output_buffer, parser, location);
8801 pm_buffer_append_string(output_buffer,
" = \"", 4);
8802 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8803 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8808 pm_buffer_concat(output_buffer, prefix_buffer);
8809 pm_buffer_append_string(output_buffer,
"+-- do_keyword_loc:", 19);
8811 if (location->
length == 0) {
8812 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8814 pm_buffer_append_byte(output_buffer,
' ');
8815 prettyprint_location(output_buffer, parser, location);
8816 pm_buffer_append_string(output_buffer,
" = \"", 4);
8817 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8818 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8824 pm_buffer_concat(output_buffer, prefix_buffer);
8825 pm_buffer_append_string(output_buffer,
"+-- end_keyword_loc:", 20);
8827 if (location->
length == 0) {
8828 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8830 pm_buffer_append_byte(output_buffer,
' ');
8831 prettyprint_location(output_buffer, parser, location);
8832 pm_buffer_append_string(output_buffer,
" = \"", 4);
8833 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8834 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8840 pm_buffer_concat(output_buffer, prefix_buffer);
8841 pm_buffer_append_string(output_buffer,
"+-- predicate:", 14);
8842 pm_buffer_append_byte(output_buffer,
'\n');
8844 size_t prefix_length = prefix_buffer->length;
8845 pm_buffer_append_string(prefix_buffer,
"| ", 4);
8846 pm_buffer_concat(output_buffer, prefix_buffer);
8847 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
predicate, prefix_buffer);
8848 prefix_buffer->length = prefix_length;
8853 pm_buffer_concat(output_buffer, prefix_buffer);
8854 pm_buffer_append_string(output_buffer,
"+-- statements:", 15);
8856 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8858 pm_buffer_append_byte(output_buffer,
'\n');
8860 size_t prefix_length = prefix_buffer->length;
8861 pm_buffer_append_string(prefix_buffer,
" ", 4);
8862 pm_buffer_concat(output_buffer, prefix_buffer);
8864 prefix_buffer->length = prefix_length;
8870 case PM_X_STRING_NODE: {
8872 pm_buffer_append_string(output_buffer,
"@ XStringNode (location: ", 25);
8873 prettyprint_location(output_buffer, parser, &node->
location);
8874 pm_buffer_append_string(output_buffer,
")\n", 2);
8878 pm_buffer_concat(output_buffer, prefix_buffer);
8879 pm_buffer_append_string(output_buffer,
"+-- EncodingFlags:", 18);
8881 if (cast->
base.
flags & PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING) {
8882 if (found) pm_buffer_append_byte(output_buffer,
',');
8883 pm_buffer_append_string(output_buffer,
" forced_utf8_encoding", 21);
8886 if (cast->
base.
flags & PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING) {
8887 if (found) pm_buffer_append_byte(output_buffer,
',');
8888 pm_buffer_append_string(output_buffer,
" forced_binary_encoding", 23);
8891 if (!found) pm_buffer_append_string(output_buffer,
" nil", 4);
8892 pm_buffer_append_byte(output_buffer,
'\n');
8897 pm_buffer_concat(output_buffer, prefix_buffer);
8898 pm_buffer_append_string(output_buffer,
"+-- opening_loc:", 16);
8900 pm_buffer_append_byte(output_buffer,
' ');
8901 prettyprint_location(output_buffer, parser, location);
8902 pm_buffer_append_string(output_buffer,
" = \"", 4);
8903 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8904 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8909 pm_buffer_concat(output_buffer, prefix_buffer);
8910 pm_buffer_append_string(output_buffer,
"+-- content_loc:", 16);
8912 pm_buffer_append_byte(output_buffer,
' ');
8913 prettyprint_location(output_buffer, parser, location);
8914 pm_buffer_append_string(output_buffer,
" = \"", 4);
8915 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8916 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8921 pm_buffer_concat(output_buffer, prefix_buffer);
8922 pm_buffer_append_string(output_buffer,
"+-- closing_loc:", 16);
8924 pm_buffer_append_byte(output_buffer,
' ');
8925 prettyprint_location(output_buffer, parser, location);
8926 pm_buffer_append_string(output_buffer,
" = \"", 4);
8927 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8928 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8933 pm_buffer_concat(output_buffer, prefix_buffer);
8934 pm_buffer_append_string(output_buffer,
"+-- unescaped:", 14);
8935 pm_buffer_append_string(output_buffer,
" \"", 2);
8936 pm_buffer_append_source(output_buffer, pm_string_source(&cast->
unescaped), pm_string_length(&cast->
unescaped), PM_BUFFER_ESCAPING_RUBY);
8937 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8942 case PM_YIELD_NODE: {
8944 pm_buffer_append_string(output_buffer,
"@ YieldNode (location: ", 23);
8945 prettyprint_location(output_buffer, parser, &node->
location);
8946 pm_buffer_append_string(output_buffer,
")\n", 2);
8950 pm_buffer_concat(output_buffer, prefix_buffer);
8951 pm_buffer_append_string(output_buffer,
"+-- keyword_loc:", 16);
8953 pm_buffer_append_byte(output_buffer,
' ');
8954 prettyprint_location(output_buffer, parser, location);
8955 pm_buffer_append_string(output_buffer,
" = \"", 4);
8956 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8957 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8962 pm_buffer_concat(output_buffer, prefix_buffer);
8963 pm_buffer_append_string(output_buffer,
"+-- lparen_loc:", 15);
8965 if (location->
length == 0) {
8966 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8968 pm_buffer_append_byte(output_buffer,
' ');
8969 prettyprint_location(output_buffer, parser, location);
8970 pm_buffer_append_string(output_buffer,
" = \"", 4);
8971 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
8972 pm_buffer_append_string(output_buffer,
"\"\n", 2);
8978 pm_buffer_concat(output_buffer, prefix_buffer);
8979 pm_buffer_append_string(output_buffer,
"+-- arguments:", 14);
8981 pm_buffer_append_string(output_buffer,
" nil\n", 5);
8983 pm_buffer_append_byte(output_buffer,
'\n');
8985 size_t prefix_length = prefix_buffer->length;
8986 pm_buffer_append_string(prefix_buffer,
"| ", 4);
8987 pm_buffer_concat(output_buffer, prefix_buffer);
8988 prettyprint_node(output_buffer, parser, (
pm_node_t *) cast->
arguments, prefix_buffer);
8989 prefix_buffer->length = prefix_length;
8995 pm_buffer_concat(output_buffer, prefix_buffer);
8996 pm_buffer_append_string(output_buffer,
"+-- rparen_loc:", 15);
8998 if (location->
length == 0) {
8999 pm_buffer_append_string(output_buffer,
" nil\n", 5);
9001 pm_buffer_append_byte(output_buffer,
' ');
9002 prettyprint_location(output_buffer, parser, location);
9003 pm_buffer_append_string(output_buffer,
" = \"", 4);
9004 pm_buffer_append_source(output_buffer, parser->start + location->
start, (
size_t) location->
length, PM_BUFFER_ESCAPING_RUBY);
9005 pm_buffer_append_string(output_buffer,
"\"\n", 2);
9020 prettyprint_node(output_buffer, parser, node, &prefix_buffer);
9021 pm_buffer_cleanup(&prefix_buffer);
uint32_t pm_constant_id_t
A constant id is a unique identifier for a constant in the constant pool.
#define PRISM_INLINE
Old Visual Studio versions do not support the inline keyword, so we need to define it to be __inline.
A list of byte offsets of newlines in a string.
An AST node pretty-printer.
PM_NODE_ALIGNAS struct pm_node * new_name
AliasGlobalVariableNode::new_name.
pm_location_t keyword_loc
AliasGlobalVariableNode::keyword_loc.
PM_NODE_ALIGNAS struct pm_node * old_name
AliasGlobalVariableNode::old_name.
PM_NODE_ALIGNAS struct pm_node * old_name
AliasMethodNode::old_name.
pm_location_t keyword_loc
AliasMethodNode::keyword_loc.
PM_NODE_ALIGNAS struct pm_node * new_name
AliasMethodNode::new_name.
pm_location_t operator_loc
AlternationPatternNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * left
AlternationPatternNode::left.
PM_NODE_ALIGNAS struct pm_node * right
AlternationPatternNode::right.
PM_NODE_ALIGNAS struct pm_node * left
AndNode::left.
PM_NODE_ALIGNAS struct pm_node * right
AndNode::right.
pm_location_t operator_loc
AndNode::operator_loc.
pm_node_t base
The embedded base node.
struct pm_node_list arguments
ArgumentsNode::arguments.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
ArrayNode::closing_loc.
struct pm_node_list elements
ArrayNode::elements.
pm_location_t opening_loc
ArrayNode::opening_loc.
struct pm_node_list requireds
ArrayPatternNode::requireds.
PM_NODE_ALIGNAS struct pm_node * rest
ArrayPatternNode::rest.
PM_NODE_ALIGNAS struct pm_node * constant
ArrayPatternNode::constant.
pm_location_t opening_loc
ArrayPatternNode::opening_loc.
pm_location_t closing_loc
ArrayPatternNode::closing_loc.
struct pm_node_list posts
ArrayPatternNode::posts.
PM_NODE_ALIGNAS struct pm_node * value
AssocNode::value.
PM_NODE_ALIGNAS struct pm_node * key
AssocNode::key.
pm_location_t operator_loc
AssocNode::operator_loc.
pm_location_t operator_loc
AssocSplatNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
AssocSplatNode::value.
pm_constant_id_t name
BackReferenceReadNode::name.
PM_NODE_ALIGNAS struct pm_else_node * else_clause
BeginNode::else_clause.
PM_NODE_ALIGNAS struct pm_ensure_node * ensure_clause
BeginNode::ensure_clause.
PM_NODE_ALIGNAS struct pm_statements_node * statements
BeginNode::statements.
PM_NODE_ALIGNAS struct pm_rescue_node * rescue_clause
BeginNode::rescue_clause.
pm_location_t end_keyword_loc
BeginNode::end_keyword_loc.
pm_location_t begin_keyword_loc
BeginNode::begin_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * expression
BlockArgumentNode::expression.
pm_location_t operator_loc
BlockArgumentNode::operator_loc.
pm_node_t base
The embedded base node.
pm_constant_id_t name
BlockLocalVariableNode::name.
pm_location_t closing_loc
BlockNode::closing_loc.
PM_NODE_ALIGNAS struct pm_node * parameters
BlockNode::parameters.
pm_location_t opening_loc
BlockNode::opening_loc.
pm_constant_id_list_t locals
BlockNode::locals.
PM_NODE_ALIGNAS struct pm_node * body
BlockNode::body.
pm_location_t operator_loc
BlockParameterNode::operator_loc.
pm_location_t name_loc
BlockParameterNode::name_loc.
pm_constant_id_t name
BlockParameterNode::name.
pm_node_t base
The embedded base node.
struct pm_node_list locals
BlockParametersNode::locals.
PM_NODE_ALIGNAS struct pm_parameters_node * parameters
BlockParametersNode::parameters.
pm_location_t closing_loc
BlockParametersNode::closing_loc.
pm_location_t opening_loc
BlockParametersNode::opening_loc.
pm_location_t keyword_loc
BreakNode::keyword_loc.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
BreakNode::arguments.
pm_location_t operator_loc
CallAndWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * receiver
CallAndWriteNode::receiver.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
CallAndWriteNode::value.
pm_location_t call_operator_loc
CallAndWriteNode::call_operator_loc.
pm_location_t message_loc
CallAndWriteNode::message_loc.
pm_constant_id_t read_name
CallAndWriteNode::read_name.
pm_constant_id_t write_name
CallAndWriteNode::write_name.
pm_location_t opening_loc
CallNode::opening_loc.
pm_location_t closing_loc
CallNode::closing_loc.
pm_constant_id_t name
CallNode::name.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
CallNode::arguments.
pm_location_t equal_loc
CallNode::equal_loc.
pm_location_t call_operator_loc
CallNode::call_operator_loc.
pm_location_t message_loc
CallNode::message_loc.
PM_NODE_ALIGNAS struct pm_node * block
CallNode::block.
PM_NODE_ALIGNAS struct pm_node * receiver
CallNode::receiver.
pm_constant_id_t read_name
CallOperatorWriteNode::read_name.
pm_constant_id_t binary_operator
CallOperatorWriteNode::binary_operator.
pm_location_t binary_operator_loc
CallOperatorWriteNode::binary_operator_loc.
pm_node_t base
The embedded base node.
pm_constant_id_t write_name
CallOperatorWriteNode::write_name.
pm_location_t message_loc
CallOperatorWriteNode::message_loc.
PM_NODE_ALIGNAS struct pm_node * receiver
CallOperatorWriteNode::receiver.
PM_NODE_ALIGNAS struct pm_node * value
CallOperatorWriteNode::value.
pm_location_t call_operator_loc
CallOperatorWriteNode::call_operator_loc.
pm_location_t operator_loc
CallOrWriteNode::operator_loc.
pm_location_t call_operator_loc
CallOrWriteNode::call_operator_loc.
PM_NODE_ALIGNAS struct pm_node * receiver
CallOrWriteNode::receiver.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
CallOrWriteNode::value.
pm_constant_id_t write_name
CallOrWriteNode::write_name.
pm_constant_id_t read_name
CallOrWriteNode::read_name.
pm_location_t message_loc
CallOrWriteNode::message_loc.
pm_node_t base
The embedded base node.
pm_constant_id_t name
CallTargetNode::name.
PM_NODE_ALIGNAS struct pm_node * receiver
CallTargetNode::receiver.
pm_location_t call_operator_loc
CallTargetNode::call_operator_loc.
pm_location_t message_loc
CallTargetNode::message_loc.
pm_location_t operator_loc
CapturePatternNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
CapturePatternNode::value.
PM_NODE_ALIGNAS struct pm_local_variable_target_node * target
CapturePatternNode::target.
pm_location_t end_keyword_loc
CaseMatchNode::end_keyword_loc.
struct pm_node_list conditions
CaseMatchNode::conditions.
pm_location_t case_keyword_loc
CaseMatchNode::case_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * predicate
CaseMatchNode::predicate.
PM_NODE_ALIGNAS struct pm_else_node * else_clause
CaseMatchNode::else_clause.
PM_NODE_ALIGNAS struct pm_else_node * else_clause
CaseNode::else_clause.
struct pm_node_list conditions
CaseNode::conditions.
PM_NODE_ALIGNAS struct pm_node * predicate
CaseNode::predicate.
pm_location_t case_keyword_loc
CaseNode::case_keyword_loc.
pm_location_t end_keyword_loc
CaseNode::end_keyword_loc.
pm_location_t class_keyword_loc
ClassNode::class_keyword_loc.
pm_location_t end_keyword_loc
ClassNode::end_keyword_loc.
pm_constant_id_list_t locals
ClassNode::locals.
PM_NODE_ALIGNAS struct pm_node * superclass
ClassNode::superclass.
pm_location_t inheritance_operator_loc
ClassNode::inheritance_operator_loc.
pm_constant_id_t name
ClassNode::name.
PM_NODE_ALIGNAS struct pm_node * constant_path
ClassNode::constant_path.
PM_NODE_ALIGNAS struct pm_node * body
ClassNode::body.
ClassVariableAndWriteNode.
PM_NODE_ALIGNAS struct pm_node * value
ClassVariableAndWriteNode::value.
pm_constant_id_t name
ClassVariableAndWriteNode::name.
pm_location_t operator_loc
ClassVariableAndWriteNode::operator_loc.
pm_location_t name_loc
ClassVariableAndWriteNode::name_loc.
ClassVariableOperatorWriteNode.
pm_constant_id_t name
ClassVariableOperatorWriteNode::name.
PM_NODE_ALIGNAS struct pm_node * value
ClassVariableOperatorWriteNode::value.
pm_location_t name_loc
ClassVariableOperatorWriteNode::name_loc.
pm_constant_id_t binary_operator
ClassVariableOperatorWriteNode::binary_operator.
pm_location_t binary_operator_loc
ClassVariableOperatorWriteNode::binary_operator_loc.
ClassVariableOrWriteNode.
PM_NODE_ALIGNAS struct pm_node * value
ClassVariableOrWriteNode::value.
pm_location_t name_loc
ClassVariableOrWriteNode::name_loc.
pm_location_t operator_loc
ClassVariableOrWriteNode::operator_loc.
pm_constant_id_t name
ClassVariableOrWriteNode::name.
pm_constant_id_t name
ClassVariableReadNode::name.
pm_constant_id_t name
ClassVariableTargetNode::name.
pm_location_t name_loc
ClassVariableWriteNode::name_loc.
PM_NODE_ALIGNAS struct pm_node * value
ClassVariableWriteNode::value.
pm_location_t operator_loc
ClassVariableWriteNode::operator_loc.
pm_constant_id_t name
ClassVariableWriteNode::name.
pm_location_t operator_loc
ConstantAndWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
ConstantAndWriteNode::value.
pm_location_t name_loc
ConstantAndWriteNode::name_loc.
pm_constant_id_t name
ConstantAndWriteNode::name.
size_t size
The number of constant ids in the list.
pm_constant_id_t * ids
The constant ids in the list.
ConstantOperatorWriteNode.
pm_constant_id_t name
ConstantOperatorWriteNode::name.
pm_location_t name_loc
ConstantOperatorWriteNode::name_loc.
pm_constant_id_t binary_operator
ConstantOperatorWriteNode::binary_operator.
pm_location_t binary_operator_loc
ConstantOperatorWriteNode::binary_operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
ConstantOperatorWriteNode::value.
pm_location_t operator_loc
ConstantOrWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
ConstantOrWriteNode::value.
pm_location_t name_loc
ConstantOrWriteNode::name_loc.
pm_constant_id_t name
ConstantOrWriteNode::name.
ConstantPathAndWriteNode.
PM_NODE_ALIGNAS struct pm_constant_path_node * target
ConstantPathAndWriteNode::target.
PM_NODE_ALIGNAS struct pm_node * value
ConstantPathAndWriteNode::value.
pm_location_t operator_loc
ConstantPathAndWriteNode::operator_loc.
pm_location_t delimiter_loc
ConstantPathNode::delimiter_loc.
PM_NODE_ALIGNAS struct pm_node * parent
ConstantPathNode::parent.
pm_location_t name_loc
ConstantPathNode::name_loc.
pm_constant_id_t name
ConstantPathNode::name.
ConstantPathOperatorWriteNode.
PM_NODE_ALIGNAS struct pm_constant_path_node * target
ConstantPathOperatorWriteNode::target.
pm_constant_id_t binary_operator
ConstantPathOperatorWriteNode::binary_operator.
pm_location_t binary_operator_loc
ConstantPathOperatorWriteNode::binary_operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
ConstantPathOperatorWriteNode::value.
pm_location_t operator_loc
ConstantPathOrWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
ConstantPathOrWriteNode::value.
PM_NODE_ALIGNAS struct pm_constant_path_node * target
ConstantPathOrWriteNode::target.
pm_location_t delimiter_loc
ConstantPathTargetNode::delimiter_loc.
pm_constant_id_t name
ConstantPathTargetNode::name.
PM_NODE_ALIGNAS struct pm_node * parent
ConstantPathTargetNode::parent.
pm_location_t name_loc
ConstantPathTargetNode::name_loc.
PM_NODE_ALIGNAS struct pm_node * value
ConstantPathWriteNode::value.
pm_location_t operator_loc
ConstantPathWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_constant_path_node * target
ConstantPathWriteNode::target.
pm_constant_id_t name
ConstantReadNode::name.
pm_constant_id_t name
ConstantTargetNode::name.
PM_NODE_ALIGNAS struct pm_node * value
ConstantWriteNode::value.
pm_constant_id_t name
ConstantWriteNode::name.
pm_location_t name_loc
ConstantWriteNode::name_loc.
pm_location_t operator_loc
ConstantWriteNode::operator_loc.
pm_location_t end_keyword_loc
DefNode::end_keyword_loc.
pm_constant_id_t name
DefNode::name.
pm_location_t name_loc
DefNode::name_loc.
pm_location_t rparen_loc
DefNode::rparen_loc.
PM_NODE_ALIGNAS struct pm_parameters_node * parameters
DefNode::parameters.
pm_location_t equal_loc
DefNode::equal_loc.
pm_location_t def_keyword_loc
DefNode::def_keyword_loc.
pm_location_t lparen_loc
DefNode::lparen_loc.
PM_NODE_ALIGNAS struct pm_node * receiver
DefNode::receiver.
PM_NODE_ALIGNAS struct pm_node * body
DefNode::body.
pm_location_t operator_loc
DefNode::operator_loc.
pm_constant_id_list_t locals
DefNode::locals.
PM_NODE_ALIGNAS struct pm_node * value
DefinedNode::value.
pm_location_t lparen_loc
DefinedNode::lparen_loc.
pm_location_t rparen_loc
DefinedNode::rparen_loc.
pm_location_t keyword_loc
DefinedNode::keyword_loc.
pm_location_t else_keyword_loc
ElseNode::else_keyword_loc.
PM_NODE_ALIGNAS struct pm_statements_node * statements
ElseNode::statements.
pm_location_t end_keyword_loc
ElseNode::end_keyword_loc.
PM_NODE_ALIGNAS struct pm_statements_node * statements
EmbeddedStatementsNode::statements.
pm_location_t closing_loc
EmbeddedStatementsNode::closing_loc.
pm_location_t opening_loc
EmbeddedStatementsNode::opening_loc.
PM_NODE_ALIGNAS struct pm_node * variable
EmbeddedVariableNode::variable.
pm_location_t operator_loc
EmbeddedVariableNode::operator_loc.
PM_NODE_ALIGNAS struct pm_statements_node * statements
EnsureNode::statements.
pm_location_t ensure_keyword_loc
EnsureNode::ensure_keyword_loc.
pm_location_t end_keyword_loc
EnsureNode::end_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * unexpected
ErrorRecoveryNode::unexpected.
PM_NODE_ALIGNAS struct pm_splat_node * left
FindPatternNode::left.
PM_NODE_ALIGNAS struct pm_splat_node * right
FindPatternNode::right.
pm_location_t opening_loc
FindPatternNode::opening_loc.
PM_NODE_ALIGNAS struct pm_node * constant
FindPatternNode::constant.
struct pm_node_list requireds
FindPatternNode::requireds.
pm_location_t closing_loc
FindPatternNode::closing_loc.
PM_NODE_ALIGNAS struct pm_node * left
FlipFlopNode::left.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
FlipFlopNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * right
FlipFlopNode::right.
double value
FloatNode::value.
PM_NODE_ALIGNAS struct pm_node * index
ForNode::index.
PM_NODE_ALIGNAS struct pm_node * collection
ForNode::collection.
PM_NODE_ALIGNAS struct pm_statements_node * statements
ForNode::statements.
pm_location_t end_keyword_loc
ForNode::end_keyword_loc.
pm_location_t for_keyword_loc
ForNode::for_keyword_loc.
pm_location_t do_keyword_loc
ForNode::do_keyword_loc.
pm_location_t in_keyword_loc
ForNode::in_keyword_loc.
PM_NODE_ALIGNAS struct pm_block_node * block
ForwardingSuperNode::block.
pm_location_t keyword_loc
ForwardingSuperNode::keyword_loc.
GlobalVariableAndWriteNode.
pm_location_t operator_loc
GlobalVariableAndWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
GlobalVariableAndWriteNode::value.
pm_location_t name_loc
GlobalVariableAndWriteNode::name_loc.
pm_constant_id_t name
GlobalVariableAndWriteNode::name.
GlobalVariableOperatorWriteNode.
PM_NODE_ALIGNAS struct pm_node * value
GlobalVariableOperatorWriteNode::value.
pm_constant_id_t name
GlobalVariableOperatorWriteNode::name.
pm_constant_id_t binary_operator
GlobalVariableOperatorWriteNode::binary_operator.
pm_location_t name_loc
GlobalVariableOperatorWriteNode::name_loc.
pm_location_t binary_operator_loc
GlobalVariableOperatorWriteNode::binary_operator_loc.
GlobalVariableOrWriteNode.
pm_constant_id_t name
GlobalVariableOrWriteNode::name.
pm_location_t name_loc
GlobalVariableOrWriteNode::name_loc.
pm_location_t operator_loc
GlobalVariableOrWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
GlobalVariableOrWriteNode::value.
pm_constant_id_t name
GlobalVariableReadNode::name.
GlobalVariableTargetNode.
pm_constant_id_t name
GlobalVariableTargetNode::name.
pm_location_t name_loc
GlobalVariableWriteNode::name_loc.
pm_location_t operator_loc
GlobalVariableWriteNode::operator_loc.
pm_constant_id_t name
GlobalVariableWriteNode::name.
PM_NODE_ALIGNAS struct pm_node * value
GlobalVariableWriteNode::value.
struct pm_node_list elements
HashNode::elements.
pm_location_t closing_loc
HashNode::closing_loc.
pm_location_t opening_loc
HashNode::opening_loc.
PM_NODE_ALIGNAS struct pm_node * constant
HashPatternNode::constant.
struct pm_node_list elements
HashPatternNode::elements.
pm_location_t opening_loc
HashPatternNode::opening_loc.
pm_location_t closing_loc
HashPatternNode::closing_loc.
PM_NODE_ALIGNAS struct pm_node * rest
HashPatternNode::rest.
PM_NODE_ALIGNAS struct pm_node * predicate
IfNode::predicate.
pm_location_t end_keyword_loc
IfNode::end_keyword_loc.
pm_location_t if_keyword_loc
IfNode::if_keyword_loc.
PM_NODE_ALIGNAS struct pm_statements_node * statements
IfNode::statements.
pm_location_t then_keyword_loc
IfNode::then_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * subsequent
IfNode::subsequent.
PM_NODE_ALIGNAS struct pm_node * numeric
ImaginaryNode::numeric.
PM_NODE_ALIGNAS struct pm_node * value
ImplicitNode::value.
pm_location_t in_keyword_loc
InNode::in_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * pattern
InNode::pattern.
PM_NODE_ALIGNAS struct pm_statements_node * statements
InNode::statements.
pm_location_t then_keyword_loc
InNode::then_keyword_loc.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
IndexAndWriteNode::arguments.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
IndexAndWriteNode::operator_loc.
pm_location_t closing_loc
IndexAndWriteNode::closing_loc.
pm_location_t opening_loc
IndexAndWriteNode::opening_loc.
pm_location_t call_operator_loc
IndexAndWriteNode::call_operator_loc.
PM_NODE_ALIGNAS struct pm_block_argument_node * block
IndexAndWriteNode::block.
PM_NODE_ALIGNAS struct pm_node * receiver
IndexAndWriteNode::receiver.
PM_NODE_ALIGNAS struct pm_node * value
IndexAndWriteNode::value.
PM_NODE_ALIGNAS struct pm_block_argument_node * block
IndexOperatorWriteNode::block.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * receiver
IndexOperatorWriteNode::receiver.
pm_location_t binary_operator_loc
IndexOperatorWriteNode::binary_operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
IndexOperatorWriteNode::value.
pm_location_t opening_loc
IndexOperatorWriteNode::opening_loc.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
IndexOperatorWriteNode::arguments.
pm_location_t call_operator_loc
IndexOperatorWriteNode::call_operator_loc.
pm_location_t closing_loc
IndexOperatorWriteNode::closing_loc.
pm_constant_id_t binary_operator
IndexOperatorWriteNode::binary_operator.
pm_location_t closing_loc
IndexOrWriteNode::closing_loc.
pm_location_t call_operator_loc
IndexOrWriteNode::call_operator_loc.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
IndexOrWriteNode::operator_loc.
pm_location_t opening_loc
IndexOrWriteNode::opening_loc.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
IndexOrWriteNode::arguments.
PM_NODE_ALIGNAS struct pm_node * value
IndexOrWriteNode::value.
PM_NODE_ALIGNAS struct pm_node * receiver
IndexOrWriteNode::receiver.
PM_NODE_ALIGNAS struct pm_block_argument_node * block
IndexOrWriteNode::block.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
IndexTargetNode::arguments.
pm_location_t closing_loc
IndexTargetNode::closing_loc.
PM_NODE_ALIGNAS struct pm_block_argument_node * block
IndexTargetNode::block.
pm_location_t opening_loc
IndexTargetNode::opening_loc.
PM_NODE_ALIGNAS struct pm_node * receiver
IndexTargetNode::receiver.
InstanceVariableAndWriteNode.
PM_NODE_ALIGNAS struct pm_node * value
InstanceVariableAndWriteNode::value.
pm_location_t operator_loc
InstanceVariableAndWriteNode::operator_loc.
pm_location_t name_loc
InstanceVariableAndWriteNode::name_loc.
pm_constant_id_t name
InstanceVariableAndWriteNode::name.
InstanceVariableOperatorWriteNode.
pm_constant_id_t binary_operator
InstanceVariableOperatorWriteNode::binary_operator.
PM_NODE_ALIGNAS struct pm_node * value
InstanceVariableOperatorWriteNode::value.
pm_location_t binary_operator_loc
InstanceVariableOperatorWriteNode::binary_operator_loc.
pm_constant_id_t name
InstanceVariableOperatorWriteNode::name.
pm_location_t name_loc
InstanceVariableOperatorWriteNode::name_loc.
InstanceVariableOrWriteNode.
pm_location_t operator_loc
InstanceVariableOrWriteNode::operator_loc.
pm_location_t name_loc
InstanceVariableOrWriteNode::name_loc.
pm_constant_id_t name
InstanceVariableOrWriteNode::name.
PM_NODE_ALIGNAS struct pm_node * value
InstanceVariableOrWriteNode::value.
InstanceVariableReadNode.
pm_constant_id_t name
InstanceVariableReadNode::name.
InstanceVariableTargetNode.
pm_constant_id_t name
InstanceVariableTargetNode::name.
InstanceVariableWriteNode.
pm_location_t operator_loc
InstanceVariableWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
InstanceVariableWriteNode::value.
pm_constant_id_t name
InstanceVariableWriteNode::name.
pm_location_t name_loc
InstanceVariableWriteNode::name_loc.
pm_integer_t value
IntegerNode::value.
pm_node_t base
The embedded base node.
A structure represents an arbitrary-sized integer.
InterpolatedMatchLastLineNode.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
InterpolatedMatchLastLineNode::closing_loc.
struct pm_node_list parts
InterpolatedMatchLastLineNode::parts.
pm_location_t opening_loc
InterpolatedMatchLastLineNode::opening_loc.
InterpolatedRegularExpressionNode.
pm_location_t opening_loc
InterpolatedRegularExpressionNode::opening_loc.
struct pm_node_list parts
InterpolatedRegularExpressionNode::parts.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
InterpolatedRegularExpressionNode::closing_loc.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
InterpolatedStringNode::closing_loc.
pm_location_t opening_loc
InterpolatedStringNode::opening_loc.
struct pm_node_list parts
InterpolatedStringNode::parts.
struct pm_node_list parts
InterpolatedSymbolNode::parts.
pm_location_t closing_loc
InterpolatedSymbolNode::closing_loc.
pm_location_t opening_loc
InterpolatedSymbolNode::opening_loc.
pm_location_t opening_loc
InterpolatedXStringNode::opening_loc.
pm_location_t closing_loc
InterpolatedXStringNode::closing_loc.
struct pm_node_list parts
InterpolatedXStringNode::parts.
pm_node_t base
The embedded base node.
struct pm_node_list elements
KeywordHashNode::elements.
KeywordRestParameterNode.
pm_node_t base
The embedded base node.
pm_constant_id_t name
KeywordRestParameterNode::name.
pm_location_t operator_loc
KeywordRestParameterNode::operator_loc.
pm_location_t name_loc
KeywordRestParameterNode::name_loc.
pm_location_t closing_loc
LambdaNode::closing_loc.
pm_location_t opening_loc
LambdaNode::opening_loc.
pm_location_t operator_loc
LambdaNode::operator_loc.
pm_constant_id_list_t locals
LambdaNode::locals.
PM_NODE_ALIGNAS struct pm_node * body
LambdaNode::body.
PM_NODE_ALIGNAS struct pm_node * parameters
LambdaNode::parameters.
A line and column in a string.
uint32_t column
The column in bytes.
int32_t line
The line number.
LocalVariableAndWriteNode.
pm_constant_id_t name
LocalVariableAndWriteNode::name.
uint32_t depth
LocalVariableAndWriteNode::depth.
pm_location_t operator_loc
LocalVariableAndWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
LocalVariableAndWriteNode::value.
pm_location_t name_loc
LocalVariableAndWriteNode::name_loc.
LocalVariableOperatorWriteNode.
uint32_t depth
LocalVariableOperatorWriteNode::depth.
pm_constant_id_t binary_operator
LocalVariableOperatorWriteNode::binary_operator.
pm_location_t name_loc
LocalVariableOperatorWriteNode::name_loc.
pm_location_t binary_operator_loc
LocalVariableOperatorWriteNode::binary_operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
LocalVariableOperatorWriteNode::value.
pm_constant_id_t name
LocalVariableOperatorWriteNode::name.
LocalVariableOrWriteNode.
PM_NODE_ALIGNAS struct pm_node * value
LocalVariableOrWriteNode::value.
uint32_t depth
LocalVariableOrWriteNode::depth.
pm_location_t operator_loc
LocalVariableOrWriteNode::operator_loc.
pm_constant_id_t name
LocalVariableOrWriteNode::name.
pm_location_t name_loc
LocalVariableOrWriteNode::name_loc.
uint32_t depth
LocalVariableReadNode::depth.
pm_constant_id_t name
LocalVariableReadNode::name.
uint32_t depth
LocalVariableTargetNode::depth.
pm_constant_id_t name
LocalVariableTargetNode::name.
PM_NODE_ALIGNAS struct pm_node * value
LocalVariableWriteNode::value.
pm_location_t operator_loc
LocalVariableWriteNode::operator_loc.
pm_location_t name_loc
LocalVariableWriteNode::name_loc.
uint32_t depth
LocalVariableWriteNode::depth.
pm_constant_id_t name
LocalVariableWriteNode::name.
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.
pm_location_t content_loc
MatchLastLineNode::content_loc.
pm_location_t opening_loc
MatchLastLineNode::opening_loc.
pm_location_t closing_loc
MatchLastLineNode::closing_loc.
pm_string_t unescaped
MatchLastLineNode::unescaped.
pm_node_t base
The embedded base node.
pm_location_t keyword_loc
MatchPredicateNode::keyword_loc.
PM_NODE_ALIGNAS struct pm_node * pattern
MatchPredicateNode::pattern.
PM_NODE_ALIGNAS struct pm_node * value
MatchPredicateNode::value.
pm_location_t operator_loc
MatchRequiredNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * pattern
MatchRequiredNode::pattern.
PM_NODE_ALIGNAS struct pm_node * value
MatchRequiredNode::value.
PM_NODE_ALIGNAS struct pm_call_node * call
MatchWriteNode::call.
struct pm_node_list targets
MatchWriteNode::targets.
pm_location_t end_keyword_loc
ModuleNode::end_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * constant_path
ModuleNode::constant_path.
PM_NODE_ALIGNAS struct pm_node * body
ModuleNode::body.
pm_constant_id_list_t locals
ModuleNode::locals.
pm_location_t module_keyword_loc
ModuleNode::module_keyword_loc.
pm_constant_id_t name
ModuleNode::name.
PM_NODE_ALIGNAS struct pm_node * rest
MultiTargetNode::rest.
pm_location_t lparen_loc
MultiTargetNode::lparen_loc.
struct pm_node_list lefts
MultiTargetNode::lefts.
pm_location_t rparen_loc
MultiTargetNode::rparen_loc.
struct pm_node_list rights
MultiTargetNode::rights.
pm_location_t rparen_loc
MultiWriteNode::rparen_loc.
PM_NODE_ALIGNAS struct pm_node * rest
MultiWriteNode::rest.
struct pm_node_list rights
MultiWriteNode::rights.
pm_location_t operator_loc
MultiWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
MultiWriteNode::value.
pm_location_t lparen_loc
MultiWriteNode::lparen_loc.
struct pm_node_list lefts
MultiWriteNode::lefts.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
NextNode::arguments.
pm_location_t keyword_loc
NextNode::keyword_loc.
pm_location_t keyword_loc
NoBlockParameterNode::keyword_loc.
pm_location_t operator_loc
NoBlockParameterNode::operator_loc.
pm_location_t keyword_loc
NoKeywordsParameterNode::keyword_loc.
pm_location_t operator_loc
NoKeywordsParameterNode::operator_loc.
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.
pm_node_flags_t flags
This represents any flags on the node.
pm_location_t location
This is the location of the node in the source.
uint8_t maximum
NumberedParametersNode::maximum.
NumberedReferenceReadNode.
uint32_t number
NumberedReferenceReadNode::number.
OptionalKeywordParameterNode.
pm_node_t base
The embedded base node.
pm_constant_id_t name
OptionalKeywordParameterNode::name.
PM_NODE_ALIGNAS struct pm_node * value
OptionalKeywordParameterNode::value.
pm_location_t name_loc
OptionalKeywordParameterNode::name_loc.
pm_location_t name_loc
OptionalParameterNode::name_loc.
pm_constant_id_t name
OptionalParameterNode::name.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
OptionalParameterNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
OptionalParameterNode::value.
PM_NODE_ALIGNAS struct pm_node * right
OrNode::right.
PM_NODE_ALIGNAS struct pm_node * left
OrNode::left.
pm_location_t operator_loc
OrNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * block
ParametersNode::block.
struct pm_node_list requireds
ParametersNode::requireds.
struct pm_node_list optionals
ParametersNode::optionals.
struct pm_node_list posts
ParametersNode::posts.
PM_NODE_ALIGNAS struct pm_node * rest
ParametersNode::rest.
struct pm_node_list keywords
ParametersNode::keywords.
PM_NODE_ALIGNAS struct pm_node * keyword_rest
ParametersNode::keyword_rest.
pm_location_t closing_loc
ParenthesesNode::closing_loc.
pm_node_t base
The embedded base node.
pm_location_t opening_loc
ParenthesesNode::opening_loc.
PM_NODE_ALIGNAS struct pm_node * body
ParenthesesNode::body.
pm_location_t rparen_loc
PinnedExpressionNode::rparen_loc.
pm_location_t lparen_loc
PinnedExpressionNode::lparen_loc.
PM_NODE_ALIGNAS struct pm_node * expression
PinnedExpressionNode::expression.
pm_location_t operator_loc
PinnedExpressionNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * variable
PinnedVariableNode::variable.
pm_location_t operator_loc
PinnedVariableNode::operator_loc.
pm_location_t closing_loc
PostExecutionNode::closing_loc.
pm_location_t opening_loc
PostExecutionNode::opening_loc.
pm_location_t keyword_loc
PostExecutionNode::keyword_loc.
PM_NODE_ALIGNAS struct pm_statements_node * statements
PostExecutionNode::statements.
pm_location_t closing_loc
PreExecutionNode::closing_loc.
pm_location_t opening_loc
PreExecutionNode::opening_loc.
PM_NODE_ALIGNAS struct pm_statements_node * statements
PreExecutionNode::statements.
pm_location_t keyword_loc
PreExecutionNode::keyword_loc.
PM_NODE_ALIGNAS struct pm_statements_node * statements
ProgramNode::statements.
pm_constant_id_list_t locals
ProgramNode::locals.
pm_location_t operator_loc
RangeNode::operator_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * right
RangeNode::right.
PM_NODE_ALIGNAS struct pm_node * left
RangeNode::left.
pm_node_t base
The embedded base node.
pm_integer_t denominator
RationalNode::denominator.
pm_integer_t numerator
RationalNode::numerator.
pm_location_t closing_loc
RegularExpressionNode::closing_loc.
pm_node_t base
The embedded base node.
pm_string_t unescaped
RegularExpressionNode::unescaped.
pm_location_t opening_loc
RegularExpressionNode::opening_loc.
pm_location_t content_loc
RegularExpressionNode::content_loc.
RequiredKeywordParameterNode.
pm_location_t name_loc
RequiredKeywordParameterNode::name_loc.
pm_node_t base
The embedded base node.
pm_constant_id_t name
RequiredKeywordParameterNode::name.
pm_constant_id_t name
RequiredParameterNode::name.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * expression
RescueModifierNode::expression.
pm_location_t keyword_loc
RescueModifierNode::keyword_loc.
PM_NODE_ALIGNAS struct pm_node * rescue_expression
RescueModifierNode::rescue_expression.
PM_NODE_ALIGNAS struct pm_statements_node * statements
RescueNode::statements.
PM_NODE_ALIGNAS struct pm_rescue_node * subsequent
RescueNode::subsequent.
pm_location_t keyword_loc
RescueNode::keyword_loc.
PM_NODE_ALIGNAS struct pm_node * reference
RescueNode::reference.
pm_location_t then_keyword_loc
RescueNode::then_keyword_loc.
pm_location_t operator_loc
RescueNode::operator_loc.
struct pm_node_list exceptions
RescueNode::exceptions.
pm_constant_id_t name
RestParameterNode::name.
pm_location_t name_loc
RestParameterNode::name_loc.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
RestParameterNode::operator_loc.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
ReturnNode::arguments.
pm_location_t keyword_loc
ReturnNode::keyword_loc.
PM_NODE_ALIGNAS struct pm_node * write
ShareableConstantNode::write.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * body
SingletonClassNode::body.
pm_constant_id_list_t locals
SingletonClassNode::locals.
pm_location_t operator_loc
SingletonClassNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * expression
SingletonClassNode::expression.
pm_location_t end_keyword_loc
SingletonClassNode::end_keyword_loc.
pm_location_t class_keyword_loc
SingletonClassNode::class_keyword_loc.
pm_string_t filepath
SourceFileNode::filepath.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * expression
SplatNode::expression.
pm_location_t operator_loc
SplatNode::operator_loc.
struct pm_node_list body
StatementsNode::body.
pm_node_t base
The embedded base node.
pm_string_t unescaped
StringNode::unescaped.
pm_location_t content_loc
StringNode::content_loc.
pm_location_t closing_loc
StringNode::closing_loc.
pm_location_t opening_loc
StringNode::opening_loc.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
SuperNode::arguments.
pm_location_t lparen_loc
SuperNode::lparen_loc.
pm_location_t keyword_loc
SuperNode::keyword_loc.
pm_location_t rparen_loc
SuperNode::rparen_loc.
PM_NODE_ALIGNAS struct pm_node * block
SuperNode::block.
pm_location_t opening_loc
SymbolNode::opening_loc.
pm_location_t value_loc
SymbolNode::value_loc.
pm_location_t closing_loc
SymbolNode::closing_loc.
pm_string_t unescaped
SymbolNode::unescaped.
pm_node_t base
The embedded base node.
pm_location_t keyword_loc
UndefNode::keyword_loc.
struct pm_node_list names
UndefNode::names.
pm_location_t then_keyword_loc
UnlessNode::then_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * predicate
UnlessNode::predicate.
PM_NODE_ALIGNAS struct pm_statements_node * statements
UnlessNode::statements.
pm_location_t end_keyword_loc
UnlessNode::end_keyword_loc.
PM_NODE_ALIGNAS struct pm_else_node * else_clause
UnlessNode::else_clause.
pm_location_t unless_keyword_loc
UnlessNode::unless_keyword_loc.
pm_location_t end_keyword_loc
UntilNode::end_keyword_loc.
pm_location_t until_keyword_loc
UntilNode::until_keyword_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_statements_node * statements
UntilNode::statements.
pm_location_t do_keyword_loc
UntilNode::do_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * predicate
UntilNode::predicate.
pm_location_t when_keyword_loc
WhenNode::when_keyword_loc.
pm_location_t then_keyword_loc
WhenNode::then_keyword_loc.
PM_NODE_ALIGNAS struct pm_statements_node * statements
WhenNode::statements.
struct pm_node_list conditions
WhenNode::conditions.
PM_NODE_ALIGNAS struct pm_statements_node * statements
WhileNode::statements.
pm_location_t while_keyword_loc
WhileNode::while_keyword_loc.
pm_location_t end_keyword_loc
WhileNode::end_keyword_loc.
pm_node_t base
The embedded base node.
pm_location_t do_keyword_loc
WhileNode::do_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * predicate
WhileNode::predicate.
pm_location_t closing_loc
XStringNode::closing_loc.
pm_location_t opening_loc
XStringNode::opening_loc.
pm_location_t content_loc
XStringNode::content_loc.
pm_string_t unescaped
XStringNode::unescaped.
pm_node_t base
The embedded base node.
pm_location_t keyword_loc
YieldNode::keyword_loc.
pm_location_t lparen_loc
YieldNode::lparen_loc.
pm_location_t rparen_loc
YieldNode::rparen_loc.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
YieldNode::arguments.