yarp 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/ext/yarp/api_node.c CHANGED
@@ -17,6 +17,7 @@ extern VALUE rb_cYARPLocation;
17
17
  static VALUE rb_cYARPAliasNode;
18
18
  static VALUE rb_cYARPAlternationPatternNode;
19
19
  static VALUE rb_cYARPAndNode;
20
+ static VALUE rb_cYARPAndWriteNode;
20
21
  static VALUE rb_cYARPArgumentsNode;
21
22
  static VALUE rb_cYARPArrayNode;
22
23
  static VALUE rb_cYARPArrayPatternNode;
@@ -36,18 +37,9 @@ static VALUE rb_cYARPCallOperatorWriteNode;
36
37
  static VALUE rb_cYARPCapturePatternNode;
37
38
  static VALUE rb_cYARPCaseNode;
38
39
  static VALUE rb_cYARPClassNode;
39
- static VALUE rb_cYARPClassVariableOperatorAndWriteNode;
40
- static VALUE rb_cYARPClassVariableOperatorOrWriteNode;
41
- static VALUE rb_cYARPClassVariableOperatorWriteNode;
42
40
  static VALUE rb_cYARPClassVariableReadNode;
43
41
  static VALUE rb_cYARPClassVariableWriteNode;
44
- static VALUE rb_cYARPConstantOperatorAndWriteNode;
45
- static VALUE rb_cYARPConstantOperatorOrWriteNode;
46
- static VALUE rb_cYARPConstantOperatorWriteNode;
47
42
  static VALUE rb_cYARPConstantPathNode;
48
- static VALUE rb_cYARPConstantPathOperatorAndWriteNode;
49
- static VALUE rb_cYARPConstantPathOperatorOrWriteNode;
50
- static VALUE rb_cYARPConstantPathOperatorWriteNode;
51
43
  static VALUE rb_cYARPConstantPathWriteNode;
52
44
  static VALUE rb_cYARPConstantReadNode;
53
45
  static VALUE rb_cYARPConstantWriteNode;
@@ -65,9 +57,6 @@ static VALUE rb_cYARPForNode;
65
57
  static VALUE rb_cYARPForwardingArgumentsNode;
66
58
  static VALUE rb_cYARPForwardingParameterNode;
67
59
  static VALUE rb_cYARPForwardingSuperNode;
68
- static VALUE rb_cYARPGlobalVariableOperatorAndWriteNode;
69
- static VALUE rb_cYARPGlobalVariableOperatorOrWriteNode;
70
- static VALUE rb_cYARPGlobalVariableOperatorWriteNode;
71
60
  static VALUE rb_cYARPGlobalVariableReadNode;
72
61
  static VALUE rb_cYARPGlobalVariableWriteNode;
73
62
  static VALUE rb_cYARPHashNode;
@@ -75,9 +64,6 @@ static VALUE rb_cYARPHashPatternNode;
75
64
  static VALUE rb_cYARPIfNode;
76
65
  static VALUE rb_cYARPImaginaryNode;
77
66
  static VALUE rb_cYARPInNode;
78
- static VALUE rb_cYARPInstanceVariableOperatorAndWriteNode;
79
- static VALUE rb_cYARPInstanceVariableOperatorOrWriteNode;
80
- static VALUE rb_cYARPInstanceVariableOperatorWriteNode;
81
67
  static VALUE rb_cYARPInstanceVariableReadNode;
82
68
  static VALUE rb_cYARPInstanceVariableWriteNode;
83
69
  static VALUE rb_cYARPIntegerNode;
@@ -89,9 +75,6 @@ static VALUE rb_cYARPKeywordHashNode;
89
75
  static VALUE rb_cYARPKeywordParameterNode;
90
76
  static VALUE rb_cYARPKeywordRestParameterNode;
91
77
  static VALUE rb_cYARPLambdaNode;
92
- static VALUE rb_cYARPLocalVariableOperatorAndWriteNode;
93
- static VALUE rb_cYARPLocalVariableOperatorOrWriteNode;
94
- static VALUE rb_cYARPLocalVariableOperatorWriteNode;
95
78
  static VALUE rb_cYARPLocalVariableReadNode;
96
79
  static VALUE rb_cYARPLocalVariableWriteNode;
97
80
  static VALUE rb_cYARPMatchPredicateNode;
@@ -103,8 +86,10 @@ static VALUE rb_cYARPNextNode;
103
86
  static VALUE rb_cYARPNilNode;
104
87
  static VALUE rb_cYARPNoKeywordsParameterNode;
105
88
  static VALUE rb_cYARPNumberedReferenceReadNode;
89
+ static VALUE rb_cYARPOperatorWriteNode;
106
90
  static VALUE rb_cYARPOptionalParameterNode;
107
91
  static VALUE rb_cYARPOrNode;
92
+ static VALUE rb_cYARPOrWriteNode;
108
93
  static VALUE rb_cYARPParametersNode;
109
94
  static VALUE rb_cYARPParenthesesNode;
110
95
  static VALUE rb_cYARPPinnedExpressionNode;
@@ -258,6 +243,13 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
258
243
  yp_node_stack_push(&node_stack, (yp_node_t *) cast->right);
259
244
  break;
260
245
  }
246
+ #line 111 "api_node.c.erb"
247
+ case YP_NODE_AND_WRITE_NODE: {
248
+ yp_and_write_node_t *cast = (yp_and_write_node_t *) node;
249
+ yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
250
+ yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
251
+ break;
252
+ }
261
253
  #line 111 "api_node.c.erb"
262
254
  case YP_NODE_ARGUMENTS_NODE: {
263
255
  yp_arguments_node_t *cast = (yp_arguments_node_t *) node;
@@ -319,7 +311,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
319
311
  case YP_NODE_BLOCK_NODE: {
320
312
  yp_block_node_t *cast = (yp_block_node_t *) node;
321
313
  yp_node_stack_push(&node_stack, (yp_node_t *) cast->parameters);
322
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
314
+ yp_node_stack_push(&node_stack, (yp_node_t *) cast->body);
323
315
  break;
324
316
  }
325
317
  #line 111 "api_node.c.erb"
@@ -385,25 +377,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
385
377
  yp_class_node_t *cast = (yp_class_node_t *) node;
386
378
  yp_node_stack_push(&node_stack, (yp_node_t *) cast->constant_path);
387
379
  yp_node_stack_push(&node_stack, (yp_node_t *) cast->superclass);
388
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
389
- break;
390
- }
391
- #line 111 "api_node.c.erb"
392
- case YP_NODE_CLASS_VARIABLE_OPERATOR_AND_WRITE_NODE: {
393
- yp_class_variable_operator_and_write_node_t *cast = (yp_class_variable_operator_and_write_node_t *) node;
394
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
395
- break;
396
- }
397
- #line 111 "api_node.c.erb"
398
- case YP_NODE_CLASS_VARIABLE_OPERATOR_OR_WRITE_NODE: {
399
- yp_class_variable_operator_or_write_node_t *cast = (yp_class_variable_operator_or_write_node_t *) node;
400
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
401
- break;
402
- }
403
- #line 111 "api_node.c.erb"
404
- case YP_NODE_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
405
- yp_class_variable_operator_write_node_t *cast = (yp_class_variable_operator_write_node_t *) node;
406
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
380
+ yp_node_stack_push(&node_stack, (yp_node_t *) cast->body);
407
381
  break;
408
382
  }
409
383
  #line 111 "api_node.c.erb"
@@ -412,24 +386,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
412
386
  yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
413
387
  break;
414
388
  }
415
- #line 111 "api_node.c.erb"
416
- case YP_NODE_CONSTANT_OPERATOR_AND_WRITE_NODE: {
417
- yp_constant_operator_and_write_node_t *cast = (yp_constant_operator_and_write_node_t *) node;
418
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
419
- break;
420
- }
421
- #line 111 "api_node.c.erb"
422
- case YP_NODE_CONSTANT_OPERATOR_OR_WRITE_NODE: {
423
- yp_constant_operator_or_write_node_t *cast = (yp_constant_operator_or_write_node_t *) node;
424
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
425
- break;
426
- }
427
- #line 111 "api_node.c.erb"
428
- case YP_NODE_CONSTANT_OPERATOR_WRITE_NODE: {
429
- yp_constant_operator_write_node_t *cast = (yp_constant_operator_write_node_t *) node;
430
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
431
- break;
432
- }
433
389
  #line 111 "api_node.c.erb"
434
390
  case YP_NODE_CONSTANT_PATH_NODE: {
435
391
  yp_constant_path_node_t *cast = (yp_constant_path_node_t *) node;
@@ -437,27 +393,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
437
393
  yp_node_stack_push(&node_stack, (yp_node_t *) cast->child);
438
394
  break;
439
395
  }
440
- #line 111 "api_node.c.erb"
441
- case YP_NODE_CONSTANT_PATH_OPERATOR_AND_WRITE_NODE: {
442
- yp_constant_path_operator_and_write_node_t *cast = (yp_constant_path_operator_and_write_node_t *) node;
443
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
444
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
445
- break;
446
- }
447
- #line 111 "api_node.c.erb"
448
- case YP_NODE_CONSTANT_PATH_OPERATOR_OR_WRITE_NODE: {
449
- yp_constant_path_operator_or_write_node_t *cast = (yp_constant_path_operator_or_write_node_t *) node;
450
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
451
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
452
- break;
453
- }
454
- #line 111 "api_node.c.erb"
455
- case YP_NODE_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
456
- yp_constant_path_operator_write_node_t *cast = (yp_constant_path_operator_write_node_t *) node;
457
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
458
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
459
- break;
460
- }
461
396
  #line 111 "api_node.c.erb"
462
397
  case YP_NODE_CONSTANT_PATH_WRITE_NODE: {
463
398
  yp_constant_path_write_node_t *cast = (yp_constant_path_write_node_t *) node;
@@ -476,7 +411,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
476
411
  yp_def_node_t *cast = (yp_def_node_t *) node;
477
412
  yp_node_stack_push(&node_stack, (yp_node_t *) cast->receiver);
478
413
  yp_node_stack_push(&node_stack, (yp_node_t *) cast->parameters);
479
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
414
+ yp_node_stack_push(&node_stack, (yp_node_t *) cast->body);
480
415
  break;
481
416
  }
482
417
  #line 111 "api_node.c.erb"
@@ -541,24 +476,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
541
476
  yp_node_stack_push(&node_stack, (yp_node_t *) cast->block);
542
477
  break;
543
478
  }
544
- #line 111 "api_node.c.erb"
545
- case YP_NODE_GLOBAL_VARIABLE_OPERATOR_AND_WRITE_NODE: {
546
- yp_global_variable_operator_and_write_node_t *cast = (yp_global_variable_operator_and_write_node_t *) node;
547
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
548
- break;
549
- }
550
- #line 111 "api_node.c.erb"
551
- case YP_NODE_GLOBAL_VARIABLE_OPERATOR_OR_WRITE_NODE: {
552
- yp_global_variable_operator_or_write_node_t *cast = (yp_global_variable_operator_or_write_node_t *) node;
553
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
554
- break;
555
- }
556
- #line 111 "api_node.c.erb"
557
- case YP_NODE_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
558
- yp_global_variable_operator_write_node_t *cast = (yp_global_variable_operator_write_node_t *) node;
559
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
560
- break;
561
- }
562
479
  #line 111 "api_node.c.erb"
563
480
  case YP_NODE_GLOBAL_VARIABLE_WRITE_NODE: {
564
481
  yp_global_variable_write_node_t *cast = (yp_global_variable_write_node_t *) node;
@@ -604,24 +521,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
604
521
  yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
605
522
  break;
606
523
  }
607
- #line 111 "api_node.c.erb"
608
- case YP_NODE_INSTANCE_VARIABLE_OPERATOR_AND_WRITE_NODE: {
609
- yp_instance_variable_operator_and_write_node_t *cast = (yp_instance_variable_operator_and_write_node_t *) node;
610
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
611
- break;
612
- }
613
- #line 111 "api_node.c.erb"
614
- case YP_NODE_INSTANCE_VARIABLE_OPERATOR_OR_WRITE_NODE: {
615
- yp_instance_variable_operator_or_write_node_t *cast = (yp_instance_variable_operator_or_write_node_t *) node;
616
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
617
- break;
618
- }
619
- #line 111 "api_node.c.erb"
620
- case YP_NODE_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
621
- yp_instance_variable_operator_write_node_t *cast = (yp_instance_variable_operator_write_node_t *) node;
622
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
623
- break;
624
- }
625
524
  #line 111 "api_node.c.erb"
626
525
  case YP_NODE_INSTANCE_VARIABLE_WRITE_NODE: {
627
526
  yp_instance_variable_write_node_t *cast = (yp_instance_variable_write_node_t *) node;
@@ -678,25 +577,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
678
577
  case YP_NODE_LAMBDA_NODE: {
679
578
  yp_lambda_node_t *cast = (yp_lambda_node_t *) node;
680
579
  yp_node_stack_push(&node_stack, (yp_node_t *) cast->parameters);
681
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
682
- break;
683
- }
684
- #line 111 "api_node.c.erb"
685
- case YP_NODE_LOCAL_VARIABLE_OPERATOR_AND_WRITE_NODE: {
686
- yp_local_variable_operator_and_write_node_t *cast = (yp_local_variable_operator_and_write_node_t *) node;
687
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
688
- break;
689
- }
690
- #line 111 "api_node.c.erb"
691
- case YP_NODE_LOCAL_VARIABLE_OPERATOR_OR_WRITE_NODE: {
692
- yp_local_variable_operator_or_write_node_t *cast = (yp_local_variable_operator_or_write_node_t *) node;
693
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
694
- break;
695
- }
696
- #line 111 "api_node.c.erb"
697
- case YP_NODE_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
698
- yp_local_variable_operator_write_node_t *cast = (yp_local_variable_operator_write_node_t *) node;
699
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
580
+ yp_node_stack_push(&node_stack, (yp_node_t *) cast->body);
700
581
  break;
701
582
  }
702
583
  #line 111 "api_node.c.erb"
@@ -723,7 +604,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
723
604
  case YP_NODE_MODULE_NODE: {
724
605
  yp_module_node_t *cast = (yp_module_node_t *) node;
725
606
  yp_node_stack_push(&node_stack, (yp_node_t *) cast->constant_path);
726
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
607
+ yp_node_stack_push(&node_stack, (yp_node_t *) cast->body);
727
608
  break;
728
609
  }
729
610
  #line 111 "api_node.c.erb"
@@ -741,6 +622,13 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
741
622
  yp_node_stack_push(&node_stack, (yp_node_t *) cast->arguments);
742
623
  break;
743
624
  }
625
+ #line 111 "api_node.c.erb"
626
+ case YP_NODE_OPERATOR_WRITE_NODE: {
627
+ yp_operator_write_node_t *cast = (yp_operator_write_node_t *) node;
628
+ yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
629
+ yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
630
+ break;
631
+ }
744
632
  #line 111 "api_node.c.erb"
745
633
  case YP_NODE_OPTIONAL_PARAMETER_NODE: {
746
634
  yp_optional_parameter_node_t *cast = (yp_optional_parameter_node_t *) node;
@@ -754,6 +642,13 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
754
642
  yp_node_stack_push(&node_stack, (yp_node_t *) cast->right);
755
643
  break;
756
644
  }
645
+ #line 111 "api_node.c.erb"
646
+ case YP_NODE_OR_WRITE_NODE: {
647
+ yp_or_write_node_t *cast = (yp_or_write_node_t *) node;
648
+ yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
649
+ yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
650
+ break;
651
+ }
757
652
  #line 111 "api_node.c.erb"
758
653
  case YP_NODE_PARAMETERS_NODE: {
759
654
  yp_parameters_node_t *cast = (yp_parameters_node_t *) node;
@@ -777,7 +672,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
777
672
  #line 111 "api_node.c.erb"
778
673
  case YP_NODE_PARENTHESES_NODE: {
779
674
  yp_parentheses_node_t *cast = (yp_parentheses_node_t *) node;
780
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
675
+ yp_node_stack_push(&node_stack, (yp_node_t *) cast->body);
781
676
  break;
782
677
  }
783
678
  #line 111 "api_node.c.erb"
@@ -859,7 +754,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
859
754
  case YP_NODE_SINGLETON_CLASS_NODE: {
860
755
  yp_singleton_class_node_t *cast = (yp_singleton_class_node_t *) node;
861
756
  yp_node_stack_push(&node_stack, (yp_node_t *) cast->expression);
862
- yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
757
+ yp_node_stack_push(&node_stack, (yp_node_t *) cast->body);
863
758
  break;
864
759
  }
865
760
  #line 111 "api_node.c.erb"
@@ -1003,13 +898,33 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
1003
898
  rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPAndNode));
1004
899
  break;
1005
900
  }
901
+ #line 137 "api_node.c.erb"
902
+ case YP_NODE_AND_WRITE_NODE: {
903
+ yp_and_write_node_t *cast = (yp_and_write_node_t *) node;
904
+ VALUE argv[4];
905
+
906
+ // target
907
+ argv[0] = rb_ary_pop(value_stack);
908
+
909
+ // value
910
+ argv[1] = rb_ary_pop(value_stack);
911
+
912
+ // operator_loc
913
+ argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
914
+
915
+ // location
916
+ argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
917
+
918
+ rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPAndWriteNode));
919
+ break;
920
+ }
1006
921
  #line 137 "api_node.c.erb"
1007
922
  case YP_NODE_ARGUMENTS_NODE: {
1008
923
  yp_arguments_node_t *cast = (yp_arguments_node_t *) node;
1009
924
  VALUE argv[2];
1010
925
 
1011
926
  // arguments
1012
- argv[0] = rb_ary_new();
927
+ argv[0] = rb_ary_new_capa(cast->arguments.size);
1013
928
  for (size_t index = 0; index < cast->arguments.size; index++) {
1014
929
  rb_ary_push(argv[0], rb_ary_pop(value_stack));
1015
930
  }
@@ -1026,7 +941,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
1026
941
  VALUE argv[4];
1027
942
 
1028
943
  // elements
1029
- argv[0] = rb_ary_new();
944
+ argv[0] = rb_ary_new_capa(cast->elements.size);
1030
945
  for (size_t index = 0; index < cast->elements.size; index++) {
1031
946
  rb_ary_push(argv[0], rb_ary_pop(value_stack));
1032
947
  }
@@ -1052,7 +967,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
1052
967
  argv[0] = rb_ary_pop(value_stack);
1053
968
 
1054
969
  // requireds
1055
- argv[1] = rb_ary_new();
970
+ argv[1] = rb_ary_new_capa(cast->requireds.size);
1056
971
  for (size_t index = 0; index < cast->requireds.size; index++) {
1057
972
  rb_ary_push(argv[1], rb_ary_pop(value_stack));
1058
973
  }
@@ -1061,7 +976,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
1061
976
  argv[2] = rb_ary_pop(value_stack);
1062
977
 
1063
978
  // posts
1064
- argv[3] = rb_ary_new();
979
+ argv[3] = rb_ary_new_capa(cast->posts.size);
1065
980
  for (size_t index = 0; index < cast->posts.size; index++) {
1066
981
  rb_ary_push(argv[3], rb_ary_pop(value_stack));
1067
982
  }
@@ -1177,7 +1092,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
1177
1092
  VALUE argv[6];
1178
1093
 
1179
1094
  // locals
1180
- argv[0] = rb_ary_new();
1095
+ argv[0] = rb_ary_new_capa(cast->locals.size);
1181
1096
  for (size_t index = 0; index < cast->locals.size; index++) {
1182
1097
  rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
1183
1098
  }
@@ -1185,7 +1100,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
1185
1100
  // parameters
1186
1101
  argv[1] = rb_ary_pop(value_stack);
1187
1102
 
1188
- // statements
1103
+ // body
1189
1104
  argv[2] = rb_ary_pop(value_stack);
1190
1105
 
1191
1106
  // opening_loc
@@ -1226,7 +1141,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
1226
1141
  argv[0] = rb_ary_pop(value_stack);
1227
1142
 
1228
1143
  // locals
1229
- argv[1] = rb_ary_new();
1144
+ argv[1] = rb_ary_new_capa(cast->locals.size);
1230
1145
  for (size_t index = 0; index < cast->locals.size; index++) {
1231
1146
  yp_location_t location = cast->locals.locations[index];
1232
1147
  rb_ary_push(argv[1], yp_location_new(parser, location.start, location.end, source));
@@ -1391,7 +1306,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
1391
1306
  argv[0] = rb_ary_pop(value_stack);
1392
1307
 
1393
1308
  // conditions
1394
- argv[1] = rb_ary_new();
1309
+ argv[1] = rb_ary_new_capa(cast->conditions.size);
1395
1310
  for (size_t index = 0; index < cast->conditions.size; index++) {
1396
1311
  rb_ary_push(argv[1], rb_ary_pop(value_stack));
1397
1312
  }
@@ -1417,7 +1332,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
1417
1332
  VALUE argv[8];
1418
1333
 
1419
1334
  // locals
1420
- argv[0] = rb_ary_new();
1335
+ argv[0] = rb_ary_new_capa(cast->locals.size);
1421
1336
  for (size_t index = 0; index < cast->locals.size; index++) {
1422
1337
  rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
1423
1338
  }
@@ -1434,7 +1349,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
1434
1349
  // superclass
1435
1350
  argv[4] = rb_ary_pop(value_stack);
1436
1351
 
1437
- // statements
1352
+ // body
1438
1353
  argv[5] = rb_ary_pop(value_stack);
1439
1354
 
1440
1355
  // end_keyword_loc
@@ -1446,69 +1361,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
1446
1361
  rb_ary_push(value_stack, rb_class_new_instance(8, argv, rb_cYARPClassNode));
1447
1362
  break;
1448
1363
  }
1449
- #line 137 "api_node.c.erb"
1450
- case YP_NODE_CLASS_VARIABLE_OPERATOR_AND_WRITE_NODE: {
1451
- yp_class_variable_operator_and_write_node_t *cast = (yp_class_variable_operator_and_write_node_t *) node;
1452
- VALUE argv[4];
1453
-
1454
- // name_loc
1455
- argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
1456
-
1457
- // operator_loc
1458
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
1459
-
1460
- // value
1461
- argv[2] = rb_ary_pop(value_stack);
1462
-
1463
- // location
1464
- argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
1465
-
1466
- rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPClassVariableOperatorAndWriteNode));
1467
- break;
1468
- }
1469
- #line 137 "api_node.c.erb"
1470
- case YP_NODE_CLASS_VARIABLE_OPERATOR_OR_WRITE_NODE: {
1471
- yp_class_variable_operator_or_write_node_t *cast = (yp_class_variable_operator_or_write_node_t *) node;
1472
- VALUE argv[4];
1473
-
1474
- // name_loc
1475
- argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
1476
-
1477
- // operator_loc
1478
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
1479
-
1480
- // value
1481
- argv[2] = rb_ary_pop(value_stack);
1482
-
1483
- // location
1484
- argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
1485
-
1486
- rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPClassVariableOperatorOrWriteNode));
1487
- break;
1488
- }
1489
- #line 137 "api_node.c.erb"
1490
- case YP_NODE_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
1491
- yp_class_variable_operator_write_node_t *cast = (yp_class_variable_operator_write_node_t *) node;
1492
- VALUE argv[5];
1493
-
1494
- // name_loc
1495
- argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
1496
-
1497
- // operator_loc
1498
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
1499
-
1500
- // value
1501
- argv[2] = rb_ary_pop(value_stack);
1502
-
1503
- // operator
1504
- argv[3] = rb_id2sym(constants[cast->operator - 1]);
1505
-
1506
- // location
1507
- argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
1508
-
1509
- rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPClassVariableOperatorWriteNode));
1510
- break;
1511
- }
1512
1364
  #line 137 "api_node.c.erb"
1513
1365
  case YP_NODE_CLASS_VARIABLE_READ_NODE: {
1514
1366
  VALUE argv[1];
@@ -1539,69 +1391,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
1539
1391
  rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPClassVariableWriteNode));
1540
1392
  break;
1541
1393
  }
1542
- #line 137 "api_node.c.erb"
1543
- case YP_NODE_CONSTANT_OPERATOR_AND_WRITE_NODE: {
1544
- yp_constant_operator_and_write_node_t *cast = (yp_constant_operator_and_write_node_t *) node;
1545
- VALUE argv[4];
1546
-
1547
- // name_loc
1548
- argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
1549
-
1550
- // operator_loc
1551
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
1552
-
1553
- // value
1554
- argv[2] = rb_ary_pop(value_stack);
1555
-
1556
- // location
1557
- argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
1558
-
1559
- rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantOperatorAndWriteNode));
1560
- break;
1561
- }
1562
- #line 137 "api_node.c.erb"
1563
- case YP_NODE_CONSTANT_OPERATOR_OR_WRITE_NODE: {
1564
- yp_constant_operator_or_write_node_t *cast = (yp_constant_operator_or_write_node_t *) node;
1565
- VALUE argv[4];
1566
-
1567
- // name_loc
1568
- argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
1569
-
1570
- // operator_loc
1571
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
1572
-
1573
- // value
1574
- argv[2] = rb_ary_pop(value_stack);
1575
-
1576
- // location
1577
- argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
1578
-
1579
- rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantOperatorOrWriteNode));
1580
- break;
1581
- }
1582
- #line 137 "api_node.c.erb"
1583
- case YP_NODE_CONSTANT_OPERATOR_WRITE_NODE: {
1584
- yp_constant_operator_write_node_t *cast = (yp_constant_operator_write_node_t *) node;
1585
- VALUE argv[5];
1586
-
1587
- // name_loc
1588
- argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
1589
-
1590
- // operator_loc
1591
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
1592
-
1593
- // value
1594
- argv[2] = rb_ary_pop(value_stack);
1595
-
1596
- // operator
1597
- argv[3] = rb_id2sym(constants[cast->operator - 1]);
1598
-
1599
- // location
1600
- argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
1601
-
1602
- rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPConstantOperatorWriteNode));
1603
- break;
1604
- }
1605
1394
  #line 137 "api_node.c.erb"
1606
1395
  case YP_NODE_CONSTANT_PATH_NODE: {
1607
1396
  yp_constant_path_node_t *cast = (yp_constant_path_node_t *) node;
@@ -1622,69 +1411,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
1622
1411
  rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantPathNode));
1623
1412
  break;
1624
1413
  }
1625
- #line 137 "api_node.c.erb"
1626
- case YP_NODE_CONSTANT_PATH_OPERATOR_AND_WRITE_NODE: {
1627
- yp_constant_path_operator_and_write_node_t *cast = (yp_constant_path_operator_and_write_node_t *) node;
1628
- VALUE argv[4];
1629
-
1630
- // target
1631
- argv[0] = rb_ary_pop(value_stack);
1632
-
1633
- // operator_loc
1634
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
1635
-
1636
- // value
1637
- argv[2] = rb_ary_pop(value_stack);
1638
-
1639
- // location
1640
- argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
1641
-
1642
- rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantPathOperatorAndWriteNode));
1643
- break;
1644
- }
1645
- #line 137 "api_node.c.erb"
1646
- case YP_NODE_CONSTANT_PATH_OPERATOR_OR_WRITE_NODE: {
1647
- yp_constant_path_operator_or_write_node_t *cast = (yp_constant_path_operator_or_write_node_t *) node;
1648
- VALUE argv[4];
1649
-
1650
- // target
1651
- argv[0] = rb_ary_pop(value_stack);
1652
-
1653
- // operator_loc
1654
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
1655
-
1656
- // value
1657
- argv[2] = rb_ary_pop(value_stack);
1658
-
1659
- // location
1660
- argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
1661
-
1662
- rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantPathOperatorOrWriteNode));
1663
- break;
1664
- }
1665
- #line 137 "api_node.c.erb"
1666
- case YP_NODE_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
1667
- yp_constant_path_operator_write_node_t *cast = (yp_constant_path_operator_write_node_t *) node;
1668
- VALUE argv[5];
1669
-
1670
- // target
1671
- argv[0] = rb_ary_pop(value_stack);
1672
-
1673
- // operator_loc
1674
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
1675
-
1676
- // value
1677
- argv[2] = rb_ary_pop(value_stack);
1678
-
1679
- // operator
1680
- argv[3] = rb_id2sym(constants[cast->operator - 1]);
1681
-
1682
- // location
1683
- argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
1684
-
1685
- rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPConstantPathOperatorWriteNode));
1686
- break;
1687
- }
1688
1414
  #line 137 "api_node.c.erb"
1689
1415
  case YP_NODE_CONSTANT_PATH_WRITE_NODE: {
1690
1416
  yp_constant_path_write_node_t *cast = (yp_constant_path_write_node_t *) node;
@@ -1749,11 +1475,11 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
1749
1475
  // parameters
1750
1476
  argv[2] = rb_ary_pop(value_stack);
1751
1477
 
1752
- // statements
1478
+ // body
1753
1479
  argv[3] = rb_ary_pop(value_stack);
1754
1480
 
1755
1481
  // locals
1756
- argv[4] = rb_ary_new();
1482
+ argv[4] = rb_ary_new_capa(cast->locals.size);
1757
1483
  for (size_t index = 0; index < cast->locals.size; index++) {
1758
1484
  rb_ary_push(argv[4], rb_id2sym(constants[cast->locals.ids[index] - 1]));
1759
1485
  }
@@ -1904,7 +1630,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
1904
1630
  argv[1] = rb_ary_pop(value_stack);
1905
1631
 
1906
1632
  // requireds
1907
- argv[2] = rb_ary_new();
1633
+ argv[2] = rb_ary_new_capa(cast->requireds.size);
1908
1634
  for (size_t index = 0; index < cast->requireds.size; index++) {
1909
1635
  rb_ary_push(argv[2], rb_ary_pop(value_stack));
1910
1636
  }
@@ -2022,69 +1748,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2022
1748
  rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cYARPForwardingSuperNode));
2023
1749
  break;
2024
1750
  }
2025
- #line 137 "api_node.c.erb"
2026
- case YP_NODE_GLOBAL_VARIABLE_OPERATOR_AND_WRITE_NODE: {
2027
- yp_global_variable_operator_and_write_node_t *cast = (yp_global_variable_operator_and_write_node_t *) node;
2028
- VALUE argv[4];
2029
-
2030
- // name_loc
2031
- argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
2032
-
2033
- // operator_loc
2034
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
2035
-
2036
- // value
2037
- argv[2] = rb_ary_pop(value_stack);
2038
-
2039
- // location
2040
- argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
2041
-
2042
- rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPGlobalVariableOperatorAndWriteNode));
2043
- break;
2044
- }
2045
- #line 137 "api_node.c.erb"
2046
- case YP_NODE_GLOBAL_VARIABLE_OPERATOR_OR_WRITE_NODE: {
2047
- yp_global_variable_operator_or_write_node_t *cast = (yp_global_variable_operator_or_write_node_t *) node;
2048
- VALUE argv[4];
2049
-
2050
- // name_loc
2051
- argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
2052
-
2053
- // operator_loc
2054
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
2055
-
2056
- // value
2057
- argv[2] = rb_ary_pop(value_stack);
2058
-
2059
- // location
2060
- argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
2061
-
2062
- rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPGlobalVariableOperatorOrWriteNode));
2063
- break;
2064
- }
2065
- #line 137 "api_node.c.erb"
2066
- case YP_NODE_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
2067
- yp_global_variable_operator_write_node_t *cast = (yp_global_variable_operator_write_node_t *) node;
2068
- VALUE argv[5];
2069
-
2070
- // name_loc
2071
- argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
2072
-
2073
- // operator_loc
2074
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
2075
-
2076
- // value
2077
- argv[2] = rb_ary_pop(value_stack);
2078
-
2079
- // operator
2080
- argv[3] = rb_id2sym(constants[cast->operator - 1]);
2081
-
2082
- // location
2083
- argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
2084
-
2085
- rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPGlobalVariableOperatorWriteNode));
2086
- break;
2087
- }
2088
1751
  #line 137 "api_node.c.erb"
2089
1752
  case YP_NODE_GLOBAL_VARIABLE_READ_NODE: {
2090
1753
  VALUE argv[1];
@@ -2124,7 +1787,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2124
1787
  argv[0] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
2125
1788
 
2126
1789
  // elements
2127
- argv[1] = rb_ary_new();
1790
+ argv[1] = rb_ary_new_capa(cast->elements.size);
2128
1791
  for (size_t index = 0; index < cast->elements.size; index++) {
2129
1792
  rb_ary_push(argv[1], rb_ary_pop(value_stack));
2130
1793
  }
@@ -2147,7 +1810,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2147
1810
  argv[0] = rb_ary_pop(value_stack);
2148
1811
 
2149
1812
  // assocs
2150
- argv[1] = rb_ary_new();
1813
+ argv[1] = rb_ary_new_capa(cast->assocs.size);
2151
1814
  for (size_t index = 0; index < cast->assocs.size; index++) {
2152
1815
  rb_ary_push(argv[1], rb_ary_pop(value_stack));
2153
1816
  }
@@ -2229,69 +1892,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2229
1892
  rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPInNode));
2230
1893
  break;
2231
1894
  }
2232
- #line 137 "api_node.c.erb"
2233
- case YP_NODE_INSTANCE_VARIABLE_OPERATOR_AND_WRITE_NODE: {
2234
- yp_instance_variable_operator_and_write_node_t *cast = (yp_instance_variable_operator_and_write_node_t *) node;
2235
- VALUE argv[4];
2236
-
2237
- // name_loc
2238
- argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
2239
-
2240
- // operator_loc
2241
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
2242
-
2243
- // value
2244
- argv[2] = rb_ary_pop(value_stack);
2245
-
2246
- // location
2247
- argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
2248
-
2249
- rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPInstanceVariableOperatorAndWriteNode));
2250
- break;
2251
- }
2252
- #line 137 "api_node.c.erb"
2253
- case YP_NODE_INSTANCE_VARIABLE_OPERATOR_OR_WRITE_NODE: {
2254
- yp_instance_variable_operator_or_write_node_t *cast = (yp_instance_variable_operator_or_write_node_t *) node;
2255
- VALUE argv[4];
2256
-
2257
- // name_loc
2258
- argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
2259
-
2260
- // operator_loc
2261
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
2262
-
2263
- // value
2264
- argv[2] = rb_ary_pop(value_stack);
2265
-
2266
- // location
2267
- argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
2268
-
2269
- rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPInstanceVariableOperatorOrWriteNode));
2270
- break;
2271
- }
2272
- #line 137 "api_node.c.erb"
2273
- case YP_NODE_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
2274
- yp_instance_variable_operator_write_node_t *cast = (yp_instance_variable_operator_write_node_t *) node;
2275
- VALUE argv[5];
2276
-
2277
- // name_loc
2278
- argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
2279
-
2280
- // operator_loc
2281
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
2282
-
2283
- // value
2284
- argv[2] = rb_ary_pop(value_stack);
2285
-
2286
- // operator
2287
- argv[3] = rb_id2sym(constants[cast->operator - 1]);
2288
-
2289
- // location
2290
- argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
2291
-
2292
- rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPInstanceVariableOperatorWriteNode));
2293
- break;
2294
- }
2295
1895
  #line 137 "api_node.c.erb"
2296
1896
  case YP_NODE_INSTANCE_VARIABLE_READ_NODE: {
2297
1897
  VALUE argv[1];
@@ -2341,7 +1941,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2341
1941
  argv[0] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
2342
1942
 
2343
1943
  // parts
2344
- argv[1] = rb_ary_new();
1944
+ argv[1] = rb_ary_new_capa(cast->parts.size);
2345
1945
  for (size_t index = 0; index < cast->parts.size; index++) {
2346
1946
  rb_ary_push(argv[1], rb_ary_pop(value_stack));
2347
1947
  }
@@ -2367,7 +1967,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2367
1967
  argv[0] = cast->opening_loc.start == NULL ? Qnil : yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
2368
1968
 
2369
1969
  // parts
2370
- argv[1] = rb_ary_new();
1970
+ argv[1] = rb_ary_new_capa(cast->parts.size);
2371
1971
  for (size_t index = 0; index < cast->parts.size; index++) {
2372
1972
  rb_ary_push(argv[1], rb_ary_pop(value_stack));
2373
1973
  }
@@ -2390,7 +1990,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2390
1990
  argv[0] = cast->opening_loc.start == NULL ? Qnil : yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
2391
1991
 
2392
1992
  // parts
2393
- argv[1] = rb_ary_new();
1993
+ argv[1] = rb_ary_new_capa(cast->parts.size);
2394
1994
  for (size_t index = 0; index < cast->parts.size; index++) {
2395
1995
  rb_ary_push(argv[1], rb_ary_pop(value_stack));
2396
1996
  }
@@ -2413,7 +2013,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2413
2013
  argv[0] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
2414
2014
 
2415
2015
  // parts
2416
- argv[1] = rb_ary_new();
2016
+ argv[1] = rb_ary_new_capa(cast->parts.size);
2417
2017
  for (size_t index = 0; index < cast->parts.size; index++) {
2418
2018
  rb_ary_push(argv[1], rb_ary_pop(value_stack));
2419
2019
  }
@@ -2433,7 +2033,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2433
2033
  VALUE argv[2];
2434
2034
 
2435
2035
  // elements
2436
- argv[0] = rb_ary_new();
2036
+ argv[0] = rb_ary_new_capa(cast->elements.size);
2437
2037
  for (size_t index = 0; index < cast->elements.size; index++) {
2438
2038
  rb_ary_push(argv[0], rb_ary_pop(value_stack));
2439
2039
  }
@@ -2484,7 +2084,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2484
2084
  VALUE argv[5];
2485
2085
 
2486
2086
  // locals
2487
- argv[0] = rb_ary_new();
2087
+ argv[0] = rb_ary_new_capa(cast->locals.size);
2488
2088
  for (size_t index = 0; index < cast->locals.size; index++) {
2489
2089
  rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
2490
2090
  }
@@ -2495,7 +2095,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2495
2095
  // parameters
2496
2096
  argv[2] = rb_ary_pop(value_stack);
2497
2097
 
2498
- // statements
2098
+ // body
2499
2099
  argv[3] = rb_ary_pop(value_stack);
2500
2100
 
2501
2101
  // location
@@ -2504,78 +2104,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2504
2104
  rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPLambdaNode));
2505
2105
  break;
2506
2106
  }
2507
- #line 137 "api_node.c.erb"
2508
- case YP_NODE_LOCAL_VARIABLE_OPERATOR_AND_WRITE_NODE: {
2509
- yp_local_variable_operator_and_write_node_t *cast = (yp_local_variable_operator_and_write_node_t *) node;
2510
- VALUE argv[5];
2511
-
2512
- // name_loc
2513
- argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
2514
-
2515
- // operator_loc
2516
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
2517
-
2518
- // value
2519
- argv[2] = rb_ary_pop(value_stack);
2520
-
2521
- // constant_id
2522
- argv[3] = rb_id2sym(constants[cast->constant_id - 1]);
2523
-
2524
- // location
2525
- argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
2526
-
2527
- rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPLocalVariableOperatorAndWriteNode));
2528
- break;
2529
- }
2530
- #line 137 "api_node.c.erb"
2531
- case YP_NODE_LOCAL_VARIABLE_OPERATOR_OR_WRITE_NODE: {
2532
- yp_local_variable_operator_or_write_node_t *cast = (yp_local_variable_operator_or_write_node_t *) node;
2533
- VALUE argv[5];
2534
-
2535
- // name_loc
2536
- argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
2537
-
2538
- // operator_loc
2539
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
2540
-
2541
- // value
2542
- argv[2] = rb_ary_pop(value_stack);
2543
-
2544
- // constant_id
2545
- argv[3] = rb_id2sym(constants[cast->constant_id - 1]);
2546
-
2547
- // location
2548
- argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
2549
-
2550
- rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPLocalVariableOperatorOrWriteNode));
2551
- break;
2552
- }
2553
- #line 137 "api_node.c.erb"
2554
- case YP_NODE_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
2555
- yp_local_variable_operator_write_node_t *cast = (yp_local_variable_operator_write_node_t *) node;
2556
- VALUE argv[6];
2557
-
2558
- // name_loc
2559
- argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
2560
-
2561
- // operator_loc
2562
- argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
2563
-
2564
- // value
2565
- argv[2] = rb_ary_pop(value_stack);
2566
-
2567
- // constant_id
2568
- argv[3] = rb_id2sym(constants[cast->constant_id - 1]);
2569
-
2570
- // operator_id
2571
- argv[4] = rb_id2sym(constants[cast->operator_id - 1]);
2572
-
2573
- // location
2574
- argv[5] = yp_location_new(parser, node->location.start, node->location.end, source);
2575
-
2576
- rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPLocalVariableOperatorWriteNode));
2577
- break;
2578
- }
2579
2107
  #line 137 "api_node.c.erb"
2580
2108
  case YP_NODE_LOCAL_VARIABLE_READ_NODE: {
2581
2109
  yp_local_variable_read_node_t *cast = (yp_local_variable_read_node_t *) node;
@@ -2675,7 +2203,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2675
2203
  VALUE argv[6];
2676
2204
 
2677
2205
  // locals
2678
- argv[0] = rb_ary_new();
2206
+ argv[0] = rb_ary_new_capa(cast->locals.size);
2679
2207
  for (size_t index = 0; index < cast->locals.size; index++) {
2680
2208
  rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
2681
2209
  }
@@ -2686,7 +2214,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2686
2214
  // constant_path
2687
2215
  argv[2] = rb_ary_pop(value_stack);
2688
2216
 
2689
- // statements
2217
+ // body
2690
2218
  argv[3] = rb_ary_pop(value_stack);
2691
2219
 
2692
2220
  // end_keyword_loc
@@ -2704,7 +2232,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2704
2232
  VALUE argv[6];
2705
2233
 
2706
2234
  // targets
2707
- argv[0] = rb_ary_new();
2235
+ argv[0] = rb_ary_new_capa(cast->targets.size);
2708
2236
  for (size_t index = 0; index < cast->targets.size; index++) {
2709
2237
  rb_ary_push(argv[0], rb_ary_pop(value_stack));
2710
2238
  }
@@ -2781,6 +2309,29 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2781
2309
  rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPNumberedReferenceReadNode));
2782
2310
  break;
2783
2311
  }
2312
+ #line 137 "api_node.c.erb"
2313
+ case YP_NODE_OPERATOR_WRITE_NODE: {
2314
+ yp_operator_write_node_t *cast = (yp_operator_write_node_t *) node;
2315
+ VALUE argv[5];
2316
+
2317
+ // target
2318
+ argv[0] = rb_ary_pop(value_stack);
2319
+
2320
+ // operator_loc
2321
+ argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
2322
+
2323
+ // operator
2324
+ argv[2] = rb_id2sym(constants[cast->operator - 1]);
2325
+
2326
+ // value
2327
+ argv[3] = rb_ary_pop(value_stack);
2328
+
2329
+ // location
2330
+ argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
2331
+
2332
+ rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPOperatorWriteNode));
2333
+ break;
2334
+ }
2784
2335
  #line 137 "api_node.c.erb"
2785
2336
  case YP_NODE_OPTIONAL_PARAMETER_NODE: {
2786
2337
  yp_optional_parameter_node_t *cast = (yp_optional_parameter_node_t *) node;
@@ -2824,25 +2375,45 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2824
2375
  rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPOrNode));
2825
2376
  break;
2826
2377
  }
2378
+ #line 137 "api_node.c.erb"
2379
+ case YP_NODE_OR_WRITE_NODE: {
2380
+ yp_or_write_node_t *cast = (yp_or_write_node_t *) node;
2381
+ VALUE argv[4];
2382
+
2383
+ // target
2384
+ argv[0] = rb_ary_pop(value_stack);
2385
+
2386
+ // value
2387
+ argv[1] = rb_ary_pop(value_stack);
2388
+
2389
+ // operator_loc
2390
+ argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
2391
+
2392
+ // location
2393
+ argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
2394
+
2395
+ rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPOrWriteNode));
2396
+ break;
2397
+ }
2827
2398
  #line 137 "api_node.c.erb"
2828
2399
  case YP_NODE_PARAMETERS_NODE: {
2829
2400
  yp_parameters_node_t *cast = (yp_parameters_node_t *) node;
2830
2401
  VALUE argv[8];
2831
2402
 
2832
2403
  // requireds
2833
- argv[0] = rb_ary_new();
2404
+ argv[0] = rb_ary_new_capa(cast->requireds.size);
2834
2405
  for (size_t index = 0; index < cast->requireds.size; index++) {
2835
2406
  rb_ary_push(argv[0], rb_ary_pop(value_stack));
2836
2407
  }
2837
2408
 
2838
2409
  // optionals
2839
- argv[1] = rb_ary_new();
2410
+ argv[1] = rb_ary_new_capa(cast->optionals.size);
2840
2411
  for (size_t index = 0; index < cast->optionals.size; index++) {
2841
2412
  rb_ary_push(argv[1], rb_ary_pop(value_stack));
2842
2413
  }
2843
2414
 
2844
2415
  // posts
2845
- argv[2] = rb_ary_new();
2416
+ argv[2] = rb_ary_new_capa(cast->posts.size);
2846
2417
  for (size_t index = 0; index < cast->posts.size; index++) {
2847
2418
  rb_ary_push(argv[2], rb_ary_pop(value_stack));
2848
2419
  }
@@ -2851,7 +2422,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2851
2422
  argv[3] = rb_ary_pop(value_stack);
2852
2423
 
2853
2424
  // keywords
2854
- argv[4] = rb_ary_new();
2425
+ argv[4] = rb_ary_new_capa(cast->keywords.size);
2855
2426
  for (size_t index = 0; index < cast->keywords.size; index++) {
2856
2427
  rb_ary_push(argv[4], rb_ary_pop(value_stack));
2857
2428
  }
@@ -2873,7 +2444,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2873
2444
  yp_parentheses_node_t *cast = (yp_parentheses_node_t *) node;
2874
2445
  VALUE argv[4];
2875
2446
 
2876
- // statements
2447
+ // body
2877
2448
  argv[0] = rb_ary_pop(value_stack);
2878
2449
 
2879
2450
  // opening_loc
@@ -2980,7 +2551,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
2980
2551
  VALUE argv[3];
2981
2552
 
2982
2553
  // locals
2983
- argv[0] = rb_ary_new();
2554
+ argv[0] = rb_ary_new_capa(cast->locals.size);
2984
2555
  for (size_t index = 0; index < cast->locals.size; index++) {
2985
2556
  rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
2986
2557
  }
@@ -3072,7 +2643,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
3072
2643
  VALUE argv[4];
3073
2644
 
3074
2645
  // parameters
3075
- argv[0] = rb_ary_new();
2646
+ argv[0] = rb_ary_new_capa(cast->parameters.size);
3076
2647
  for (size_t index = 0; index < cast->parameters.size; index++) {
3077
2648
  rb_ary_push(argv[0], rb_ary_pop(value_stack));
3078
2649
  }
@@ -3132,7 +2703,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
3132
2703
  argv[0] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
3133
2704
 
3134
2705
  // exceptions
3135
- argv[1] = rb_ary_new();
2706
+ argv[1] = rb_ary_new_capa(cast->exceptions.size);
3136
2707
  for (size_t index = 0; index < cast->exceptions.size; index++) {
3137
2708
  rb_ary_push(argv[1], rb_ary_pop(value_stack));
3138
2709
  }
@@ -3215,7 +2786,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
3215
2786
  VALUE argv[7];
3216
2787
 
3217
2788
  // locals
3218
- argv[0] = rb_ary_new();
2789
+ argv[0] = rb_ary_new_capa(cast->locals.size);
3219
2790
  for (size_t index = 0; index < cast->locals.size; index++) {
3220
2791
  rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
3221
2792
  }
@@ -3229,7 +2800,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
3229
2800
  // expression
3230
2801
  argv[3] = rb_ary_pop(value_stack);
3231
2802
 
3232
- // statements
2803
+ // body
3233
2804
  argv[4] = rb_ary_pop(value_stack);
3234
2805
 
3235
2806
  // end_keyword_loc
@@ -3298,7 +2869,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
3298
2869
  VALUE argv[2];
3299
2870
 
3300
2871
  // body
3301
- argv[0] = rb_ary_new();
2872
+ argv[0] = rb_ary_new_capa(cast->body.size);
3302
2873
  for (size_t index = 0; index < cast->body.size; index++) {
3303
2874
  rb_ary_push(argv[0], rb_ary_pop(value_stack));
3304
2875
  }
@@ -3413,7 +2984,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
3413
2984
  VALUE argv[3];
3414
2985
 
3415
2986
  // names
3416
- argv[0] = rb_ary_new();
2987
+ argv[0] = rb_ary_new_capa(cast->names.size);
3417
2988
  for (size_t index = 0; index < cast->names.size; index++) {
3418
2989
  rb_ary_push(argv[0], rb_ary_pop(value_stack));
3419
2990
  }
@@ -3485,7 +3056,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
3485
3056
  argv[0] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
3486
3057
 
3487
3058
  // conditions
3488
- argv[1] = rb_ary_new();
3059
+ argv[1] = rb_ary_new_capa(cast->conditions.size);
3489
3060
  for (size_t index = 0; index < cast->conditions.size; index++) {
3490
3061
  rb_ary_push(argv[1], rb_ary_pop(value_stack));
3491
3062
  }
@@ -3584,6 +3155,7 @@ Init_yarp_api_node(void) {
3584
3155
  rb_cYARPAliasNode = rb_define_class_under(rb_cYARP, "AliasNode", rb_cYARPNode);
3585
3156
  rb_cYARPAlternationPatternNode = rb_define_class_under(rb_cYARP, "AlternationPatternNode", rb_cYARPNode);
3586
3157
  rb_cYARPAndNode = rb_define_class_under(rb_cYARP, "AndNode", rb_cYARPNode);
3158
+ rb_cYARPAndWriteNode = rb_define_class_under(rb_cYARP, "AndWriteNode", rb_cYARPNode);
3587
3159
  rb_cYARPArgumentsNode = rb_define_class_under(rb_cYARP, "ArgumentsNode", rb_cYARPNode);
3588
3160
  rb_cYARPArrayNode = rb_define_class_under(rb_cYARP, "ArrayNode", rb_cYARPNode);
3589
3161
  rb_cYARPArrayPatternNode = rb_define_class_under(rb_cYARP, "ArrayPatternNode", rb_cYARPNode);
@@ -3603,18 +3175,9 @@ Init_yarp_api_node(void) {
3603
3175
  rb_cYARPCapturePatternNode = rb_define_class_under(rb_cYARP, "CapturePatternNode", rb_cYARPNode);
3604
3176
  rb_cYARPCaseNode = rb_define_class_under(rb_cYARP, "CaseNode", rb_cYARPNode);
3605
3177
  rb_cYARPClassNode = rb_define_class_under(rb_cYARP, "ClassNode", rb_cYARPNode);
3606
- rb_cYARPClassVariableOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "ClassVariableOperatorAndWriteNode", rb_cYARPNode);
3607
- rb_cYARPClassVariableOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "ClassVariableOperatorOrWriteNode", rb_cYARPNode);
3608
- rb_cYARPClassVariableOperatorWriteNode = rb_define_class_under(rb_cYARP, "ClassVariableOperatorWriteNode", rb_cYARPNode);
3609
3178
  rb_cYARPClassVariableReadNode = rb_define_class_under(rb_cYARP, "ClassVariableReadNode", rb_cYARPNode);
3610
3179
  rb_cYARPClassVariableWriteNode = rb_define_class_under(rb_cYARP, "ClassVariableWriteNode", rb_cYARPNode);
3611
- rb_cYARPConstantOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "ConstantOperatorAndWriteNode", rb_cYARPNode);
3612
- rb_cYARPConstantOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "ConstantOperatorOrWriteNode", rb_cYARPNode);
3613
- rb_cYARPConstantOperatorWriteNode = rb_define_class_under(rb_cYARP, "ConstantOperatorWriteNode", rb_cYARPNode);
3614
3180
  rb_cYARPConstantPathNode = rb_define_class_under(rb_cYARP, "ConstantPathNode", rb_cYARPNode);
3615
- rb_cYARPConstantPathOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "ConstantPathOperatorAndWriteNode", rb_cYARPNode);
3616
- rb_cYARPConstantPathOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "ConstantPathOperatorOrWriteNode", rb_cYARPNode);
3617
- rb_cYARPConstantPathOperatorWriteNode = rb_define_class_under(rb_cYARP, "ConstantPathOperatorWriteNode", rb_cYARPNode);
3618
3181
  rb_cYARPConstantPathWriteNode = rb_define_class_under(rb_cYARP, "ConstantPathWriteNode", rb_cYARPNode);
3619
3182
  rb_cYARPConstantReadNode = rb_define_class_under(rb_cYARP, "ConstantReadNode", rb_cYARPNode);
3620
3183
  rb_cYARPConstantWriteNode = rb_define_class_under(rb_cYARP, "ConstantWriteNode", rb_cYARPNode);
@@ -3632,9 +3195,6 @@ Init_yarp_api_node(void) {
3632
3195
  rb_cYARPForwardingArgumentsNode = rb_define_class_under(rb_cYARP, "ForwardingArgumentsNode", rb_cYARPNode);
3633
3196
  rb_cYARPForwardingParameterNode = rb_define_class_under(rb_cYARP, "ForwardingParameterNode", rb_cYARPNode);
3634
3197
  rb_cYARPForwardingSuperNode = rb_define_class_under(rb_cYARP, "ForwardingSuperNode", rb_cYARPNode);
3635
- rb_cYARPGlobalVariableOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "GlobalVariableOperatorAndWriteNode", rb_cYARPNode);
3636
- rb_cYARPGlobalVariableOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "GlobalVariableOperatorOrWriteNode", rb_cYARPNode);
3637
- rb_cYARPGlobalVariableOperatorWriteNode = rb_define_class_under(rb_cYARP, "GlobalVariableOperatorWriteNode", rb_cYARPNode);
3638
3198
  rb_cYARPGlobalVariableReadNode = rb_define_class_under(rb_cYARP, "GlobalVariableReadNode", rb_cYARPNode);
3639
3199
  rb_cYARPGlobalVariableWriteNode = rb_define_class_under(rb_cYARP, "GlobalVariableWriteNode", rb_cYARPNode);
3640
3200
  rb_cYARPHashNode = rb_define_class_under(rb_cYARP, "HashNode", rb_cYARPNode);
@@ -3642,9 +3202,6 @@ Init_yarp_api_node(void) {
3642
3202
  rb_cYARPIfNode = rb_define_class_under(rb_cYARP, "IfNode", rb_cYARPNode);
3643
3203
  rb_cYARPImaginaryNode = rb_define_class_under(rb_cYARP, "ImaginaryNode", rb_cYARPNode);
3644
3204
  rb_cYARPInNode = rb_define_class_under(rb_cYARP, "InNode", rb_cYARPNode);
3645
- rb_cYARPInstanceVariableOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "InstanceVariableOperatorAndWriteNode", rb_cYARPNode);
3646
- rb_cYARPInstanceVariableOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "InstanceVariableOperatorOrWriteNode", rb_cYARPNode);
3647
- rb_cYARPInstanceVariableOperatorWriteNode = rb_define_class_under(rb_cYARP, "InstanceVariableOperatorWriteNode", rb_cYARPNode);
3648
3205
  rb_cYARPInstanceVariableReadNode = rb_define_class_under(rb_cYARP, "InstanceVariableReadNode", rb_cYARPNode);
3649
3206
  rb_cYARPInstanceVariableWriteNode = rb_define_class_under(rb_cYARP, "InstanceVariableWriteNode", rb_cYARPNode);
3650
3207
  rb_cYARPIntegerNode = rb_define_class_under(rb_cYARP, "IntegerNode", rb_cYARPNode);
@@ -3656,9 +3213,6 @@ Init_yarp_api_node(void) {
3656
3213
  rb_cYARPKeywordParameterNode = rb_define_class_under(rb_cYARP, "KeywordParameterNode", rb_cYARPNode);
3657
3214
  rb_cYARPKeywordRestParameterNode = rb_define_class_under(rb_cYARP, "KeywordRestParameterNode", rb_cYARPNode);
3658
3215
  rb_cYARPLambdaNode = rb_define_class_under(rb_cYARP, "LambdaNode", rb_cYARPNode);
3659
- rb_cYARPLocalVariableOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "LocalVariableOperatorAndWriteNode", rb_cYARPNode);
3660
- rb_cYARPLocalVariableOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "LocalVariableOperatorOrWriteNode", rb_cYARPNode);
3661
- rb_cYARPLocalVariableOperatorWriteNode = rb_define_class_under(rb_cYARP, "LocalVariableOperatorWriteNode", rb_cYARPNode);
3662
3216
  rb_cYARPLocalVariableReadNode = rb_define_class_under(rb_cYARP, "LocalVariableReadNode", rb_cYARPNode);
3663
3217
  rb_cYARPLocalVariableWriteNode = rb_define_class_under(rb_cYARP, "LocalVariableWriteNode", rb_cYARPNode);
3664
3218
  rb_cYARPMatchPredicateNode = rb_define_class_under(rb_cYARP, "MatchPredicateNode", rb_cYARPNode);
@@ -3670,8 +3224,10 @@ Init_yarp_api_node(void) {
3670
3224
  rb_cYARPNilNode = rb_define_class_under(rb_cYARP, "NilNode", rb_cYARPNode);
3671
3225
  rb_cYARPNoKeywordsParameterNode = rb_define_class_under(rb_cYARP, "NoKeywordsParameterNode", rb_cYARPNode);
3672
3226
  rb_cYARPNumberedReferenceReadNode = rb_define_class_under(rb_cYARP, "NumberedReferenceReadNode", rb_cYARPNode);
3227
+ rb_cYARPOperatorWriteNode = rb_define_class_under(rb_cYARP, "OperatorWriteNode", rb_cYARPNode);
3673
3228
  rb_cYARPOptionalParameterNode = rb_define_class_under(rb_cYARP, "OptionalParameterNode", rb_cYARPNode);
3674
3229
  rb_cYARPOrNode = rb_define_class_under(rb_cYARP, "OrNode", rb_cYARPNode);
3230
+ rb_cYARPOrWriteNode = rb_define_class_under(rb_cYARP, "OrWriteNode", rb_cYARPNode);
3675
3231
  rb_cYARPParametersNode = rb_define_class_under(rb_cYARP, "ParametersNode", rb_cYARPNode);
3676
3232
  rb_cYARPParenthesesNode = rb_define_class_under(rb_cYARP, "ParenthesesNode", rb_cYARPNode);
3677
3233
  rb_cYARPPinnedExpressionNode = rb_define_class_under(rb_cYARP, "PinnedExpressionNode", rb_cYARPNode);