prism 2.0.0.rc2-x86_64-linux-gnu → 2.0.0-x86_64-linux-gnu
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -2
- data/docs/serialization.md +19 -6
- data/ext/prism/api_node.c +80 -80
- data/ext/prism/extension.c +34 -67
- data/ext/prism/extension.h +1 -1
- data/include/prism/arena.h +8 -0
- data/include/prism/arena.hpp +42 -0
- data/include/prism/ast.h +11 -1
- data/include/prism/ast.hpp +641 -0
- data/include/prism/buffer.h +8 -0
- data/include/prism/buffer.hpp +55 -0
- data/include/prism/comments.h +17 -0
- data/include/prism/compiler/branch.h +26 -0
- data/include/prism/compiler/cplusplus.hpp +16 -0
- data/include/prism/compiler/exceptions.hpp +17 -0
- data/include/prism/compiler/format.h +2 -0
- data/include/prism/compiler/lifetimebound.hpp +25 -0
- data/include/prism/constant_pool.h +25 -0
- data/include/prism/diagnostic.h +18 -0
- data/include/prism/errors_format.h +8 -0
- data/include/prism/internal/node.h +8 -4
- data/include/prism/internal/stringy.h +1 -6
- data/include/prism/json.h +8 -0
- data/include/prism/line_offset_list.h +8 -0
- data/include/prism/magic_comments.h +18 -0
- data/include/prism/node.h +55 -10
- data/include/prism/node.hpp +272 -0
- data/include/prism/node_type.hpp +38 -0
- data/include/prism/options.h +10 -1
- data/include/prism/options.hpp +43 -0
- data/include/prism/parser.h +72 -64
- data/include/prism/parser.hpp +274 -0
- data/include/prism/prettyprint.h +8 -0
- data/include/prism/serialize.h +8 -0
- data/include/prism/source.h +8 -0
- data/include/prism/stream.h +8 -0
- data/include/prism/string_query.h +8 -0
- data/include/prism/stringy.h +16 -27
- data/include/prism/stringy.hpp +31 -0
- data/include/prism/version.h +9 -1
- data/include/prism.h +0 -8
- data/include/prism.hpp +24 -0
- data/lib/prism/3.3/prism.so +0 -0
- data/lib/prism/3.4/prism.so +0 -0
- data/lib/prism/4.0/prism.so +0 -0
- data/lib/prism/serialize.rb +2549 -3281
- data/prism.gemspec +14 -1
- data/rbi/generated/prism/node.rbi +736 -0
- data/rbi/generated/prism/serialize.rbi +6 -5
- data/sig/generated/prism/node.rbs +736 -0
- data/sig/generated/prism/serialize.rbs +7 -5
- data/src/comments.c +2 -2
- data/src/diagnostic.c +8 -0
- data/src/node.c +216 -368
- data/src/options.c +7 -13
- data/src/parser.c +52 -48
- data/src/prism.c +175 -194
- data/src/regexp.c +0 -1
- data/src/serialize.c +2300 -1950
- data/src/source.c +8 -2
- data/src/stringy.c +3 -33
- metadata +14 -1
data/src/node.c
CHANGED
|
@@ -51,8 +51,8 @@ pm_node_list_grow(pm_arena_t *arena, pm_node_list_t *list, size_t size) {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
|
-
* Slow path for
|
|
55
|
-
* Do not call directly - use
|
|
54
|
+
* Slow path for pm_node_list_append_inline: grow the list and append the node.
|
|
55
|
+
* Do not call directly - use pm_node_list_append_inline instead.
|
|
56
56
|
*/
|
|
57
57
|
void
|
|
58
58
|
pm_node_list_append_slow(pm_arena_t *arena, pm_node_list_t *list, pm_node_t *node) {
|
|
@@ -60,6 +60,14 @@ pm_node_list_append_slow(pm_arena_t *arena, pm_node_list_t *list, pm_node_t *nod
|
|
|
60
60
|
list->nodes[list->size++] = node;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Append a new node onto the end of the node list.
|
|
65
|
+
*/
|
|
66
|
+
void
|
|
67
|
+
pm_node_list_append(pm_arena_t *arena, pm_node_list_t *list, pm_node_t *node) {
|
|
68
|
+
pm_node_list_append_inline(arena, list, node);
|
|
69
|
+
}
|
|
70
|
+
|
|
63
71
|
/**
|
|
64
72
|
* Prepend a new node onto the beginning of the node list.
|
|
65
73
|
*/
|
|
@@ -400,33 +408,35 @@ pm_node_type(pm_node_type_t node_type)
|
|
|
400
408
|
|
|
401
409
|
/**
|
|
402
410
|
* Visit each of the nodes in this subtree using the given visitor callback. The
|
|
403
|
-
* callback function will be called for each node in the subtree
|
|
404
|
-
*
|
|
405
|
-
*
|
|
406
|
-
*
|
|
407
|
-
* see fit.
|
|
411
|
+
* callback function will be called for each node in the subtree, and its
|
|
412
|
+
* return value determines whether the walk visits that node's children, skips
|
|
413
|
+
* them, or stops entirely. The data parameter is treated as an opaque pointer
|
|
414
|
+
* and is passed to the visitor callback for consumers to use as they see fit.
|
|
408
415
|
*/
|
|
409
|
-
|
|
410
|
-
pm_visit_node(const pm_node_t *node,
|
|
411
|
-
|
|
416
|
+
bool
|
|
417
|
+
pm_visit_node(const pm_node_t *node, pm_visit_callback_t visitor, void *data) {
|
|
418
|
+
pm_visit_result_t result = visitor(node, data);
|
|
419
|
+
if (result == PM_VISIT_DESCEND) return pm_visit_child_nodes(node, visitor, data);
|
|
420
|
+
return result != PM_VISIT_STOP;
|
|
412
421
|
}
|
|
413
422
|
|
|
414
423
|
/**
|
|
415
424
|
* Visit the children of the given node with the given callback. This is the
|
|
416
425
|
* default behavior for walking the tree that is called from pm_visit_node if
|
|
417
|
-
* the callback returns
|
|
426
|
+
* the callback returns PM_VISIT_DESCEND. A stop from any child returns false
|
|
427
|
+
* immediately, so that it propagates up through every enclosing call.
|
|
418
428
|
*/
|
|
419
|
-
|
|
420
|
-
pm_visit_child_nodes(const pm_node_t *node,
|
|
429
|
+
bool
|
|
430
|
+
pm_visit_child_nodes(const pm_node_t *node, pm_visit_callback_t visitor, void *data) {
|
|
421
431
|
switch (PM_NODE_TYPE(node)) {
|
|
422
432
|
case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
|
|
423
433
|
const pm_alias_global_variable_node_t *cast = (const pm_alias_global_variable_node_t *) node;
|
|
424
434
|
|
|
425
435
|
// Visit the new_name field
|
|
426
|
-
pm_visit_node((const pm_node_t *) cast->new_name, visitor, data);
|
|
436
|
+
if (!pm_visit_node((const pm_node_t *) cast->new_name, visitor, data)) return false;
|
|
427
437
|
|
|
428
438
|
// Visit the old_name field
|
|
429
|
-
pm_visit_node((const pm_node_t *) cast->old_name, visitor, data);
|
|
439
|
+
if (!pm_visit_node((const pm_node_t *) cast->old_name, visitor, data)) return false;
|
|
430
440
|
|
|
431
441
|
break;
|
|
432
442
|
}
|
|
@@ -434,10 +444,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
434
444
|
const pm_alias_method_node_t *cast = (const pm_alias_method_node_t *) node;
|
|
435
445
|
|
|
436
446
|
// Visit the new_name field
|
|
437
|
-
pm_visit_node((const pm_node_t *) cast->new_name, visitor, data);
|
|
447
|
+
if (!pm_visit_node((const pm_node_t *) cast->new_name, visitor, data)) return false;
|
|
438
448
|
|
|
439
449
|
// Visit the old_name field
|
|
440
|
-
pm_visit_node((const pm_node_t *) cast->old_name, visitor, data);
|
|
450
|
+
if (!pm_visit_node((const pm_node_t *) cast->old_name, visitor, data)) return false;
|
|
441
451
|
|
|
442
452
|
break;
|
|
443
453
|
}
|
|
@@ -445,10 +455,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
445
455
|
const pm_alternation_pattern_node_t *cast = (const pm_alternation_pattern_node_t *) node;
|
|
446
456
|
|
|
447
457
|
// Visit the left field
|
|
448
|
-
pm_visit_node((const pm_node_t *) cast->left, visitor, data);
|
|
458
|
+
if (!pm_visit_node((const pm_node_t *) cast->left, visitor, data)) return false;
|
|
449
459
|
|
|
450
460
|
// Visit the right field
|
|
451
|
-
pm_visit_node((const pm_node_t *) cast->right, visitor, data);
|
|
461
|
+
if (!pm_visit_node((const pm_node_t *) cast->right, visitor, data)) return false;
|
|
452
462
|
|
|
453
463
|
break;
|
|
454
464
|
}
|
|
@@ -456,10 +466,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
456
466
|
const pm_and_node_t *cast = (const pm_and_node_t *) node;
|
|
457
467
|
|
|
458
468
|
// Visit the left field
|
|
459
|
-
pm_visit_node((const pm_node_t *) cast->left, visitor, data);
|
|
469
|
+
if (!pm_visit_node((const pm_node_t *) cast->left, visitor, data)) return false;
|
|
460
470
|
|
|
461
471
|
// Visit the right field
|
|
462
|
-
pm_visit_node((const pm_node_t *) cast->right, visitor, data);
|
|
472
|
+
if (!pm_visit_node((const pm_node_t *) cast->right, visitor, data)) return false;
|
|
463
473
|
|
|
464
474
|
break;
|
|
465
475
|
}
|
|
@@ -469,7 +479,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
469
479
|
// Visit the arguments field
|
|
470
480
|
const pm_node_list_t *arguments = &cast->arguments;
|
|
471
481
|
for (size_t index = 0; index < arguments->size; index++) {
|
|
472
|
-
pm_visit_node(arguments->nodes[index], visitor, data);
|
|
482
|
+
if (!pm_visit_node(arguments->nodes[index], visitor, data)) return false;
|
|
473
483
|
}
|
|
474
484
|
|
|
475
485
|
break;
|
|
@@ -480,7 +490,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
480
490
|
// Visit the elements field
|
|
481
491
|
const pm_node_list_t *elements = &cast->elements;
|
|
482
492
|
for (size_t index = 0; index < elements->size; index++) {
|
|
483
|
-
pm_visit_node(elements->nodes[index], visitor, data);
|
|
493
|
+
if (!pm_visit_node(elements->nodes[index], visitor, data)) return false;
|
|
484
494
|
}
|
|
485
495
|
|
|
486
496
|
break;
|
|
@@ -489,25 +499,21 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
489
499
|
const pm_array_pattern_node_t *cast = (const pm_array_pattern_node_t *) node;
|
|
490
500
|
|
|
491
501
|
// Visit the constant field
|
|
492
|
-
if (cast->constant != NULL)
|
|
493
|
-
pm_visit_node((const pm_node_t *) cast->constant, visitor, data);
|
|
494
|
-
}
|
|
502
|
+
if (cast->constant != NULL && !pm_visit_node((const pm_node_t *) cast->constant, visitor, data)) return false;
|
|
495
503
|
|
|
496
504
|
// Visit the requireds field
|
|
497
505
|
const pm_node_list_t *requireds = &cast->requireds;
|
|
498
506
|
for (size_t index = 0; index < requireds->size; index++) {
|
|
499
|
-
pm_visit_node(requireds->nodes[index], visitor, data);
|
|
507
|
+
if (!pm_visit_node(requireds->nodes[index], visitor, data)) return false;
|
|
500
508
|
}
|
|
501
509
|
|
|
502
510
|
// Visit the rest field
|
|
503
|
-
if (cast->rest != NULL)
|
|
504
|
-
pm_visit_node((const pm_node_t *) cast->rest, visitor, data);
|
|
505
|
-
}
|
|
511
|
+
if (cast->rest != NULL && !pm_visit_node((const pm_node_t *) cast->rest, visitor, data)) return false;
|
|
506
512
|
|
|
507
513
|
// Visit the posts field
|
|
508
514
|
const pm_node_list_t *posts = &cast->posts;
|
|
509
515
|
for (size_t index = 0; index < posts->size; index++) {
|
|
510
|
-
pm_visit_node(posts->nodes[index], visitor, data);
|
|
516
|
+
if (!pm_visit_node(posts->nodes[index], visitor, data)) return false;
|
|
511
517
|
}
|
|
512
518
|
|
|
513
519
|
break;
|
|
@@ -516,10 +522,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
516
522
|
const pm_assoc_node_t *cast = (const pm_assoc_node_t *) node;
|
|
517
523
|
|
|
518
524
|
// Visit the key field
|
|
519
|
-
pm_visit_node((const pm_node_t *) cast->key, visitor, data);
|
|
525
|
+
if (!pm_visit_node((const pm_node_t *) cast->key, visitor, data)) return false;
|
|
520
526
|
|
|
521
527
|
// Visit the value field
|
|
522
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
528
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
523
529
|
|
|
524
530
|
break;
|
|
525
531
|
}
|
|
@@ -527,9 +533,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
527
533
|
const pm_assoc_splat_node_t *cast = (const pm_assoc_splat_node_t *) node;
|
|
528
534
|
|
|
529
535
|
// Visit the value field
|
|
530
|
-
if (cast->value != NULL)
|
|
531
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
532
|
-
}
|
|
536
|
+
if (cast->value != NULL && !pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
533
537
|
|
|
534
538
|
break;
|
|
535
539
|
}
|
|
@@ -539,24 +543,16 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
539
543
|
const pm_begin_node_t *cast = (const pm_begin_node_t *) node;
|
|
540
544
|
|
|
541
545
|
// Visit the statements field
|
|
542
|
-
if (cast->statements != NULL)
|
|
543
|
-
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
|
544
|
-
}
|
|
546
|
+
if (cast->statements != NULL && !pm_visit_node((const pm_node_t *) cast->statements, visitor, data)) return false;
|
|
545
547
|
|
|
546
548
|
// Visit the rescue_clause field
|
|
547
|
-
if (cast->rescue_clause != NULL)
|
|
548
|
-
pm_visit_node((const pm_node_t *) cast->rescue_clause, visitor, data);
|
|
549
|
-
}
|
|
549
|
+
if (cast->rescue_clause != NULL && !pm_visit_node((const pm_node_t *) cast->rescue_clause, visitor, data)) return false;
|
|
550
550
|
|
|
551
551
|
// Visit the else_clause field
|
|
552
|
-
if (cast->else_clause != NULL)
|
|
553
|
-
pm_visit_node((const pm_node_t *) cast->else_clause, visitor, data);
|
|
554
|
-
}
|
|
552
|
+
if (cast->else_clause != NULL && !pm_visit_node((const pm_node_t *) cast->else_clause, visitor, data)) return false;
|
|
555
553
|
|
|
556
554
|
// Visit the ensure_clause field
|
|
557
|
-
if (cast->ensure_clause != NULL)
|
|
558
|
-
pm_visit_node((const pm_node_t *) cast->ensure_clause, visitor, data);
|
|
559
|
-
}
|
|
555
|
+
if (cast->ensure_clause != NULL && !pm_visit_node((const pm_node_t *) cast->ensure_clause, visitor, data)) return false;
|
|
560
556
|
|
|
561
557
|
break;
|
|
562
558
|
}
|
|
@@ -564,9 +560,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
564
560
|
const pm_block_argument_node_t *cast = (const pm_block_argument_node_t *) node;
|
|
565
561
|
|
|
566
562
|
// Visit the expression field
|
|
567
|
-
if (cast->expression != NULL)
|
|
568
|
-
pm_visit_node((const pm_node_t *) cast->expression, visitor, data);
|
|
569
|
-
}
|
|
563
|
+
if (cast->expression != NULL && !pm_visit_node((const pm_node_t *) cast->expression, visitor, data)) return false;
|
|
570
564
|
|
|
571
565
|
break;
|
|
572
566
|
}
|
|
@@ -576,14 +570,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
576
570
|
const pm_block_node_t *cast = (const pm_block_node_t *) node;
|
|
577
571
|
|
|
578
572
|
// Visit the parameters field
|
|
579
|
-
if (cast->parameters != NULL)
|
|
580
|
-
pm_visit_node((const pm_node_t *) cast->parameters, visitor, data);
|
|
581
|
-
}
|
|
573
|
+
if (cast->parameters != NULL && !pm_visit_node((const pm_node_t *) cast->parameters, visitor, data)) return false;
|
|
582
574
|
|
|
583
575
|
// Visit the body field
|
|
584
|
-
if (cast->body != NULL)
|
|
585
|
-
pm_visit_node((const pm_node_t *) cast->body, visitor, data);
|
|
586
|
-
}
|
|
576
|
+
if (cast->body != NULL && !pm_visit_node((const pm_node_t *) cast->body, visitor, data)) return false;
|
|
587
577
|
|
|
588
578
|
break;
|
|
589
579
|
}
|
|
@@ -593,14 +583,12 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
593
583
|
const pm_block_parameters_node_t *cast = (const pm_block_parameters_node_t *) node;
|
|
594
584
|
|
|
595
585
|
// Visit the parameters field
|
|
596
|
-
if (cast->parameters != NULL)
|
|
597
|
-
pm_visit_node((const pm_node_t *) cast->parameters, visitor, data);
|
|
598
|
-
}
|
|
586
|
+
if (cast->parameters != NULL && !pm_visit_node((const pm_node_t *) cast->parameters, visitor, data)) return false;
|
|
599
587
|
|
|
600
588
|
// Visit the locals field
|
|
601
589
|
const pm_node_list_t *locals = &cast->locals;
|
|
602
590
|
for (size_t index = 0; index < locals->size; index++) {
|
|
603
|
-
pm_visit_node(locals->nodes[index], visitor, data);
|
|
591
|
+
if (!pm_visit_node(locals->nodes[index], visitor, data)) return false;
|
|
604
592
|
}
|
|
605
593
|
|
|
606
594
|
break;
|
|
@@ -609,9 +597,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
609
597
|
const pm_break_node_t *cast = (const pm_break_node_t *) node;
|
|
610
598
|
|
|
611
599
|
// Visit the arguments field
|
|
612
|
-
if (cast->arguments != NULL)
|
|
613
|
-
pm_visit_node((const pm_node_t *) cast->arguments, visitor, data);
|
|
614
|
-
}
|
|
600
|
+
if (cast->arguments != NULL && !pm_visit_node((const pm_node_t *) cast->arguments, visitor, data)) return false;
|
|
615
601
|
|
|
616
602
|
break;
|
|
617
603
|
}
|
|
@@ -619,12 +605,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
619
605
|
const pm_call_and_write_node_t *cast = (const pm_call_and_write_node_t *) node;
|
|
620
606
|
|
|
621
607
|
// Visit the receiver field
|
|
622
|
-
if (cast->receiver != NULL)
|
|
623
|
-
pm_visit_node((const pm_node_t *) cast->receiver, visitor, data);
|
|
624
|
-
}
|
|
608
|
+
if (cast->receiver != NULL && !pm_visit_node((const pm_node_t *) cast->receiver, visitor, data)) return false;
|
|
625
609
|
|
|
626
610
|
// Visit the value field
|
|
627
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
611
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
628
612
|
|
|
629
613
|
break;
|
|
630
614
|
}
|
|
@@ -632,19 +616,13 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
632
616
|
const pm_call_node_t *cast = (const pm_call_node_t *) node;
|
|
633
617
|
|
|
634
618
|
// Visit the receiver field
|
|
635
|
-
if (cast->receiver != NULL)
|
|
636
|
-
pm_visit_node((const pm_node_t *) cast->receiver, visitor, data);
|
|
637
|
-
}
|
|
619
|
+
if (cast->receiver != NULL && !pm_visit_node((const pm_node_t *) cast->receiver, visitor, data)) return false;
|
|
638
620
|
|
|
639
621
|
// Visit the arguments field
|
|
640
|
-
if (cast->arguments != NULL)
|
|
641
|
-
pm_visit_node((const pm_node_t *) cast->arguments, visitor, data);
|
|
642
|
-
}
|
|
622
|
+
if (cast->arguments != NULL && !pm_visit_node((const pm_node_t *) cast->arguments, visitor, data)) return false;
|
|
643
623
|
|
|
644
624
|
// Visit the block field
|
|
645
|
-
if (cast->block != NULL)
|
|
646
|
-
pm_visit_node((const pm_node_t *) cast->block, visitor, data);
|
|
647
|
-
}
|
|
625
|
+
if (cast->block != NULL && !pm_visit_node((const pm_node_t *) cast->block, visitor, data)) return false;
|
|
648
626
|
|
|
649
627
|
break;
|
|
650
628
|
}
|
|
@@ -652,12 +630,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
652
630
|
const pm_call_operator_write_node_t *cast = (const pm_call_operator_write_node_t *) node;
|
|
653
631
|
|
|
654
632
|
// Visit the receiver field
|
|
655
|
-
if (cast->receiver != NULL)
|
|
656
|
-
pm_visit_node((const pm_node_t *) cast->receiver, visitor, data);
|
|
657
|
-
}
|
|
633
|
+
if (cast->receiver != NULL && !pm_visit_node((const pm_node_t *) cast->receiver, visitor, data)) return false;
|
|
658
634
|
|
|
659
635
|
// Visit the value field
|
|
660
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
636
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
661
637
|
|
|
662
638
|
break;
|
|
663
639
|
}
|
|
@@ -665,12 +641,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
665
641
|
const pm_call_or_write_node_t *cast = (const pm_call_or_write_node_t *) node;
|
|
666
642
|
|
|
667
643
|
// Visit the receiver field
|
|
668
|
-
if (cast->receiver != NULL)
|
|
669
|
-
pm_visit_node((const pm_node_t *) cast->receiver, visitor, data);
|
|
670
|
-
}
|
|
644
|
+
if (cast->receiver != NULL && !pm_visit_node((const pm_node_t *) cast->receiver, visitor, data)) return false;
|
|
671
645
|
|
|
672
646
|
// Visit the value field
|
|
673
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
647
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
674
648
|
|
|
675
649
|
break;
|
|
676
650
|
}
|
|
@@ -678,7 +652,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
678
652
|
const pm_call_target_node_t *cast = (const pm_call_target_node_t *) node;
|
|
679
653
|
|
|
680
654
|
// Visit the receiver field
|
|
681
|
-
pm_visit_node((const pm_node_t *) cast->receiver, visitor, data);
|
|
655
|
+
if (!pm_visit_node((const pm_node_t *) cast->receiver, visitor, data)) return false;
|
|
682
656
|
|
|
683
657
|
break;
|
|
684
658
|
}
|
|
@@ -686,10 +660,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
686
660
|
const pm_capture_pattern_node_t *cast = (const pm_capture_pattern_node_t *) node;
|
|
687
661
|
|
|
688
662
|
// Visit the value field
|
|
689
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
663
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
690
664
|
|
|
691
665
|
// Visit the target field
|
|
692
|
-
pm_visit_node((const pm_node_t *) cast->target, visitor, data);
|
|
666
|
+
if (!pm_visit_node((const pm_node_t *) cast->target, visitor, data)) return false;
|
|
693
667
|
|
|
694
668
|
break;
|
|
695
669
|
}
|
|
@@ -697,20 +671,16 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
697
671
|
const pm_case_match_node_t *cast = (const pm_case_match_node_t *) node;
|
|
698
672
|
|
|
699
673
|
// Visit the predicate field
|
|
700
|
-
if (cast->predicate != NULL)
|
|
701
|
-
pm_visit_node((const pm_node_t *) cast->predicate, visitor, data);
|
|
702
|
-
}
|
|
674
|
+
if (cast->predicate != NULL && !pm_visit_node((const pm_node_t *) cast->predicate, visitor, data)) return false;
|
|
703
675
|
|
|
704
676
|
// Visit the conditions field
|
|
705
677
|
const pm_node_list_t *conditions = &cast->conditions;
|
|
706
678
|
for (size_t index = 0; index < conditions->size; index++) {
|
|
707
|
-
pm_visit_node(conditions->nodes[index], visitor, data);
|
|
679
|
+
if (!pm_visit_node(conditions->nodes[index], visitor, data)) return false;
|
|
708
680
|
}
|
|
709
681
|
|
|
710
682
|
// Visit the else_clause field
|
|
711
|
-
if (cast->else_clause != NULL)
|
|
712
|
-
pm_visit_node((const pm_node_t *) cast->else_clause, visitor, data);
|
|
713
|
-
}
|
|
683
|
+
if (cast->else_clause != NULL && !pm_visit_node((const pm_node_t *) cast->else_clause, visitor, data)) return false;
|
|
714
684
|
|
|
715
685
|
break;
|
|
716
686
|
}
|
|
@@ -718,20 +688,16 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
718
688
|
const pm_case_node_t *cast = (const pm_case_node_t *) node;
|
|
719
689
|
|
|
720
690
|
// Visit the predicate field
|
|
721
|
-
if (cast->predicate != NULL)
|
|
722
|
-
pm_visit_node((const pm_node_t *) cast->predicate, visitor, data);
|
|
723
|
-
}
|
|
691
|
+
if (cast->predicate != NULL && !pm_visit_node((const pm_node_t *) cast->predicate, visitor, data)) return false;
|
|
724
692
|
|
|
725
693
|
// Visit the conditions field
|
|
726
694
|
const pm_node_list_t *conditions = &cast->conditions;
|
|
727
695
|
for (size_t index = 0; index < conditions->size; index++) {
|
|
728
|
-
pm_visit_node(conditions->nodes[index], visitor, data);
|
|
696
|
+
if (!pm_visit_node(conditions->nodes[index], visitor, data)) return false;
|
|
729
697
|
}
|
|
730
698
|
|
|
731
699
|
// Visit the else_clause field
|
|
732
|
-
if (cast->else_clause != NULL)
|
|
733
|
-
pm_visit_node((const pm_node_t *) cast->else_clause, visitor, data);
|
|
734
|
-
}
|
|
700
|
+
if (cast->else_clause != NULL && !pm_visit_node((const pm_node_t *) cast->else_clause, visitor, data)) return false;
|
|
735
701
|
|
|
736
702
|
break;
|
|
737
703
|
}
|
|
@@ -739,17 +705,13 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
739
705
|
const pm_class_node_t *cast = (const pm_class_node_t *) node;
|
|
740
706
|
|
|
741
707
|
// Visit the constant_path field
|
|
742
|
-
pm_visit_node((const pm_node_t *) cast->constant_path, visitor, data);
|
|
708
|
+
if (!pm_visit_node((const pm_node_t *) cast->constant_path, visitor, data)) return false;
|
|
743
709
|
|
|
744
710
|
// Visit the superclass field
|
|
745
|
-
if (cast->superclass != NULL)
|
|
746
|
-
pm_visit_node((const pm_node_t *) cast->superclass, visitor, data);
|
|
747
|
-
}
|
|
711
|
+
if (cast->superclass != NULL && !pm_visit_node((const pm_node_t *) cast->superclass, visitor, data)) return false;
|
|
748
712
|
|
|
749
713
|
// Visit the body field
|
|
750
|
-
if (cast->body != NULL)
|
|
751
|
-
pm_visit_node((const pm_node_t *) cast->body, visitor, data);
|
|
752
|
-
}
|
|
714
|
+
if (cast->body != NULL && !pm_visit_node((const pm_node_t *) cast->body, visitor, data)) return false;
|
|
753
715
|
|
|
754
716
|
break;
|
|
755
717
|
}
|
|
@@ -757,7 +719,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
757
719
|
const pm_class_variable_and_write_node_t *cast = (const pm_class_variable_and_write_node_t *) node;
|
|
758
720
|
|
|
759
721
|
// Visit the value field
|
|
760
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
722
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
761
723
|
|
|
762
724
|
break;
|
|
763
725
|
}
|
|
@@ -765,7 +727,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
765
727
|
const pm_class_variable_operator_write_node_t *cast = (const pm_class_variable_operator_write_node_t *) node;
|
|
766
728
|
|
|
767
729
|
// Visit the value field
|
|
768
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
730
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
769
731
|
|
|
770
732
|
break;
|
|
771
733
|
}
|
|
@@ -773,7 +735,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
773
735
|
const pm_class_variable_or_write_node_t *cast = (const pm_class_variable_or_write_node_t *) node;
|
|
774
736
|
|
|
775
737
|
// Visit the value field
|
|
776
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
738
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
777
739
|
|
|
778
740
|
break;
|
|
779
741
|
}
|
|
@@ -785,7 +747,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
785
747
|
const pm_class_variable_write_node_t *cast = (const pm_class_variable_write_node_t *) node;
|
|
786
748
|
|
|
787
749
|
// Visit the value field
|
|
788
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
750
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
789
751
|
|
|
790
752
|
break;
|
|
791
753
|
}
|
|
@@ -793,7 +755,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
793
755
|
const pm_constant_and_write_node_t *cast = (const pm_constant_and_write_node_t *) node;
|
|
794
756
|
|
|
795
757
|
// Visit the value field
|
|
796
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
758
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
797
759
|
|
|
798
760
|
break;
|
|
799
761
|
}
|
|
@@ -801,7 +763,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
801
763
|
const pm_constant_operator_write_node_t *cast = (const pm_constant_operator_write_node_t *) node;
|
|
802
764
|
|
|
803
765
|
// Visit the value field
|
|
804
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
766
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
805
767
|
|
|
806
768
|
break;
|
|
807
769
|
}
|
|
@@ -809,7 +771,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
809
771
|
const pm_constant_or_write_node_t *cast = (const pm_constant_or_write_node_t *) node;
|
|
810
772
|
|
|
811
773
|
// Visit the value field
|
|
812
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
774
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
813
775
|
|
|
814
776
|
break;
|
|
815
777
|
}
|
|
@@ -817,10 +779,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
817
779
|
const pm_constant_path_and_write_node_t *cast = (const pm_constant_path_and_write_node_t *) node;
|
|
818
780
|
|
|
819
781
|
// Visit the target field
|
|
820
|
-
pm_visit_node((const pm_node_t *) cast->target, visitor, data);
|
|
782
|
+
if (!pm_visit_node((const pm_node_t *) cast->target, visitor, data)) return false;
|
|
821
783
|
|
|
822
784
|
// Visit the value field
|
|
823
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
785
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
824
786
|
|
|
825
787
|
break;
|
|
826
788
|
}
|
|
@@ -828,9 +790,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
828
790
|
const pm_constant_path_node_t *cast = (const pm_constant_path_node_t *) node;
|
|
829
791
|
|
|
830
792
|
// Visit the parent field
|
|
831
|
-
if (cast->parent != NULL)
|
|
832
|
-
pm_visit_node((const pm_node_t *) cast->parent, visitor, data);
|
|
833
|
-
}
|
|
793
|
+
if (cast->parent != NULL && !pm_visit_node((const pm_node_t *) cast->parent, visitor, data)) return false;
|
|
834
794
|
|
|
835
795
|
break;
|
|
836
796
|
}
|
|
@@ -838,10 +798,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
838
798
|
const pm_constant_path_operator_write_node_t *cast = (const pm_constant_path_operator_write_node_t *) node;
|
|
839
799
|
|
|
840
800
|
// Visit the target field
|
|
841
|
-
pm_visit_node((const pm_node_t *) cast->target, visitor, data);
|
|
801
|
+
if (!pm_visit_node((const pm_node_t *) cast->target, visitor, data)) return false;
|
|
842
802
|
|
|
843
803
|
// Visit the value field
|
|
844
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
804
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
845
805
|
|
|
846
806
|
break;
|
|
847
807
|
}
|
|
@@ -849,10 +809,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
849
809
|
const pm_constant_path_or_write_node_t *cast = (const pm_constant_path_or_write_node_t *) node;
|
|
850
810
|
|
|
851
811
|
// Visit the target field
|
|
852
|
-
pm_visit_node((const pm_node_t *) cast->target, visitor, data);
|
|
812
|
+
if (!pm_visit_node((const pm_node_t *) cast->target, visitor, data)) return false;
|
|
853
813
|
|
|
854
814
|
// Visit the value field
|
|
855
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
815
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
856
816
|
|
|
857
817
|
break;
|
|
858
818
|
}
|
|
@@ -860,9 +820,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
860
820
|
const pm_constant_path_target_node_t *cast = (const pm_constant_path_target_node_t *) node;
|
|
861
821
|
|
|
862
822
|
// Visit the parent field
|
|
863
|
-
if (cast->parent != NULL)
|
|
864
|
-
pm_visit_node((const pm_node_t *) cast->parent, visitor, data);
|
|
865
|
-
}
|
|
823
|
+
if (cast->parent != NULL && !pm_visit_node((const pm_node_t *) cast->parent, visitor, data)) return false;
|
|
866
824
|
|
|
867
825
|
break;
|
|
868
826
|
}
|
|
@@ -870,10 +828,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
870
828
|
const pm_constant_path_write_node_t *cast = (const pm_constant_path_write_node_t *) node;
|
|
871
829
|
|
|
872
830
|
// Visit the target field
|
|
873
|
-
pm_visit_node((const pm_node_t *) cast->target, visitor, data);
|
|
831
|
+
if (!pm_visit_node((const pm_node_t *) cast->target, visitor, data)) return false;
|
|
874
832
|
|
|
875
833
|
// Visit the value field
|
|
876
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
834
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
877
835
|
|
|
878
836
|
break;
|
|
879
837
|
}
|
|
@@ -885,7 +843,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
885
843
|
const pm_constant_write_node_t *cast = (const pm_constant_write_node_t *) node;
|
|
886
844
|
|
|
887
845
|
// Visit the value field
|
|
888
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
846
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
889
847
|
|
|
890
848
|
break;
|
|
891
849
|
}
|
|
@@ -893,19 +851,13 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
893
851
|
const pm_def_node_t *cast = (const pm_def_node_t *) node;
|
|
894
852
|
|
|
895
853
|
// Visit the receiver field
|
|
896
|
-
if (cast->receiver != NULL)
|
|
897
|
-
pm_visit_node((const pm_node_t *) cast->receiver, visitor, data);
|
|
898
|
-
}
|
|
854
|
+
if (cast->receiver != NULL && !pm_visit_node((const pm_node_t *) cast->receiver, visitor, data)) return false;
|
|
899
855
|
|
|
900
856
|
// Visit the parameters field
|
|
901
|
-
if (cast->parameters != NULL)
|
|
902
|
-
pm_visit_node((const pm_node_t *) cast->parameters, visitor, data);
|
|
903
|
-
}
|
|
857
|
+
if (cast->parameters != NULL && !pm_visit_node((const pm_node_t *) cast->parameters, visitor, data)) return false;
|
|
904
858
|
|
|
905
859
|
// Visit the body field
|
|
906
|
-
if (cast->body != NULL)
|
|
907
|
-
pm_visit_node((const pm_node_t *) cast->body, visitor, data);
|
|
908
|
-
}
|
|
860
|
+
if (cast->body != NULL && !pm_visit_node((const pm_node_t *) cast->body, visitor, data)) return false;
|
|
909
861
|
|
|
910
862
|
break;
|
|
911
863
|
}
|
|
@@ -913,7 +865,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
913
865
|
const pm_defined_node_t *cast = (const pm_defined_node_t *) node;
|
|
914
866
|
|
|
915
867
|
// Visit the value field
|
|
916
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
868
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
917
869
|
|
|
918
870
|
break;
|
|
919
871
|
}
|
|
@@ -921,9 +873,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
921
873
|
const pm_else_node_t *cast = (const pm_else_node_t *) node;
|
|
922
874
|
|
|
923
875
|
// Visit the statements field
|
|
924
|
-
if (cast->statements != NULL)
|
|
925
|
-
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
|
926
|
-
}
|
|
876
|
+
if (cast->statements != NULL && !pm_visit_node((const pm_node_t *) cast->statements, visitor, data)) return false;
|
|
927
877
|
|
|
928
878
|
break;
|
|
929
879
|
}
|
|
@@ -931,9 +881,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
931
881
|
const pm_embedded_statements_node_t *cast = (const pm_embedded_statements_node_t *) node;
|
|
932
882
|
|
|
933
883
|
// Visit the statements field
|
|
934
|
-
if (cast->statements != NULL)
|
|
935
|
-
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
|
936
|
-
}
|
|
884
|
+
if (cast->statements != NULL && !pm_visit_node((const pm_node_t *) cast->statements, visitor, data)) return false;
|
|
937
885
|
|
|
938
886
|
break;
|
|
939
887
|
}
|
|
@@ -941,7 +889,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
941
889
|
const pm_embedded_variable_node_t *cast = (const pm_embedded_variable_node_t *) node;
|
|
942
890
|
|
|
943
891
|
// Visit the variable field
|
|
944
|
-
pm_visit_node((const pm_node_t *) cast->variable, visitor, data);
|
|
892
|
+
if (!pm_visit_node((const pm_node_t *) cast->variable, visitor, data)) return false;
|
|
945
893
|
|
|
946
894
|
break;
|
|
947
895
|
}
|
|
@@ -949,9 +897,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
949
897
|
const pm_ensure_node_t *cast = (const pm_ensure_node_t *) node;
|
|
950
898
|
|
|
951
899
|
// Visit the statements field
|
|
952
|
-
if (cast->statements != NULL)
|
|
953
|
-
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
|
954
|
-
}
|
|
900
|
+
if (cast->statements != NULL && !pm_visit_node((const pm_node_t *) cast->statements, visitor, data)) return false;
|
|
955
901
|
|
|
956
902
|
break;
|
|
957
903
|
}
|
|
@@ -959,9 +905,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
959
905
|
const pm_error_recovery_node_t *cast = (const pm_error_recovery_node_t *) node;
|
|
960
906
|
|
|
961
907
|
// Visit the unexpected field
|
|
962
|
-
if (cast->unexpected != NULL)
|
|
963
|
-
pm_visit_node((const pm_node_t *) cast->unexpected, visitor, data);
|
|
964
|
-
}
|
|
908
|
+
if (cast->unexpected != NULL && !pm_visit_node((const pm_node_t *) cast->unexpected, visitor, data)) return false;
|
|
965
909
|
|
|
966
910
|
break;
|
|
967
911
|
}
|
|
@@ -971,21 +915,19 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
971
915
|
const pm_find_pattern_node_t *cast = (const pm_find_pattern_node_t *) node;
|
|
972
916
|
|
|
973
917
|
// Visit the constant field
|
|
974
|
-
if (cast->constant != NULL)
|
|
975
|
-
pm_visit_node((const pm_node_t *) cast->constant, visitor, data);
|
|
976
|
-
}
|
|
918
|
+
if (cast->constant != NULL && !pm_visit_node((const pm_node_t *) cast->constant, visitor, data)) return false;
|
|
977
919
|
|
|
978
920
|
// Visit the left field
|
|
979
|
-
pm_visit_node((const pm_node_t *) cast->left, visitor, data);
|
|
921
|
+
if (!pm_visit_node((const pm_node_t *) cast->left, visitor, data)) return false;
|
|
980
922
|
|
|
981
923
|
// Visit the requireds field
|
|
982
924
|
const pm_node_list_t *requireds = &cast->requireds;
|
|
983
925
|
for (size_t index = 0; index < requireds->size; index++) {
|
|
984
|
-
pm_visit_node(requireds->nodes[index], visitor, data);
|
|
926
|
+
if (!pm_visit_node(requireds->nodes[index], visitor, data)) return false;
|
|
985
927
|
}
|
|
986
928
|
|
|
987
929
|
// Visit the right field
|
|
988
|
-
pm_visit_node((const pm_node_t *) cast->right, visitor, data);
|
|
930
|
+
if (!pm_visit_node((const pm_node_t *) cast->right, visitor, data)) return false;
|
|
989
931
|
|
|
990
932
|
break;
|
|
991
933
|
}
|
|
@@ -993,14 +935,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
993
935
|
const pm_flip_flop_node_t *cast = (const pm_flip_flop_node_t *) node;
|
|
994
936
|
|
|
995
937
|
// Visit the left field
|
|
996
|
-
if (cast->left != NULL)
|
|
997
|
-
pm_visit_node((const pm_node_t *) cast->left, visitor, data);
|
|
998
|
-
}
|
|
938
|
+
if (cast->left != NULL && !pm_visit_node((const pm_node_t *) cast->left, visitor, data)) return false;
|
|
999
939
|
|
|
1000
940
|
// Visit the right field
|
|
1001
|
-
if (cast->right != NULL)
|
|
1002
|
-
pm_visit_node((const pm_node_t *) cast->right, visitor, data);
|
|
1003
|
-
}
|
|
941
|
+
if (cast->right != NULL && !pm_visit_node((const pm_node_t *) cast->right, visitor, data)) return false;
|
|
1004
942
|
|
|
1005
943
|
break;
|
|
1006
944
|
}
|
|
@@ -1010,15 +948,13 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1010
948
|
const pm_for_node_t *cast = (const pm_for_node_t *) node;
|
|
1011
949
|
|
|
1012
950
|
// Visit the index field
|
|
1013
|
-
pm_visit_node((const pm_node_t *) cast->index, visitor, data);
|
|
951
|
+
if (!pm_visit_node((const pm_node_t *) cast->index, visitor, data)) return false;
|
|
1014
952
|
|
|
1015
953
|
// Visit the collection field
|
|
1016
|
-
pm_visit_node((const pm_node_t *) cast->collection, visitor, data);
|
|
954
|
+
if (!pm_visit_node((const pm_node_t *) cast->collection, visitor, data)) return false;
|
|
1017
955
|
|
|
1018
956
|
// Visit the statements field
|
|
1019
|
-
if (cast->statements != NULL)
|
|
1020
|
-
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
|
1021
|
-
}
|
|
957
|
+
if (cast->statements != NULL && !pm_visit_node((const pm_node_t *) cast->statements, visitor, data)) return false;
|
|
1022
958
|
|
|
1023
959
|
break;
|
|
1024
960
|
}
|
|
@@ -1030,9 +966,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1030
966
|
const pm_forwarding_super_node_t *cast = (const pm_forwarding_super_node_t *) node;
|
|
1031
967
|
|
|
1032
968
|
// Visit the block field
|
|
1033
|
-
if (cast->block != NULL)
|
|
1034
|
-
pm_visit_node((const pm_node_t *) cast->block, visitor, data);
|
|
1035
|
-
}
|
|
969
|
+
if (cast->block != NULL && !pm_visit_node((const pm_node_t *) cast->block, visitor, data)) return false;
|
|
1036
970
|
|
|
1037
971
|
break;
|
|
1038
972
|
}
|
|
@@ -1040,7 +974,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1040
974
|
const pm_global_variable_and_write_node_t *cast = (const pm_global_variable_and_write_node_t *) node;
|
|
1041
975
|
|
|
1042
976
|
// Visit the value field
|
|
1043
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
977
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1044
978
|
|
|
1045
979
|
break;
|
|
1046
980
|
}
|
|
@@ -1048,7 +982,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1048
982
|
const pm_global_variable_operator_write_node_t *cast = (const pm_global_variable_operator_write_node_t *) node;
|
|
1049
983
|
|
|
1050
984
|
// Visit the value field
|
|
1051
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
985
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1052
986
|
|
|
1053
987
|
break;
|
|
1054
988
|
}
|
|
@@ -1056,7 +990,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1056
990
|
const pm_global_variable_or_write_node_t *cast = (const pm_global_variable_or_write_node_t *) node;
|
|
1057
991
|
|
|
1058
992
|
// Visit the value field
|
|
1059
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
993
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1060
994
|
|
|
1061
995
|
break;
|
|
1062
996
|
}
|
|
@@ -1068,7 +1002,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1068
1002
|
const pm_global_variable_write_node_t *cast = (const pm_global_variable_write_node_t *) node;
|
|
1069
1003
|
|
|
1070
1004
|
// Visit the value field
|
|
1071
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1005
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1072
1006
|
|
|
1073
1007
|
break;
|
|
1074
1008
|
}
|
|
@@ -1078,7 +1012,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1078
1012
|
// Visit the elements field
|
|
1079
1013
|
const pm_node_list_t *elements = &cast->elements;
|
|
1080
1014
|
for (size_t index = 0; index < elements->size; index++) {
|
|
1081
|
-
pm_visit_node(elements->nodes[index], visitor, data);
|
|
1015
|
+
if (!pm_visit_node(elements->nodes[index], visitor, data)) return false;
|
|
1082
1016
|
}
|
|
1083
1017
|
|
|
1084
1018
|
break;
|
|
@@ -1087,20 +1021,16 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1087
1021
|
const pm_hash_pattern_node_t *cast = (const pm_hash_pattern_node_t *) node;
|
|
1088
1022
|
|
|
1089
1023
|
// Visit the constant field
|
|
1090
|
-
if (cast->constant != NULL)
|
|
1091
|
-
pm_visit_node((const pm_node_t *) cast->constant, visitor, data);
|
|
1092
|
-
}
|
|
1024
|
+
if (cast->constant != NULL && !pm_visit_node((const pm_node_t *) cast->constant, visitor, data)) return false;
|
|
1093
1025
|
|
|
1094
1026
|
// Visit the elements field
|
|
1095
1027
|
const pm_node_list_t *elements = &cast->elements;
|
|
1096
1028
|
for (size_t index = 0; index < elements->size; index++) {
|
|
1097
|
-
pm_visit_node(elements->nodes[index], visitor, data);
|
|
1029
|
+
if (!pm_visit_node(elements->nodes[index], visitor, data)) return false;
|
|
1098
1030
|
}
|
|
1099
1031
|
|
|
1100
1032
|
// Visit the rest field
|
|
1101
|
-
if (cast->rest != NULL)
|
|
1102
|
-
pm_visit_node((const pm_node_t *) cast->rest, visitor, data);
|
|
1103
|
-
}
|
|
1033
|
+
if (cast->rest != NULL && !pm_visit_node((const pm_node_t *) cast->rest, visitor, data)) return false;
|
|
1104
1034
|
|
|
1105
1035
|
break;
|
|
1106
1036
|
}
|
|
@@ -1108,17 +1038,13 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1108
1038
|
const pm_if_node_t *cast = (const pm_if_node_t *) node;
|
|
1109
1039
|
|
|
1110
1040
|
// Visit the predicate field
|
|
1111
|
-
pm_visit_node((const pm_node_t *) cast->predicate, visitor, data);
|
|
1041
|
+
if (!pm_visit_node((const pm_node_t *) cast->predicate, visitor, data)) return false;
|
|
1112
1042
|
|
|
1113
1043
|
// Visit the statements field
|
|
1114
|
-
if (cast->statements != NULL)
|
|
1115
|
-
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
|
1116
|
-
}
|
|
1044
|
+
if (cast->statements != NULL && !pm_visit_node((const pm_node_t *) cast->statements, visitor, data)) return false;
|
|
1117
1045
|
|
|
1118
1046
|
// Visit the subsequent field
|
|
1119
|
-
if (cast->subsequent != NULL)
|
|
1120
|
-
pm_visit_node((const pm_node_t *) cast->subsequent, visitor, data);
|
|
1121
|
-
}
|
|
1047
|
+
if (cast->subsequent != NULL && !pm_visit_node((const pm_node_t *) cast->subsequent, visitor, data)) return false;
|
|
1122
1048
|
|
|
1123
1049
|
break;
|
|
1124
1050
|
}
|
|
@@ -1126,7 +1052,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1126
1052
|
const pm_imaginary_node_t *cast = (const pm_imaginary_node_t *) node;
|
|
1127
1053
|
|
|
1128
1054
|
// Visit the numeric field
|
|
1129
|
-
pm_visit_node((const pm_node_t *) cast->numeric, visitor, data);
|
|
1055
|
+
if (!pm_visit_node((const pm_node_t *) cast->numeric, visitor, data)) return false;
|
|
1130
1056
|
|
|
1131
1057
|
break;
|
|
1132
1058
|
}
|
|
@@ -1134,7 +1060,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1134
1060
|
const pm_implicit_node_t *cast = (const pm_implicit_node_t *) node;
|
|
1135
1061
|
|
|
1136
1062
|
// Visit the value field
|
|
1137
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1063
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1138
1064
|
|
|
1139
1065
|
break;
|
|
1140
1066
|
}
|
|
@@ -1144,12 +1070,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1144
1070
|
const pm_in_node_t *cast = (const pm_in_node_t *) node;
|
|
1145
1071
|
|
|
1146
1072
|
// Visit the pattern field
|
|
1147
|
-
pm_visit_node((const pm_node_t *) cast->pattern, visitor, data);
|
|
1073
|
+
if (!pm_visit_node((const pm_node_t *) cast->pattern, visitor, data)) return false;
|
|
1148
1074
|
|
|
1149
1075
|
// Visit the statements field
|
|
1150
|
-
if (cast->statements != NULL)
|
|
1151
|
-
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
|
1152
|
-
}
|
|
1076
|
+
if (cast->statements != NULL && !pm_visit_node((const pm_node_t *) cast->statements, visitor, data)) return false;
|
|
1153
1077
|
|
|
1154
1078
|
break;
|
|
1155
1079
|
}
|
|
@@ -1157,22 +1081,16 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1157
1081
|
const pm_index_and_write_node_t *cast = (const pm_index_and_write_node_t *) node;
|
|
1158
1082
|
|
|
1159
1083
|
// Visit the receiver field
|
|
1160
|
-
if (cast->receiver != NULL)
|
|
1161
|
-
pm_visit_node((const pm_node_t *) cast->receiver, visitor, data);
|
|
1162
|
-
}
|
|
1084
|
+
if (cast->receiver != NULL && !pm_visit_node((const pm_node_t *) cast->receiver, visitor, data)) return false;
|
|
1163
1085
|
|
|
1164
1086
|
// Visit the arguments field
|
|
1165
|
-
if (cast->arguments != NULL)
|
|
1166
|
-
pm_visit_node((const pm_node_t *) cast->arguments, visitor, data);
|
|
1167
|
-
}
|
|
1087
|
+
if (cast->arguments != NULL && !pm_visit_node((const pm_node_t *) cast->arguments, visitor, data)) return false;
|
|
1168
1088
|
|
|
1169
1089
|
// Visit the block field
|
|
1170
|
-
if (cast->block != NULL)
|
|
1171
|
-
pm_visit_node((const pm_node_t *) cast->block, visitor, data);
|
|
1172
|
-
}
|
|
1090
|
+
if (cast->block != NULL && !pm_visit_node((const pm_node_t *) cast->block, visitor, data)) return false;
|
|
1173
1091
|
|
|
1174
1092
|
// Visit the value field
|
|
1175
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1093
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1176
1094
|
|
|
1177
1095
|
break;
|
|
1178
1096
|
}
|
|
@@ -1180,22 +1098,16 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1180
1098
|
const pm_index_operator_write_node_t *cast = (const pm_index_operator_write_node_t *) node;
|
|
1181
1099
|
|
|
1182
1100
|
// Visit the receiver field
|
|
1183
|
-
if (cast->receiver != NULL)
|
|
1184
|
-
pm_visit_node((const pm_node_t *) cast->receiver, visitor, data);
|
|
1185
|
-
}
|
|
1101
|
+
if (cast->receiver != NULL && !pm_visit_node((const pm_node_t *) cast->receiver, visitor, data)) return false;
|
|
1186
1102
|
|
|
1187
1103
|
// Visit the arguments field
|
|
1188
|
-
if (cast->arguments != NULL)
|
|
1189
|
-
pm_visit_node((const pm_node_t *) cast->arguments, visitor, data);
|
|
1190
|
-
}
|
|
1104
|
+
if (cast->arguments != NULL && !pm_visit_node((const pm_node_t *) cast->arguments, visitor, data)) return false;
|
|
1191
1105
|
|
|
1192
1106
|
// Visit the block field
|
|
1193
|
-
if (cast->block != NULL)
|
|
1194
|
-
pm_visit_node((const pm_node_t *) cast->block, visitor, data);
|
|
1195
|
-
}
|
|
1107
|
+
if (cast->block != NULL && !pm_visit_node((const pm_node_t *) cast->block, visitor, data)) return false;
|
|
1196
1108
|
|
|
1197
1109
|
// Visit the value field
|
|
1198
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1110
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1199
1111
|
|
|
1200
1112
|
break;
|
|
1201
1113
|
}
|
|
@@ -1203,22 +1115,16 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1203
1115
|
const pm_index_or_write_node_t *cast = (const pm_index_or_write_node_t *) node;
|
|
1204
1116
|
|
|
1205
1117
|
// Visit the receiver field
|
|
1206
|
-
if (cast->receiver != NULL)
|
|
1207
|
-
pm_visit_node((const pm_node_t *) cast->receiver, visitor, data);
|
|
1208
|
-
}
|
|
1118
|
+
if (cast->receiver != NULL && !pm_visit_node((const pm_node_t *) cast->receiver, visitor, data)) return false;
|
|
1209
1119
|
|
|
1210
1120
|
// Visit the arguments field
|
|
1211
|
-
if (cast->arguments != NULL)
|
|
1212
|
-
pm_visit_node((const pm_node_t *) cast->arguments, visitor, data);
|
|
1213
|
-
}
|
|
1121
|
+
if (cast->arguments != NULL && !pm_visit_node((const pm_node_t *) cast->arguments, visitor, data)) return false;
|
|
1214
1122
|
|
|
1215
1123
|
// Visit the block field
|
|
1216
|
-
if (cast->block != NULL)
|
|
1217
|
-
pm_visit_node((const pm_node_t *) cast->block, visitor, data);
|
|
1218
|
-
}
|
|
1124
|
+
if (cast->block != NULL && !pm_visit_node((const pm_node_t *) cast->block, visitor, data)) return false;
|
|
1219
1125
|
|
|
1220
1126
|
// Visit the value field
|
|
1221
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1127
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1222
1128
|
|
|
1223
1129
|
break;
|
|
1224
1130
|
}
|
|
@@ -1226,17 +1132,13 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1226
1132
|
const pm_index_target_node_t *cast = (const pm_index_target_node_t *) node;
|
|
1227
1133
|
|
|
1228
1134
|
// Visit the receiver field
|
|
1229
|
-
pm_visit_node((const pm_node_t *) cast->receiver, visitor, data);
|
|
1135
|
+
if (!pm_visit_node((const pm_node_t *) cast->receiver, visitor, data)) return false;
|
|
1230
1136
|
|
|
1231
1137
|
// Visit the arguments field
|
|
1232
|
-
if (cast->arguments != NULL)
|
|
1233
|
-
pm_visit_node((const pm_node_t *) cast->arguments, visitor, data);
|
|
1234
|
-
}
|
|
1138
|
+
if (cast->arguments != NULL && !pm_visit_node((const pm_node_t *) cast->arguments, visitor, data)) return false;
|
|
1235
1139
|
|
|
1236
1140
|
// Visit the block field
|
|
1237
|
-
if (cast->block != NULL)
|
|
1238
|
-
pm_visit_node((const pm_node_t *) cast->block, visitor, data);
|
|
1239
|
-
}
|
|
1141
|
+
if (cast->block != NULL && !pm_visit_node((const pm_node_t *) cast->block, visitor, data)) return false;
|
|
1240
1142
|
|
|
1241
1143
|
break;
|
|
1242
1144
|
}
|
|
@@ -1244,7 +1146,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1244
1146
|
const pm_instance_variable_and_write_node_t *cast = (const pm_instance_variable_and_write_node_t *) node;
|
|
1245
1147
|
|
|
1246
1148
|
// Visit the value field
|
|
1247
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1149
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1248
1150
|
|
|
1249
1151
|
break;
|
|
1250
1152
|
}
|
|
@@ -1252,7 +1154,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1252
1154
|
const pm_instance_variable_operator_write_node_t *cast = (const pm_instance_variable_operator_write_node_t *) node;
|
|
1253
1155
|
|
|
1254
1156
|
// Visit the value field
|
|
1255
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1157
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1256
1158
|
|
|
1257
1159
|
break;
|
|
1258
1160
|
}
|
|
@@ -1260,7 +1162,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1260
1162
|
const pm_instance_variable_or_write_node_t *cast = (const pm_instance_variable_or_write_node_t *) node;
|
|
1261
1163
|
|
|
1262
1164
|
// Visit the value field
|
|
1263
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1165
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1264
1166
|
|
|
1265
1167
|
break;
|
|
1266
1168
|
}
|
|
@@ -1272,7 +1174,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1272
1174
|
const pm_instance_variable_write_node_t *cast = (const pm_instance_variable_write_node_t *) node;
|
|
1273
1175
|
|
|
1274
1176
|
// Visit the value field
|
|
1275
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1177
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1276
1178
|
|
|
1277
1179
|
break;
|
|
1278
1180
|
}
|
|
@@ -1284,7 +1186,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1284
1186
|
// Visit the parts field
|
|
1285
1187
|
const pm_node_list_t *parts = &cast->parts;
|
|
1286
1188
|
for (size_t index = 0; index < parts->size; index++) {
|
|
1287
|
-
pm_visit_node(parts->nodes[index], visitor, data);
|
|
1189
|
+
if (!pm_visit_node(parts->nodes[index], visitor, data)) return false;
|
|
1288
1190
|
}
|
|
1289
1191
|
|
|
1290
1192
|
break;
|
|
@@ -1295,7 +1197,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1295
1197
|
// Visit the parts field
|
|
1296
1198
|
const pm_node_list_t *parts = &cast->parts;
|
|
1297
1199
|
for (size_t index = 0; index < parts->size; index++) {
|
|
1298
|
-
pm_visit_node(parts->nodes[index], visitor, data);
|
|
1200
|
+
if (!pm_visit_node(parts->nodes[index], visitor, data)) return false;
|
|
1299
1201
|
}
|
|
1300
1202
|
|
|
1301
1203
|
break;
|
|
@@ -1306,7 +1208,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1306
1208
|
// Visit the parts field
|
|
1307
1209
|
const pm_node_list_t *parts = &cast->parts;
|
|
1308
1210
|
for (size_t index = 0; index < parts->size; index++) {
|
|
1309
|
-
pm_visit_node(parts->nodes[index], visitor, data);
|
|
1211
|
+
if (!pm_visit_node(parts->nodes[index], visitor, data)) return false;
|
|
1310
1212
|
}
|
|
1311
1213
|
|
|
1312
1214
|
break;
|
|
@@ -1317,7 +1219,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1317
1219
|
// Visit the parts field
|
|
1318
1220
|
const pm_node_list_t *parts = &cast->parts;
|
|
1319
1221
|
for (size_t index = 0; index < parts->size; index++) {
|
|
1320
|
-
pm_visit_node(parts->nodes[index], visitor, data);
|
|
1222
|
+
if (!pm_visit_node(parts->nodes[index], visitor, data)) return false;
|
|
1321
1223
|
}
|
|
1322
1224
|
|
|
1323
1225
|
break;
|
|
@@ -1328,7 +1230,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1328
1230
|
// Visit the parts field
|
|
1329
1231
|
const pm_node_list_t *parts = &cast->parts;
|
|
1330
1232
|
for (size_t index = 0; index < parts->size; index++) {
|
|
1331
|
-
pm_visit_node(parts->nodes[index], visitor, data);
|
|
1233
|
+
if (!pm_visit_node(parts->nodes[index], visitor, data)) return false;
|
|
1332
1234
|
}
|
|
1333
1235
|
|
|
1334
1236
|
break;
|
|
@@ -1343,7 +1245,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1343
1245
|
// Visit the elements field
|
|
1344
1246
|
const pm_node_list_t *elements = &cast->elements;
|
|
1345
1247
|
for (size_t index = 0; index < elements->size; index++) {
|
|
1346
|
-
pm_visit_node(elements->nodes[index], visitor, data);
|
|
1248
|
+
if (!pm_visit_node(elements->nodes[index], visitor, data)) return false;
|
|
1347
1249
|
}
|
|
1348
1250
|
|
|
1349
1251
|
break;
|
|
@@ -1354,14 +1256,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1354
1256
|
const pm_lambda_node_t *cast = (const pm_lambda_node_t *) node;
|
|
1355
1257
|
|
|
1356
1258
|
// Visit the parameters field
|
|
1357
|
-
if (cast->parameters != NULL)
|
|
1358
|
-
pm_visit_node((const pm_node_t *) cast->parameters, visitor, data);
|
|
1359
|
-
}
|
|
1259
|
+
if (cast->parameters != NULL && !pm_visit_node((const pm_node_t *) cast->parameters, visitor, data)) return false;
|
|
1360
1260
|
|
|
1361
1261
|
// Visit the body field
|
|
1362
|
-
if (cast->body != NULL)
|
|
1363
|
-
pm_visit_node((const pm_node_t *) cast->body, visitor, data);
|
|
1364
|
-
}
|
|
1262
|
+
if (cast->body != NULL && !pm_visit_node((const pm_node_t *) cast->body, visitor, data)) return false;
|
|
1365
1263
|
|
|
1366
1264
|
break;
|
|
1367
1265
|
}
|
|
@@ -1369,7 +1267,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1369
1267
|
const pm_local_variable_and_write_node_t *cast = (const pm_local_variable_and_write_node_t *) node;
|
|
1370
1268
|
|
|
1371
1269
|
// Visit the value field
|
|
1372
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1270
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1373
1271
|
|
|
1374
1272
|
break;
|
|
1375
1273
|
}
|
|
@@ -1377,7 +1275,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1377
1275
|
const pm_local_variable_operator_write_node_t *cast = (const pm_local_variable_operator_write_node_t *) node;
|
|
1378
1276
|
|
|
1379
1277
|
// Visit the value field
|
|
1380
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1278
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1381
1279
|
|
|
1382
1280
|
break;
|
|
1383
1281
|
}
|
|
@@ -1385,7 +1283,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1385
1283
|
const pm_local_variable_or_write_node_t *cast = (const pm_local_variable_or_write_node_t *) node;
|
|
1386
1284
|
|
|
1387
1285
|
// Visit the value field
|
|
1388
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1286
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1389
1287
|
|
|
1390
1288
|
break;
|
|
1391
1289
|
}
|
|
@@ -1397,7 +1295,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1397
1295
|
const pm_local_variable_write_node_t *cast = (const pm_local_variable_write_node_t *) node;
|
|
1398
1296
|
|
|
1399
1297
|
// Visit the value field
|
|
1400
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1298
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1401
1299
|
|
|
1402
1300
|
break;
|
|
1403
1301
|
}
|
|
@@ -1407,10 +1305,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1407
1305
|
const pm_match_predicate_node_t *cast = (const pm_match_predicate_node_t *) node;
|
|
1408
1306
|
|
|
1409
1307
|
// Visit the value field
|
|
1410
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1308
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1411
1309
|
|
|
1412
1310
|
// Visit the pattern field
|
|
1413
|
-
pm_visit_node((const pm_node_t *) cast->pattern, visitor, data);
|
|
1311
|
+
if (!pm_visit_node((const pm_node_t *) cast->pattern, visitor, data)) return false;
|
|
1414
1312
|
|
|
1415
1313
|
break;
|
|
1416
1314
|
}
|
|
@@ -1418,10 +1316,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1418
1316
|
const pm_match_required_node_t *cast = (const pm_match_required_node_t *) node;
|
|
1419
1317
|
|
|
1420
1318
|
// Visit the value field
|
|
1421
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1319
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1422
1320
|
|
|
1423
1321
|
// Visit the pattern field
|
|
1424
|
-
pm_visit_node((const pm_node_t *) cast->pattern, visitor, data);
|
|
1322
|
+
if (!pm_visit_node((const pm_node_t *) cast->pattern, visitor, data)) return false;
|
|
1425
1323
|
|
|
1426
1324
|
break;
|
|
1427
1325
|
}
|
|
@@ -1429,12 +1327,12 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1429
1327
|
const pm_match_write_node_t *cast = (const pm_match_write_node_t *) node;
|
|
1430
1328
|
|
|
1431
1329
|
// Visit the call field
|
|
1432
|
-
pm_visit_node((const pm_node_t *) cast->call, visitor, data);
|
|
1330
|
+
if (!pm_visit_node((const pm_node_t *) cast->call, visitor, data)) return false;
|
|
1433
1331
|
|
|
1434
1332
|
// Visit the targets field
|
|
1435
1333
|
const pm_node_list_t *targets = &cast->targets;
|
|
1436
1334
|
for (size_t index = 0; index < targets->size; index++) {
|
|
1437
|
-
pm_visit_node(targets->nodes[index], visitor, data);
|
|
1335
|
+
if (!pm_visit_node(targets->nodes[index], visitor, data)) return false;
|
|
1438
1336
|
}
|
|
1439
1337
|
|
|
1440
1338
|
break;
|
|
@@ -1443,12 +1341,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1443
1341
|
const pm_module_node_t *cast = (const pm_module_node_t *) node;
|
|
1444
1342
|
|
|
1445
1343
|
// Visit the constant_path field
|
|
1446
|
-
pm_visit_node((const pm_node_t *) cast->constant_path, visitor, data);
|
|
1344
|
+
if (!pm_visit_node((const pm_node_t *) cast->constant_path, visitor, data)) return false;
|
|
1447
1345
|
|
|
1448
1346
|
// Visit the body field
|
|
1449
|
-
if (cast->body != NULL)
|
|
1450
|
-
pm_visit_node((const pm_node_t *) cast->body, visitor, data);
|
|
1451
|
-
}
|
|
1347
|
+
if (cast->body != NULL && !pm_visit_node((const pm_node_t *) cast->body, visitor, data)) return false;
|
|
1452
1348
|
|
|
1453
1349
|
break;
|
|
1454
1350
|
}
|
|
@@ -1458,18 +1354,16 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1458
1354
|
// Visit the lefts field
|
|
1459
1355
|
const pm_node_list_t *lefts = &cast->lefts;
|
|
1460
1356
|
for (size_t index = 0; index < lefts->size; index++) {
|
|
1461
|
-
pm_visit_node(lefts->nodes[index], visitor, data);
|
|
1357
|
+
if (!pm_visit_node(lefts->nodes[index], visitor, data)) return false;
|
|
1462
1358
|
}
|
|
1463
1359
|
|
|
1464
1360
|
// Visit the rest field
|
|
1465
|
-
if (cast->rest != NULL)
|
|
1466
|
-
pm_visit_node((const pm_node_t *) cast->rest, visitor, data);
|
|
1467
|
-
}
|
|
1361
|
+
if (cast->rest != NULL && !pm_visit_node((const pm_node_t *) cast->rest, visitor, data)) return false;
|
|
1468
1362
|
|
|
1469
1363
|
// Visit the rights field
|
|
1470
1364
|
const pm_node_list_t *rights = &cast->rights;
|
|
1471
1365
|
for (size_t index = 0; index < rights->size; index++) {
|
|
1472
|
-
pm_visit_node(rights->nodes[index], visitor, data);
|
|
1366
|
+
if (!pm_visit_node(rights->nodes[index], visitor, data)) return false;
|
|
1473
1367
|
}
|
|
1474
1368
|
|
|
1475
1369
|
break;
|
|
@@ -1480,22 +1374,20 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1480
1374
|
// Visit the lefts field
|
|
1481
1375
|
const pm_node_list_t *lefts = &cast->lefts;
|
|
1482
1376
|
for (size_t index = 0; index < lefts->size; index++) {
|
|
1483
|
-
pm_visit_node(lefts->nodes[index], visitor, data);
|
|
1377
|
+
if (!pm_visit_node(lefts->nodes[index], visitor, data)) return false;
|
|
1484
1378
|
}
|
|
1485
1379
|
|
|
1486
1380
|
// Visit the rest field
|
|
1487
|
-
if (cast->rest != NULL)
|
|
1488
|
-
pm_visit_node((const pm_node_t *) cast->rest, visitor, data);
|
|
1489
|
-
}
|
|
1381
|
+
if (cast->rest != NULL && !pm_visit_node((const pm_node_t *) cast->rest, visitor, data)) return false;
|
|
1490
1382
|
|
|
1491
1383
|
// Visit the rights field
|
|
1492
1384
|
const pm_node_list_t *rights = &cast->rights;
|
|
1493
1385
|
for (size_t index = 0; index < rights->size; index++) {
|
|
1494
|
-
pm_visit_node(rights->nodes[index], visitor, data);
|
|
1386
|
+
if (!pm_visit_node(rights->nodes[index], visitor, data)) return false;
|
|
1495
1387
|
}
|
|
1496
1388
|
|
|
1497
1389
|
// Visit the value field
|
|
1498
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1390
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1499
1391
|
|
|
1500
1392
|
break;
|
|
1501
1393
|
}
|
|
@@ -1503,9 +1395,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1503
1395
|
const pm_next_node_t *cast = (const pm_next_node_t *) node;
|
|
1504
1396
|
|
|
1505
1397
|
// Visit the arguments field
|
|
1506
|
-
if (cast->arguments != NULL)
|
|
1507
|
-
pm_visit_node((const pm_node_t *) cast->arguments, visitor, data);
|
|
1508
|
-
}
|
|
1398
|
+
if (cast->arguments != NULL && !pm_visit_node((const pm_node_t *) cast->arguments, visitor, data)) return false;
|
|
1509
1399
|
|
|
1510
1400
|
break;
|
|
1511
1401
|
}
|
|
@@ -1523,7 +1413,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1523
1413
|
const pm_optional_keyword_parameter_node_t *cast = (const pm_optional_keyword_parameter_node_t *) node;
|
|
1524
1414
|
|
|
1525
1415
|
// Visit the value field
|
|
1526
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1416
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1527
1417
|
|
|
1528
1418
|
break;
|
|
1529
1419
|
}
|
|
@@ -1531,7 +1421,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1531
1421
|
const pm_optional_parameter_node_t *cast = (const pm_optional_parameter_node_t *) node;
|
|
1532
1422
|
|
|
1533
1423
|
// Visit the value field
|
|
1534
|
-
pm_visit_node((const pm_node_t *) cast->value, visitor, data);
|
|
1424
|
+
if (!pm_visit_node((const pm_node_t *) cast->value, visitor, data)) return false;
|
|
1535
1425
|
|
|
1536
1426
|
break;
|
|
1537
1427
|
}
|
|
@@ -1539,10 +1429,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1539
1429
|
const pm_or_node_t *cast = (const pm_or_node_t *) node;
|
|
1540
1430
|
|
|
1541
1431
|
// Visit the left field
|
|
1542
|
-
pm_visit_node((const pm_node_t *) cast->left, visitor, data);
|
|
1432
|
+
if (!pm_visit_node((const pm_node_t *) cast->left, visitor, data)) return false;
|
|
1543
1433
|
|
|
1544
1434
|
// Visit the right field
|
|
1545
|
-
pm_visit_node((const pm_node_t *) cast->right, visitor, data);
|
|
1435
|
+
if (!pm_visit_node((const pm_node_t *) cast->right, visitor, data)) return false;
|
|
1546
1436
|
|
|
1547
1437
|
break;
|
|
1548
1438
|
}
|
|
@@ -1552,41 +1442,35 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1552
1442
|
// Visit the requireds field
|
|
1553
1443
|
const pm_node_list_t *requireds = &cast->requireds;
|
|
1554
1444
|
for (size_t index = 0; index < requireds->size; index++) {
|
|
1555
|
-
pm_visit_node(requireds->nodes[index], visitor, data);
|
|
1445
|
+
if (!pm_visit_node(requireds->nodes[index], visitor, data)) return false;
|
|
1556
1446
|
}
|
|
1557
1447
|
|
|
1558
1448
|
// Visit the optionals field
|
|
1559
1449
|
const pm_node_list_t *optionals = &cast->optionals;
|
|
1560
1450
|
for (size_t index = 0; index < optionals->size; index++) {
|
|
1561
|
-
pm_visit_node(optionals->nodes[index], visitor, data);
|
|
1451
|
+
if (!pm_visit_node(optionals->nodes[index], visitor, data)) return false;
|
|
1562
1452
|
}
|
|
1563
1453
|
|
|
1564
1454
|
// Visit the rest field
|
|
1565
|
-
if (cast->rest != NULL)
|
|
1566
|
-
pm_visit_node((const pm_node_t *) cast->rest, visitor, data);
|
|
1567
|
-
}
|
|
1455
|
+
if (cast->rest != NULL && !pm_visit_node((const pm_node_t *) cast->rest, visitor, data)) return false;
|
|
1568
1456
|
|
|
1569
1457
|
// Visit the posts field
|
|
1570
1458
|
const pm_node_list_t *posts = &cast->posts;
|
|
1571
1459
|
for (size_t index = 0; index < posts->size; index++) {
|
|
1572
|
-
pm_visit_node(posts->nodes[index], visitor, data);
|
|
1460
|
+
if (!pm_visit_node(posts->nodes[index], visitor, data)) return false;
|
|
1573
1461
|
}
|
|
1574
1462
|
|
|
1575
1463
|
// Visit the keywords field
|
|
1576
1464
|
const pm_node_list_t *keywords = &cast->keywords;
|
|
1577
1465
|
for (size_t index = 0; index < keywords->size; index++) {
|
|
1578
|
-
pm_visit_node(keywords->nodes[index], visitor, data);
|
|
1466
|
+
if (!pm_visit_node(keywords->nodes[index], visitor, data)) return false;
|
|
1579
1467
|
}
|
|
1580
1468
|
|
|
1581
1469
|
// Visit the keyword_rest field
|
|
1582
|
-
if (cast->keyword_rest != NULL)
|
|
1583
|
-
pm_visit_node((const pm_node_t *) cast->keyword_rest, visitor, data);
|
|
1584
|
-
}
|
|
1470
|
+
if (cast->keyword_rest != NULL && !pm_visit_node((const pm_node_t *) cast->keyword_rest, visitor, data)) return false;
|
|
1585
1471
|
|
|
1586
1472
|
// Visit the block field
|
|
1587
|
-
if (cast->block != NULL)
|
|
1588
|
-
pm_visit_node((const pm_node_t *) cast->block, visitor, data);
|
|
1589
|
-
}
|
|
1473
|
+
if (cast->block != NULL && !pm_visit_node((const pm_node_t *) cast->block, visitor, data)) return false;
|
|
1590
1474
|
|
|
1591
1475
|
break;
|
|
1592
1476
|
}
|
|
@@ -1594,9 +1478,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1594
1478
|
const pm_parentheses_node_t *cast = (const pm_parentheses_node_t *) node;
|
|
1595
1479
|
|
|
1596
1480
|
// Visit the body field
|
|
1597
|
-
if (cast->body != NULL)
|
|
1598
|
-
pm_visit_node((const pm_node_t *) cast->body, visitor, data);
|
|
1599
|
-
}
|
|
1481
|
+
if (cast->body != NULL && !pm_visit_node((const pm_node_t *) cast->body, visitor, data)) return false;
|
|
1600
1482
|
|
|
1601
1483
|
break;
|
|
1602
1484
|
}
|
|
@@ -1604,7 +1486,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1604
1486
|
const pm_pinned_expression_node_t *cast = (const pm_pinned_expression_node_t *) node;
|
|
1605
1487
|
|
|
1606
1488
|
// Visit the expression field
|
|
1607
|
-
pm_visit_node((const pm_node_t *) cast->expression, visitor, data);
|
|
1489
|
+
if (!pm_visit_node((const pm_node_t *) cast->expression, visitor, data)) return false;
|
|
1608
1490
|
|
|
1609
1491
|
break;
|
|
1610
1492
|
}
|
|
@@ -1612,7 +1494,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1612
1494
|
const pm_pinned_variable_node_t *cast = (const pm_pinned_variable_node_t *) node;
|
|
1613
1495
|
|
|
1614
1496
|
// Visit the variable field
|
|
1615
|
-
pm_visit_node((const pm_node_t *) cast->variable, visitor, data);
|
|
1497
|
+
if (!pm_visit_node((const pm_node_t *) cast->variable, visitor, data)) return false;
|
|
1616
1498
|
|
|
1617
1499
|
break;
|
|
1618
1500
|
}
|
|
@@ -1620,9 +1502,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1620
1502
|
const pm_post_execution_node_t *cast = (const pm_post_execution_node_t *) node;
|
|
1621
1503
|
|
|
1622
1504
|
// Visit the statements field
|
|
1623
|
-
if (cast->statements != NULL)
|
|
1624
|
-
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
|
1625
|
-
}
|
|
1505
|
+
if (cast->statements != NULL && !pm_visit_node((const pm_node_t *) cast->statements, visitor, data)) return false;
|
|
1626
1506
|
|
|
1627
1507
|
break;
|
|
1628
1508
|
}
|
|
@@ -1630,9 +1510,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1630
1510
|
const pm_pre_execution_node_t *cast = (const pm_pre_execution_node_t *) node;
|
|
1631
1511
|
|
|
1632
1512
|
// Visit the statements field
|
|
1633
|
-
if (cast->statements != NULL)
|
|
1634
|
-
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
|
1635
|
-
}
|
|
1513
|
+
if (cast->statements != NULL && !pm_visit_node((const pm_node_t *) cast->statements, visitor, data)) return false;
|
|
1636
1514
|
|
|
1637
1515
|
break;
|
|
1638
1516
|
}
|
|
@@ -1640,7 +1518,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1640
1518
|
const pm_program_node_t *cast = (const pm_program_node_t *) node;
|
|
1641
1519
|
|
|
1642
1520
|
// Visit the statements field
|
|
1643
|
-
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
|
1521
|
+
if (!pm_visit_node((const pm_node_t *) cast->statements, visitor, data)) return false;
|
|
1644
1522
|
|
|
1645
1523
|
break;
|
|
1646
1524
|
}
|
|
@@ -1648,14 +1526,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1648
1526
|
const pm_range_node_t *cast = (const pm_range_node_t *) node;
|
|
1649
1527
|
|
|
1650
1528
|
// Visit the left field
|
|
1651
|
-
if (cast->left != NULL)
|
|
1652
|
-
pm_visit_node((const pm_node_t *) cast->left, visitor, data);
|
|
1653
|
-
}
|
|
1529
|
+
if (cast->left != NULL && !pm_visit_node((const pm_node_t *) cast->left, visitor, data)) return false;
|
|
1654
1530
|
|
|
1655
1531
|
// Visit the right field
|
|
1656
|
-
if (cast->right != NULL)
|
|
1657
|
-
pm_visit_node((const pm_node_t *) cast->right, visitor, data);
|
|
1658
|
-
}
|
|
1532
|
+
if (cast->right != NULL && !pm_visit_node((const pm_node_t *) cast->right, visitor, data)) return false;
|
|
1659
1533
|
|
|
1660
1534
|
break;
|
|
1661
1535
|
}
|
|
@@ -1673,10 +1547,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1673
1547
|
const pm_rescue_modifier_node_t *cast = (const pm_rescue_modifier_node_t *) node;
|
|
1674
1548
|
|
|
1675
1549
|
// Visit the expression field
|
|
1676
|
-
pm_visit_node((const pm_node_t *) cast->expression, visitor, data);
|
|
1550
|
+
if (!pm_visit_node((const pm_node_t *) cast->expression, visitor, data)) return false;
|
|
1677
1551
|
|
|
1678
1552
|
// Visit the rescue_expression field
|
|
1679
|
-
pm_visit_node((const pm_node_t *) cast->rescue_expression, visitor, data);
|
|
1553
|
+
if (!pm_visit_node((const pm_node_t *) cast->rescue_expression, visitor, data)) return false;
|
|
1680
1554
|
|
|
1681
1555
|
break;
|
|
1682
1556
|
}
|
|
@@ -1686,23 +1560,17 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1686
1560
|
// Visit the exceptions field
|
|
1687
1561
|
const pm_node_list_t *exceptions = &cast->exceptions;
|
|
1688
1562
|
for (size_t index = 0; index < exceptions->size; index++) {
|
|
1689
|
-
pm_visit_node(exceptions->nodes[index], visitor, data);
|
|
1563
|
+
if (!pm_visit_node(exceptions->nodes[index], visitor, data)) return false;
|
|
1690
1564
|
}
|
|
1691
1565
|
|
|
1692
1566
|
// Visit the reference field
|
|
1693
|
-
if (cast->reference != NULL)
|
|
1694
|
-
pm_visit_node((const pm_node_t *) cast->reference, visitor, data);
|
|
1695
|
-
}
|
|
1567
|
+
if (cast->reference != NULL && !pm_visit_node((const pm_node_t *) cast->reference, visitor, data)) return false;
|
|
1696
1568
|
|
|
1697
1569
|
// Visit the statements field
|
|
1698
|
-
if (cast->statements != NULL)
|
|
1699
|
-
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
|
1700
|
-
}
|
|
1570
|
+
if (cast->statements != NULL && !pm_visit_node((const pm_node_t *) cast->statements, visitor, data)) return false;
|
|
1701
1571
|
|
|
1702
1572
|
// Visit the subsequent field
|
|
1703
|
-
if (cast->subsequent != NULL)
|
|
1704
|
-
pm_visit_node((const pm_node_t *) cast->subsequent, visitor, data);
|
|
1705
|
-
}
|
|
1573
|
+
if (cast->subsequent != NULL && !pm_visit_node((const pm_node_t *) cast->subsequent, visitor, data)) return false;
|
|
1706
1574
|
|
|
1707
1575
|
break;
|
|
1708
1576
|
}
|
|
@@ -1714,9 +1582,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1714
1582
|
const pm_return_node_t *cast = (const pm_return_node_t *) node;
|
|
1715
1583
|
|
|
1716
1584
|
// Visit the arguments field
|
|
1717
|
-
if (cast->arguments != NULL)
|
|
1718
|
-
pm_visit_node((const pm_node_t *) cast->arguments, visitor, data);
|
|
1719
|
-
}
|
|
1585
|
+
if (cast->arguments != NULL && !pm_visit_node((const pm_node_t *) cast->arguments, visitor, data)) return false;
|
|
1720
1586
|
|
|
1721
1587
|
break;
|
|
1722
1588
|
}
|
|
@@ -1726,7 +1592,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1726
1592
|
const pm_shareable_constant_node_t *cast = (const pm_shareable_constant_node_t *) node;
|
|
1727
1593
|
|
|
1728
1594
|
// Visit the write field
|
|
1729
|
-
pm_visit_node((const pm_node_t *) cast->write, visitor, data);
|
|
1595
|
+
if (!pm_visit_node((const pm_node_t *) cast->write, visitor, data)) return false;
|
|
1730
1596
|
|
|
1731
1597
|
break;
|
|
1732
1598
|
}
|
|
@@ -1734,12 +1600,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1734
1600
|
const pm_singleton_class_node_t *cast = (const pm_singleton_class_node_t *) node;
|
|
1735
1601
|
|
|
1736
1602
|
// Visit the expression field
|
|
1737
|
-
pm_visit_node((const pm_node_t *) cast->expression, visitor, data);
|
|
1603
|
+
if (!pm_visit_node((const pm_node_t *) cast->expression, visitor, data)) return false;
|
|
1738
1604
|
|
|
1739
1605
|
// Visit the body field
|
|
1740
|
-
if (cast->body != NULL)
|
|
1741
|
-
pm_visit_node((const pm_node_t *) cast->body, visitor, data);
|
|
1742
|
-
}
|
|
1606
|
+
if (cast->body != NULL && !pm_visit_node((const pm_node_t *) cast->body, visitor, data)) return false;
|
|
1743
1607
|
|
|
1744
1608
|
break;
|
|
1745
1609
|
}
|
|
@@ -1753,9 +1617,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1753
1617
|
const pm_splat_node_t *cast = (const pm_splat_node_t *) node;
|
|
1754
1618
|
|
|
1755
1619
|
// Visit the expression field
|
|
1756
|
-
if (cast->expression != NULL)
|
|
1757
|
-
pm_visit_node((const pm_node_t *) cast->expression, visitor, data);
|
|
1758
|
-
}
|
|
1620
|
+
if (cast->expression != NULL && !pm_visit_node((const pm_node_t *) cast->expression, visitor, data)) return false;
|
|
1759
1621
|
|
|
1760
1622
|
break;
|
|
1761
1623
|
}
|
|
@@ -1765,7 +1627,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1765
1627
|
// Visit the body field
|
|
1766
1628
|
const pm_node_list_t *body = &cast->body;
|
|
1767
1629
|
for (size_t index = 0; index < body->size; index++) {
|
|
1768
|
-
pm_visit_node(body->nodes[index], visitor, data);
|
|
1630
|
+
if (!pm_visit_node(body->nodes[index], visitor, data)) return false;
|
|
1769
1631
|
}
|
|
1770
1632
|
|
|
1771
1633
|
break;
|
|
@@ -1776,14 +1638,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1776
1638
|
const pm_super_node_t *cast = (const pm_super_node_t *) node;
|
|
1777
1639
|
|
|
1778
1640
|
// Visit the arguments field
|
|
1779
|
-
if (cast->arguments != NULL)
|
|
1780
|
-
pm_visit_node((const pm_node_t *) cast->arguments, visitor, data);
|
|
1781
|
-
}
|
|
1641
|
+
if (cast->arguments != NULL && !pm_visit_node((const pm_node_t *) cast->arguments, visitor, data)) return false;
|
|
1782
1642
|
|
|
1783
1643
|
// Visit the block field
|
|
1784
|
-
if (cast->block != NULL)
|
|
1785
|
-
pm_visit_node((const pm_node_t *) cast->block, visitor, data);
|
|
1786
|
-
}
|
|
1644
|
+
if (cast->block != NULL && !pm_visit_node((const pm_node_t *) cast->block, visitor, data)) return false;
|
|
1787
1645
|
|
|
1788
1646
|
break;
|
|
1789
1647
|
}
|
|
@@ -1797,7 +1655,7 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1797
1655
|
// Visit the names field
|
|
1798
1656
|
const pm_node_list_t *names = &cast->names;
|
|
1799
1657
|
for (size_t index = 0; index < names->size; index++) {
|
|
1800
|
-
pm_visit_node(names->nodes[index], visitor, data);
|
|
1658
|
+
if (!pm_visit_node(names->nodes[index], visitor, data)) return false;
|
|
1801
1659
|
}
|
|
1802
1660
|
|
|
1803
1661
|
break;
|
|
@@ -1806,17 +1664,13 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1806
1664
|
const pm_unless_node_t *cast = (const pm_unless_node_t *) node;
|
|
1807
1665
|
|
|
1808
1666
|
// Visit the predicate field
|
|
1809
|
-
pm_visit_node((const pm_node_t *) cast->predicate, visitor, data);
|
|
1667
|
+
if (!pm_visit_node((const pm_node_t *) cast->predicate, visitor, data)) return false;
|
|
1810
1668
|
|
|
1811
1669
|
// Visit the statements field
|
|
1812
|
-
if (cast->statements != NULL)
|
|
1813
|
-
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
|
1814
|
-
}
|
|
1670
|
+
if (cast->statements != NULL && !pm_visit_node((const pm_node_t *) cast->statements, visitor, data)) return false;
|
|
1815
1671
|
|
|
1816
1672
|
// Visit the else_clause field
|
|
1817
|
-
if (cast->else_clause != NULL)
|
|
1818
|
-
pm_visit_node((const pm_node_t *) cast->else_clause, visitor, data);
|
|
1819
|
-
}
|
|
1673
|
+
if (cast->else_clause != NULL && !pm_visit_node((const pm_node_t *) cast->else_clause, visitor, data)) return false;
|
|
1820
1674
|
|
|
1821
1675
|
break;
|
|
1822
1676
|
}
|
|
@@ -1824,12 +1678,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1824
1678
|
const pm_until_node_t *cast = (const pm_until_node_t *) node;
|
|
1825
1679
|
|
|
1826
1680
|
// Visit the predicate field
|
|
1827
|
-
pm_visit_node((const pm_node_t *) cast->predicate, visitor, data);
|
|
1681
|
+
if (!pm_visit_node((const pm_node_t *) cast->predicate, visitor, data)) return false;
|
|
1828
1682
|
|
|
1829
1683
|
// Visit the statements field
|
|
1830
|
-
if (cast->statements != NULL)
|
|
1831
|
-
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
|
1832
|
-
}
|
|
1684
|
+
if (cast->statements != NULL && !pm_visit_node((const pm_node_t *) cast->statements, visitor, data)) return false;
|
|
1833
1685
|
|
|
1834
1686
|
break;
|
|
1835
1687
|
}
|
|
@@ -1839,13 +1691,11 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1839
1691
|
// Visit the conditions field
|
|
1840
1692
|
const pm_node_list_t *conditions = &cast->conditions;
|
|
1841
1693
|
for (size_t index = 0; index < conditions->size; index++) {
|
|
1842
|
-
pm_visit_node(conditions->nodes[index], visitor, data);
|
|
1694
|
+
if (!pm_visit_node(conditions->nodes[index], visitor, data)) return false;
|
|
1843
1695
|
}
|
|
1844
1696
|
|
|
1845
1697
|
// Visit the statements field
|
|
1846
|
-
if (cast->statements != NULL)
|
|
1847
|
-
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
|
1848
|
-
}
|
|
1698
|
+
if (cast->statements != NULL && !pm_visit_node((const pm_node_t *) cast->statements, visitor, data)) return false;
|
|
1849
1699
|
|
|
1850
1700
|
break;
|
|
1851
1701
|
}
|
|
@@ -1853,12 +1703,10 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1853
1703
|
const pm_while_node_t *cast = (const pm_while_node_t *) node;
|
|
1854
1704
|
|
|
1855
1705
|
// Visit the predicate field
|
|
1856
|
-
pm_visit_node((const pm_node_t *) cast->predicate, visitor, data);
|
|
1706
|
+
if (!pm_visit_node((const pm_node_t *) cast->predicate, visitor, data)) return false;
|
|
1857
1707
|
|
|
1858
1708
|
// Visit the statements field
|
|
1859
|
-
if (cast->statements != NULL)
|
|
1860
|
-
pm_visit_node((const pm_node_t *) cast->statements, visitor, data);
|
|
1861
|
-
}
|
|
1709
|
+
if (cast->statements != NULL && !pm_visit_node((const pm_node_t *) cast->statements, visitor, data)) return false;
|
|
1862
1710
|
|
|
1863
1711
|
break;
|
|
1864
1712
|
}
|
|
@@ -1868,15 +1716,15 @@ pm_visit_child_nodes(const pm_node_t *node, bool (*visitor)(const pm_node_t *nod
|
|
|
1868
1716
|
const pm_yield_node_t *cast = (const pm_yield_node_t *) node;
|
|
1869
1717
|
|
|
1870
1718
|
// Visit the arguments field
|
|
1871
|
-
if (cast->arguments != NULL)
|
|
1872
|
-
pm_visit_node((const pm_node_t *) cast->arguments, visitor, data);
|
|
1873
|
-
}
|
|
1719
|
+
if (cast->arguments != NULL && !pm_visit_node((const pm_node_t *) cast->arguments, visitor, data)) return false;
|
|
1874
1720
|
|
|
1875
1721
|
break;
|
|
1876
1722
|
}
|
|
1877
1723
|
case PM_SCOPE_NODE:
|
|
1878
1724
|
break;
|
|
1879
1725
|
}
|
|
1726
|
+
|
|
1727
|
+
return true;
|
|
1880
1728
|
}
|
|
1881
1729
|
|
|
1882
1730
|
/**
|