yarp 0.6.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +55 -0
- data/CONTRIBUTING.md +4 -0
- data/{Makefile.in → Makefile} +5 -4
- data/README.md +6 -3
- data/config.yml +83 -274
- data/docs/build_system.md +4 -15
- data/docs/building.md +1 -5
- data/docs/encoding.md +1 -0
- data/docs/{extension.md → ruby_api.md} +6 -3
- data/docs/serialization.md +71 -24
- data/ext/yarp/api_node.c +173 -585
- data/ext/yarp/extconf.rb +15 -10
- data/ext/yarp/extension.c +4 -2
- data/ext/yarp/extension.h +1 -1
- data/include/yarp/ast.h +167 -306
- data/include/yarp/defines.h +5 -15
- data/include/yarp/enc/yp_encoding.h +1 -0
- data/include/yarp/unescape.h +1 -1
- data/include/yarp/util/yp_buffer.h +9 -0
- data/include/yarp/util/yp_constant_pool.h +3 -0
- data/include/yarp/util/yp_list.h +7 -7
- data/include/yarp/util/yp_newline_list.h +4 -0
- data/include/yarp/util/yp_state_stack.h +1 -1
- data/include/yarp/util/yp_string.h +5 -1
- data/include/yarp/version.h +2 -3
- data/include/yarp.h +4 -2
- data/lib/yarp/ffi.rb +226 -0
- data/lib/yarp/lex_compat.rb +16 -2
- data/lib/yarp/node.rb +594 -1437
- data/lib/yarp/ripper_compat.rb +3 -3
- data/lib/yarp/serialize.rb +312 -149
- data/lib/yarp.rb +167 -2
- data/src/enc/yp_unicode.c +9 -0
- data/src/node.c +92 -250
- data/src/prettyprint.c +81 -206
- data/src/serialize.c +124 -149
- data/src/unescape.c +29 -35
- data/src/util/yp_buffer.c +18 -0
- data/src/util/yp_list.c +7 -16
- data/src/util/yp_state_stack.c +0 -6
- data/src/util/yp_string.c +8 -17
- data/src/yarp.c +444 -717
- data/yarp.gemspec +5 -5
- metadata +6 -6
- data/config.h.in +0 -25
- data/configure +0 -4487
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;
|
@@ -59,14 +51,12 @@ static VALUE rb_cYARPEmbeddedVariableNode;
|
|
59
51
|
static VALUE rb_cYARPEnsureNode;
|
60
52
|
static VALUE rb_cYARPFalseNode;
|
61
53
|
static VALUE rb_cYARPFindPatternNode;
|
54
|
+
static VALUE rb_cYARPFlipFlopNode;
|
62
55
|
static VALUE rb_cYARPFloatNode;
|
63
56
|
static VALUE rb_cYARPForNode;
|
64
57
|
static VALUE rb_cYARPForwardingArgumentsNode;
|
65
58
|
static VALUE rb_cYARPForwardingParameterNode;
|
66
59
|
static VALUE rb_cYARPForwardingSuperNode;
|
67
|
-
static VALUE rb_cYARPGlobalVariableOperatorAndWriteNode;
|
68
|
-
static VALUE rb_cYARPGlobalVariableOperatorOrWriteNode;
|
69
|
-
static VALUE rb_cYARPGlobalVariableOperatorWriteNode;
|
70
60
|
static VALUE rb_cYARPGlobalVariableReadNode;
|
71
61
|
static VALUE rb_cYARPGlobalVariableWriteNode;
|
72
62
|
static VALUE rb_cYARPHashNode;
|
@@ -74,9 +64,6 @@ static VALUE rb_cYARPHashPatternNode;
|
|
74
64
|
static VALUE rb_cYARPIfNode;
|
75
65
|
static VALUE rb_cYARPImaginaryNode;
|
76
66
|
static VALUE rb_cYARPInNode;
|
77
|
-
static VALUE rb_cYARPInstanceVariableOperatorAndWriteNode;
|
78
|
-
static VALUE rb_cYARPInstanceVariableOperatorOrWriteNode;
|
79
|
-
static VALUE rb_cYARPInstanceVariableOperatorWriteNode;
|
80
67
|
static VALUE rb_cYARPInstanceVariableReadNode;
|
81
68
|
static VALUE rb_cYARPInstanceVariableWriteNode;
|
82
69
|
static VALUE rb_cYARPIntegerNode;
|
@@ -88,9 +75,6 @@ static VALUE rb_cYARPKeywordHashNode;
|
|
88
75
|
static VALUE rb_cYARPKeywordParameterNode;
|
89
76
|
static VALUE rb_cYARPKeywordRestParameterNode;
|
90
77
|
static VALUE rb_cYARPLambdaNode;
|
91
|
-
static VALUE rb_cYARPLocalVariableOperatorAndWriteNode;
|
92
|
-
static VALUE rb_cYARPLocalVariableOperatorOrWriteNode;
|
93
|
-
static VALUE rb_cYARPLocalVariableOperatorWriteNode;
|
94
78
|
static VALUE rb_cYARPLocalVariableReadNode;
|
95
79
|
static VALUE rb_cYARPLocalVariableWriteNode;
|
96
80
|
static VALUE rb_cYARPMatchPredicateNode;
|
@@ -102,8 +86,10 @@ static VALUE rb_cYARPNextNode;
|
|
102
86
|
static VALUE rb_cYARPNilNode;
|
103
87
|
static VALUE rb_cYARPNoKeywordsParameterNode;
|
104
88
|
static VALUE rb_cYARPNumberedReferenceReadNode;
|
89
|
+
static VALUE rb_cYARPOperatorWriteNode;
|
105
90
|
static VALUE rb_cYARPOptionalParameterNode;
|
106
91
|
static VALUE rb_cYARPOrNode;
|
92
|
+
static VALUE rb_cYARPOrWriteNode;
|
107
93
|
static VALUE rb_cYARPParametersNode;
|
108
94
|
static VALUE rb_cYARPParenthesesNode;
|
109
95
|
static VALUE rb_cYARPPinnedExpressionNode;
|
@@ -257,6 +243,13 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
257
243
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->right);
|
258
244
|
break;
|
259
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
|
+
}
|
260
253
|
#line 111 "api_node.c.erb"
|
261
254
|
case YP_NODE_ARGUMENTS_NODE: {
|
262
255
|
yp_arguments_node_t *cast = (yp_arguments_node_t *) node;
|
@@ -318,7 +311,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
318
311
|
case YP_NODE_BLOCK_NODE: {
|
319
312
|
yp_block_node_t *cast = (yp_block_node_t *) node;
|
320
313
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->parameters);
|
321
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->
|
314
|
+
yp_node_stack_push(&node_stack, (yp_node_t *) cast->body);
|
322
315
|
break;
|
323
316
|
}
|
324
317
|
#line 111 "api_node.c.erb"
|
@@ -384,25 +377,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
384
377
|
yp_class_node_t *cast = (yp_class_node_t *) node;
|
385
378
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->constant_path);
|
386
379
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->superclass);
|
387
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->
|
388
|
-
break;
|
389
|
-
}
|
390
|
-
#line 111 "api_node.c.erb"
|
391
|
-
case YP_NODE_CLASS_VARIABLE_OPERATOR_AND_WRITE_NODE: {
|
392
|
-
yp_class_variable_operator_and_write_node_t *cast = (yp_class_variable_operator_and_write_node_t *) node;
|
393
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
394
|
-
break;
|
395
|
-
}
|
396
|
-
#line 111 "api_node.c.erb"
|
397
|
-
case YP_NODE_CLASS_VARIABLE_OPERATOR_OR_WRITE_NODE: {
|
398
|
-
yp_class_variable_operator_or_write_node_t *cast = (yp_class_variable_operator_or_write_node_t *) node;
|
399
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
400
|
-
break;
|
401
|
-
}
|
402
|
-
#line 111 "api_node.c.erb"
|
403
|
-
case YP_NODE_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
|
404
|
-
yp_class_variable_operator_write_node_t *cast = (yp_class_variable_operator_write_node_t *) node;
|
405
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
380
|
+
yp_node_stack_push(&node_stack, (yp_node_t *) cast->body);
|
406
381
|
break;
|
407
382
|
}
|
408
383
|
#line 111 "api_node.c.erb"
|
@@ -411,24 +386,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
411
386
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
412
387
|
break;
|
413
388
|
}
|
414
|
-
#line 111 "api_node.c.erb"
|
415
|
-
case YP_NODE_CONSTANT_OPERATOR_AND_WRITE_NODE: {
|
416
|
-
yp_constant_operator_and_write_node_t *cast = (yp_constant_operator_and_write_node_t *) node;
|
417
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
418
|
-
break;
|
419
|
-
}
|
420
|
-
#line 111 "api_node.c.erb"
|
421
|
-
case YP_NODE_CONSTANT_OPERATOR_OR_WRITE_NODE: {
|
422
|
-
yp_constant_operator_or_write_node_t *cast = (yp_constant_operator_or_write_node_t *) node;
|
423
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
424
|
-
break;
|
425
|
-
}
|
426
|
-
#line 111 "api_node.c.erb"
|
427
|
-
case YP_NODE_CONSTANT_OPERATOR_WRITE_NODE: {
|
428
|
-
yp_constant_operator_write_node_t *cast = (yp_constant_operator_write_node_t *) node;
|
429
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
430
|
-
break;
|
431
|
-
}
|
432
389
|
#line 111 "api_node.c.erb"
|
433
390
|
case YP_NODE_CONSTANT_PATH_NODE: {
|
434
391
|
yp_constant_path_node_t *cast = (yp_constant_path_node_t *) node;
|
@@ -436,27 +393,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
436
393
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->child);
|
437
394
|
break;
|
438
395
|
}
|
439
|
-
#line 111 "api_node.c.erb"
|
440
|
-
case YP_NODE_CONSTANT_PATH_OPERATOR_AND_WRITE_NODE: {
|
441
|
-
yp_constant_path_operator_and_write_node_t *cast = (yp_constant_path_operator_and_write_node_t *) node;
|
442
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
|
443
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
444
|
-
break;
|
445
|
-
}
|
446
|
-
#line 111 "api_node.c.erb"
|
447
|
-
case YP_NODE_CONSTANT_PATH_OPERATOR_OR_WRITE_NODE: {
|
448
|
-
yp_constant_path_operator_or_write_node_t *cast = (yp_constant_path_operator_or_write_node_t *) node;
|
449
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
|
450
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
451
|
-
break;
|
452
|
-
}
|
453
|
-
#line 111 "api_node.c.erb"
|
454
|
-
case YP_NODE_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
|
455
|
-
yp_constant_path_operator_write_node_t *cast = (yp_constant_path_operator_write_node_t *) node;
|
456
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
|
457
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
458
|
-
break;
|
459
|
-
}
|
460
396
|
#line 111 "api_node.c.erb"
|
461
397
|
case YP_NODE_CONSTANT_PATH_WRITE_NODE: {
|
462
398
|
yp_constant_path_write_node_t *cast = (yp_constant_path_write_node_t *) node;
|
@@ -475,7 +411,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
475
411
|
yp_def_node_t *cast = (yp_def_node_t *) node;
|
476
412
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->receiver);
|
477
413
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->parameters);
|
478
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->
|
414
|
+
yp_node_stack_push(&node_stack, (yp_node_t *) cast->body);
|
479
415
|
break;
|
480
416
|
}
|
481
417
|
#line 111 "api_node.c.erb"
|
@@ -519,6 +455,13 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
519
455
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->right);
|
520
456
|
break;
|
521
457
|
}
|
458
|
+
#line 111 "api_node.c.erb"
|
459
|
+
case YP_NODE_FLIP_FLOP_NODE: {
|
460
|
+
yp_flip_flop_node_t *cast = (yp_flip_flop_node_t *) node;
|
461
|
+
yp_node_stack_push(&node_stack, (yp_node_t *) cast->left);
|
462
|
+
yp_node_stack_push(&node_stack, (yp_node_t *) cast->right);
|
463
|
+
break;
|
464
|
+
}
|
522
465
|
#line 111 "api_node.c.erb"
|
523
466
|
case YP_NODE_FOR_NODE: {
|
524
467
|
yp_for_node_t *cast = (yp_for_node_t *) node;
|
@@ -533,24 +476,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
533
476
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->block);
|
534
477
|
break;
|
535
478
|
}
|
536
|
-
#line 111 "api_node.c.erb"
|
537
|
-
case YP_NODE_GLOBAL_VARIABLE_OPERATOR_AND_WRITE_NODE: {
|
538
|
-
yp_global_variable_operator_and_write_node_t *cast = (yp_global_variable_operator_and_write_node_t *) node;
|
539
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
540
|
-
break;
|
541
|
-
}
|
542
|
-
#line 111 "api_node.c.erb"
|
543
|
-
case YP_NODE_GLOBAL_VARIABLE_OPERATOR_OR_WRITE_NODE: {
|
544
|
-
yp_global_variable_operator_or_write_node_t *cast = (yp_global_variable_operator_or_write_node_t *) node;
|
545
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
546
|
-
break;
|
547
|
-
}
|
548
|
-
#line 111 "api_node.c.erb"
|
549
|
-
case YP_NODE_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
550
|
-
yp_global_variable_operator_write_node_t *cast = (yp_global_variable_operator_write_node_t *) node;
|
551
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
552
|
-
break;
|
553
|
-
}
|
554
479
|
#line 111 "api_node.c.erb"
|
555
480
|
case YP_NODE_GLOBAL_VARIABLE_WRITE_NODE: {
|
556
481
|
yp_global_variable_write_node_t *cast = (yp_global_variable_write_node_t *) node;
|
@@ -596,24 +521,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
596
521
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
597
522
|
break;
|
598
523
|
}
|
599
|
-
#line 111 "api_node.c.erb"
|
600
|
-
case YP_NODE_INSTANCE_VARIABLE_OPERATOR_AND_WRITE_NODE: {
|
601
|
-
yp_instance_variable_operator_and_write_node_t *cast = (yp_instance_variable_operator_and_write_node_t *) node;
|
602
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
603
|
-
break;
|
604
|
-
}
|
605
|
-
#line 111 "api_node.c.erb"
|
606
|
-
case YP_NODE_INSTANCE_VARIABLE_OPERATOR_OR_WRITE_NODE: {
|
607
|
-
yp_instance_variable_operator_or_write_node_t *cast = (yp_instance_variable_operator_or_write_node_t *) node;
|
608
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
609
|
-
break;
|
610
|
-
}
|
611
|
-
#line 111 "api_node.c.erb"
|
612
|
-
case YP_NODE_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
|
613
|
-
yp_instance_variable_operator_write_node_t *cast = (yp_instance_variable_operator_write_node_t *) node;
|
614
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
615
|
-
break;
|
616
|
-
}
|
617
524
|
#line 111 "api_node.c.erb"
|
618
525
|
case YP_NODE_INSTANCE_VARIABLE_WRITE_NODE: {
|
619
526
|
yp_instance_variable_write_node_t *cast = (yp_instance_variable_write_node_t *) node;
|
@@ -670,25 +577,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
670
577
|
case YP_NODE_LAMBDA_NODE: {
|
671
578
|
yp_lambda_node_t *cast = (yp_lambda_node_t *) node;
|
672
579
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->parameters);
|
673
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->
|
674
|
-
break;
|
675
|
-
}
|
676
|
-
#line 111 "api_node.c.erb"
|
677
|
-
case YP_NODE_LOCAL_VARIABLE_OPERATOR_AND_WRITE_NODE: {
|
678
|
-
yp_local_variable_operator_and_write_node_t *cast = (yp_local_variable_operator_and_write_node_t *) node;
|
679
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
680
|
-
break;
|
681
|
-
}
|
682
|
-
#line 111 "api_node.c.erb"
|
683
|
-
case YP_NODE_LOCAL_VARIABLE_OPERATOR_OR_WRITE_NODE: {
|
684
|
-
yp_local_variable_operator_or_write_node_t *cast = (yp_local_variable_operator_or_write_node_t *) node;
|
685
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
686
|
-
break;
|
687
|
-
}
|
688
|
-
#line 111 "api_node.c.erb"
|
689
|
-
case YP_NODE_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
690
|
-
yp_local_variable_operator_write_node_t *cast = (yp_local_variable_operator_write_node_t *) node;
|
691
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
580
|
+
yp_node_stack_push(&node_stack, (yp_node_t *) cast->body);
|
692
581
|
break;
|
693
582
|
}
|
694
583
|
#line 111 "api_node.c.erb"
|
@@ -715,7 +604,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
715
604
|
case YP_NODE_MODULE_NODE: {
|
716
605
|
yp_module_node_t *cast = (yp_module_node_t *) node;
|
717
606
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->constant_path);
|
718
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->
|
607
|
+
yp_node_stack_push(&node_stack, (yp_node_t *) cast->body);
|
719
608
|
break;
|
720
609
|
}
|
721
610
|
#line 111 "api_node.c.erb"
|
@@ -733,6 +622,13 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
733
622
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->arguments);
|
734
623
|
break;
|
735
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
|
+
}
|
736
632
|
#line 111 "api_node.c.erb"
|
737
633
|
case YP_NODE_OPTIONAL_PARAMETER_NODE: {
|
738
634
|
yp_optional_parameter_node_t *cast = (yp_optional_parameter_node_t *) node;
|
@@ -746,6 +642,13 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
746
642
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->right);
|
747
643
|
break;
|
748
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
|
+
}
|
749
652
|
#line 111 "api_node.c.erb"
|
750
653
|
case YP_NODE_PARAMETERS_NODE: {
|
751
654
|
yp_parameters_node_t *cast = (yp_parameters_node_t *) node;
|
@@ -769,7 +672,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
769
672
|
#line 111 "api_node.c.erb"
|
770
673
|
case YP_NODE_PARENTHESES_NODE: {
|
771
674
|
yp_parentheses_node_t *cast = (yp_parentheses_node_t *) node;
|
772
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->
|
675
|
+
yp_node_stack_push(&node_stack, (yp_node_t *) cast->body);
|
773
676
|
break;
|
774
677
|
}
|
775
678
|
#line 111 "api_node.c.erb"
|
@@ -851,7 +754,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
851
754
|
case YP_NODE_SINGLETON_CLASS_NODE: {
|
852
755
|
yp_singleton_class_node_t *cast = (yp_singleton_class_node_t *) node;
|
853
756
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->expression);
|
854
|
-
yp_node_stack_push(&node_stack, (yp_node_t *) cast->
|
757
|
+
yp_node_stack_push(&node_stack, (yp_node_t *) cast->body);
|
855
758
|
break;
|
856
759
|
}
|
857
760
|
#line 111 "api_node.c.erb"
|
@@ -995,13 +898,33 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
995
898
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPAndNode));
|
996
899
|
break;
|
997
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
|
+
}
|
998
921
|
#line 137 "api_node.c.erb"
|
999
922
|
case YP_NODE_ARGUMENTS_NODE: {
|
1000
923
|
yp_arguments_node_t *cast = (yp_arguments_node_t *) node;
|
1001
924
|
VALUE argv[2];
|
1002
925
|
|
1003
926
|
// arguments
|
1004
|
-
argv[0] =
|
927
|
+
argv[0] = rb_ary_new_capa(cast->arguments.size);
|
1005
928
|
for (size_t index = 0; index < cast->arguments.size; index++) {
|
1006
929
|
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
1007
930
|
}
|
@@ -1018,7 +941,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1018
941
|
VALUE argv[4];
|
1019
942
|
|
1020
943
|
// elements
|
1021
|
-
argv[0] =
|
944
|
+
argv[0] = rb_ary_new_capa(cast->elements.size);
|
1022
945
|
for (size_t index = 0; index < cast->elements.size; index++) {
|
1023
946
|
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
1024
947
|
}
|
@@ -1044,7 +967,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1044
967
|
argv[0] = rb_ary_pop(value_stack);
|
1045
968
|
|
1046
969
|
// requireds
|
1047
|
-
argv[1] =
|
970
|
+
argv[1] = rb_ary_new_capa(cast->requireds.size);
|
1048
971
|
for (size_t index = 0; index < cast->requireds.size; index++) {
|
1049
972
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
1050
973
|
}
|
@@ -1053,7 +976,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1053
976
|
argv[2] = rb_ary_pop(value_stack);
|
1054
977
|
|
1055
978
|
// posts
|
1056
|
-
argv[3] =
|
979
|
+
argv[3] = rb_ary_new_capa(cast->posts.size);
|
1057
980
|
for (size_t index = 0; index < cast->posts.size; index++) {
|
1058
981
|
rb_ary_push(argv[3], rb_ary_pop(value_stack));
|
1059
982
|
}
|
@@ -1169,7 +1092,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1169
1092
|
VALUE argv[6];
|
1170
1093
|
|
1171
1094
|
// locals
|
1172
|
-
argv[0] =
|
1095
|
+
argv[0] = rb_ary_new_capa(cast->locals.size);
|
1173
1096
|
for (size_t index = 0; index < cast->locals.size; index++) {
|
1174
1097
|
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
1175
1098
|
}
|
@@ -1177,7 +1100,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1177
1100
|
// parameters
|
1178
1101
|
argv[1] = rb_ary_pop(value_stack);
|
1179
1102
|
|
1180
|
-
//
|
1103
|
+
// body
|
1181
1104
|
argv[2] = rb_ary_pop(value_stack);
|
1182
1105
|
|
1183
1106
|
// opening_loc
|
@@ -1218,7 +1141,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1218
1141
|
argv[0] = rb_ary_pop(value_stack);
|
1219
1142
|
|
1220
1143
|
// locals
|
1221
|
-
argv[1] =
|
1144
|
+
argv[1] = rb_ary_new_capa(cast->locals.size);
|
1222
1145
|
for (size_t index = 0; index < cast->locals.size; index++) {
|
1223
1146
|
yp_location_t location = cast->locals.locations[index];
|
1224
1147
|
rb_ary_push(argv[1], yp_location_new(parser, location.start, location.end, source));
|
@@ -1280,7 +1203,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1280
1203
|
argv[6] = rb_ary_pop(value_stack);
|
1281
1204
|
|
1282
1205
|
// flags
|
1283
|
-
argv[7] = ULONG2NUM(
|
1206
|
+
argv[7] = ULONG2NUM(node->flags >> 1);
|
1284
1207
|
|
1285
1208
|
// name
|
1286
1209
|
argv[8] = yp_string_new(&cast->name, encoding);
|
@@ -1383,7 +1306,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1383
1306
|
argv[0] = rb_ary_pop(value_stack);
|
1384
1307
|
|
1385
1308
|
// conditions
|
1386
|
-
argv[1] =
|
1309
|
+
argv[1] = rb_ary_new_capa(cast->conditions.size);
|
1387
1310
|
for (size_t index = 0; index < cast->conditions.size; index++) {
|
1388
1311
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
1389
1312
|
}
|
@@ -1409,7 +1332,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1409
1332
|
VALUE argv[8];
|
1410
1333
|
|
1411
1334
|
// locals
|
1412
|
-
argv[0] =
|
1335
|
+
argv[0] = rb_ary_new_capa(cast->locals.size);
|
1413
1336
|
for (size_t index = 0; index < cast->locals.size; index++) {
|
1414
1337
|
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
1415
1338
|
}
|
@@ -1426,7 +1349,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1426
1349
|
// superclass
|
1427
1350
|
argv[4] = rb_ary_pop(value_stack);
|
1428
1351
|
|
1429
|
-
//
|
1352
|
+
// body
|
1430
1353
|
argv[5] = rb_ary_pop(value_stack);
|
1431
1354
|
|
1432
1355
|
// end_keyword_loc
|
@@ -1438,69 +1361,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1438
1361
|
rb_ary_push(value_stack, rb_class_new_instance(8, argv, rb_cYARPClassNode));
|
1439
1362
|
break;
|
1440
1363
|
}
|
1441
|
-
#line 137 "api_node.c.erb"
|
1442
|
-
case YP_NODE_CLASS_VARIABLE_OPERATOR_AND_WRITE_NODE: {
|
1443
|
-
yp_class_variable_operator_and_write_node_t *cast = (yp_class_variable_operator_and_write_node_t *) node;
|
1444
|
-
VALUE argv[4];
|
1445
|
-
|
1446
|
-
// name_loc
|
1447
|
-
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
1448
|
-
|
1449
|
-
// operator_loc
|
1450
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1451
|
-
|
1452
|
-
// value
|
1453
|
-
argv[2] = rb_ary_pop(value_stack);
|
1454
|
-
|
1455
|
-
// location
|
1456
|
-
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
1457
|
-
|
1458
|
-
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPClassVariableOperatorAndWriteNode));
|
1459
|
-
break;
|
1460
|
-
}
|
1461
|
-
#line 137 "api_node.c.erb"
|
1462
|
-
case YP_NODE_CLASS_VARIABLE_OPERATOR_OR_WRITE_NODE: {
|
1463
|
-
yp_class_variable_operator_or_write_node_t *cast = (yp_class_variable_operator_or_write_node_t *) node;
|
1464
|
-
VALUE argv[4];
|
1465
|
-
|
1466
|
-
// name_loc
|
1467
|
-
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
1468
|
-
|
1469
|
-
// operator_loc
|
1470
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1471
|
-
|
1472
|
-
// value
|
1473
|
-
argv[2] = rb_ary_pop(value_stack);
|
1474
|
-
|
1475
|
-
// location
|
1476
|
-
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
1477
|
-
|
1478
|
-
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPClassVariableOperatorOrWriteNode));
|
1479
|
-
break;
|
1480
|
-
}
|
1481
|
-
#line 137 "api_node.c.erb"
|
1482
|
-
case YP_NODE_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
|
1483
|
-
yp_class_variable_operator_write_node_t *cast = (yp_class_variable_operator_write_node_t *) node;
|
1484
|
-
VALUE argv[5];
|
1485
|
-
|
1486
|
-
// name_loc
|
1487
|
-
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
1488
|
-
|
1489
|
-
// operator_loc
|
1490
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1491
|
-
|
1492
|
-
// value
|
1493
|
-
argv[2] = rb_ary_pop(value_stack);
|
1494
|
-
|
1495
|
-
// operator
|
1496
|
-
argv[3] = rb_id2sym(constants[cast->operator - 1]);
|
1497
|
-
|
1498
|
-
// location
|
1499
|
-
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
1500
|
-
|
1501
|
-
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPClassVariableOperatorWriteNode));
|
1502
|
-
break;
|
1503
|
-
}
|
1504
1364
|
#line 137 "api_node.c.erb"
|
1505
1365
|
case YP_NODE_CLASS_VARIABLE_READ_NODE: {
|
1506
1366
|
VALUE argv[1];
|
@@ -1531,69 +1391,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1531
1391
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPClassVariableWriteNode));
|
1532
1392
|
break;
|
1533
1393
|
}
|
1534
|
-
#line 137 "api_node.c.erb"
|
1535
|
-
case YP_NODE_CONSTANT_OPERATOR_AND_WRITE_NODE: {
|
1536
|
-
yp_constant_operator_and_write_node_t *cast = (yp_constant_operator_and_write_node_t *) node;
|
1537
|
-
VALUE argv[4];
|
1538
|
-
|
1539
|
-
// name_loc
|
1540
|
-
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
1541
|
-
|
1542
|
-
// operator_loc
|
1543
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1544
|
-
|
1545
|
-
// value
|
1546
|
-
argv[2] = rb_ary_pop(value_stack);
|
1547
|
-
|
1548
|
-
// location
|
1549
|
-
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
1550
|
-
|
1551
|
-
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantOperatorAndWriteNode));
|
1552
|
-
break;
|
1553
|
-
}
|
1554
|
-
#line 137 "api_node.c.erb"
|
1555
|
-
case YP_NODE_CONSTANT_OPERATOR_OR_WRITE_NODE: {
|
1556
|
-
yp_constant_operator_or_write_node_t *cast = (yp_constant_operator_or_write_node_t *) node;
|
1557
|
-
VALUE argv[4];
|
1558
|
-
|
1559
|
-
// name_loc
|
1560
|
-
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
1561
|
-
|
1562
|
-
// operator_loc
|
1563
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1564
|
-
|
1565
|
-
// value
|
1566
|
-
argv[2] = rb_ary_pop(value_stack);
|
1567
|
-
|
1568
|
-
// location
|
1569
|
-
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
1570
|
-
|
1571
|
-
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantOperatorOrWriteNode));
|
1572
|
-
break;
|
1573
|
-
}
|
1574
|
-
#line 137 "api_node.c.erb"
|
1575
|
-
case YP_NODE_CONSTANT_OPERATOR_WRITE_NODE: {
|
1576
|
-
yp_constant_operator_write_node_t *cast = (yp_constant_operator_write_node_t *) node;
|
1577
|
-
VALUE argv[5];
|
1578
|
-
|
1579
|
-
// name_loc
|
1580
|
-
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
1581
|
-
|
1582
|
-
// operator_loc
|
1583
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1584
|
-
|
1585
|
-
// value
|
1586
|
-
argv[2] = rb_ary_pop(value_stack);
|
1587
|
-
|
1588
|
-
// operator
|
1589
|
-
argv[3] = rb_id2sym(constants[cast->operator - 1]);
|
1590
|
-
|
1591
|
-
// location
|
1592
|
-
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
1593
|
-
|
1594
|
-
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPConstantOperatorWriteNode));
|
1595
|
-
break;
|
1596
|
-
}
|
1597
1394
|
#line 137 "api_node.c.erb"
|
1598
1395
|
case YP_NODE_CONSTANT_PATH_NODE: {
|
1599
1396
|
yp_constant_path_node_t *cast = (yp_constant_path_node_t *) node;
|
@@ -1614,69 +1411,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1614
1411
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantPathNode));
|
1615
1412
|
break;
|
1616
1413
|
}
|
1617
|
-
#line 137 "api_node.c.erb"
|
1618
|
-
case YP_NODE_CONSTANT_PATH_OPERATOR_AND_WRITE_NODE: {
|
1619
|
-
yp_constant_path_operator_and_write_node_t *cast = (yp_constant_path_operator_and_write_node_t *) node;
|
1620
|
-
VALUE argv[4];
|
1621
|
-
|
1622
|
-
// target
|
1623
|
-
argv[0] = rb_ary_pop(value_stack);
|
1624
|
-
|
1625
|
-
// operator_loc
|
1626
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1627
|
-
|
1628
|
-
// value
|
1629
|
-
argv[2] = rb_ary_pop(value_stack);
|
1630
|
-
|
1631
|
-
// location
|
1632
|
-
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
1633
|
-
|
1634
|
-
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantPathOperatorAndWriteNode));
|
1635
|
-
break;
|
1636
|
-
}
|
1637
|
-
#line 137 "api_node.c.erb"
|
1638
|
-
case YP_NODE_CONSTANT_PATH_OPERATOR_OR_WRITE_NODE: {
|
1639
|
-
yp_constant_path_operator_or_write_node_t *cast = (yp_constant_path_operator_or_write_node_t *) node;
|
1640
|
-
VALUE argv[4];
|
1641
|
-
|
1642
|
-
// target
|
1643
|
-
argv[0] = rb_ary_pop(value_stack);
|
1644
|
-
|
1645
|
-
// operator_loc
|
1646
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1647
|
-
|
1648
|
-
// value
|
1649
|
-
argv[2] = rb_ary_pop(value_stack);
|
1650
|
-
|
1651
|
-
// location
|
1652
|
-
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
1653
|
-
|
1654
|
-
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantPathOperatorOrWriteNode));
|
1655
|
-
break;
|
1656
|
-
}
|
1657
|
-
#line 137 "api_node.c.erb"
|
1658
|
-
case YP_NODE_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
|
1659
|
-
yp_constant_path_operator_write_node_t *cast = (yp_constant_path_operator_write_node_t *) node;
|
1660
|
-
VALUE argv[5];
|
1661
|
-
|
1662
|
-
// target
|
1663
|
-
argv[0] = rb_ary_pop(value_stack);
|
1664
|
-
|
1665
|
-
// operator_loc
|
1666
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1667
|
-
|
1668
|
-
// value
|
1669
|
-
argv[2] = rb_ary_pop(value_stack);
|
1670
|
-
|
1671
|
-
// operator
|
1672
|
-
argv[3] = rb_id2sym(constants[cast->operator - 1]);
|
1673
|
-
|
1674
|
-
// location
|
1675
|
-
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
1676
|
-
|
1677
|
-
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPConstantPathOperatorWriteNode));
|
1678
|
-
break;
|
1679
|
-
}
|
1680
1414
|
#line 137 "api_node.c.erb"
|
1681
1415
|
case YP_NODE_CONSTANT_PATH_WRITE_NODE: {
|
1682
1416
|
yp_constant_path_write_node_t *cast = (yp_constant_path_write_node_t *) node;
|
@@ -1741,11 +1475,11 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1741
1475
|
// parameters
|
1742
1476
|
argv[2] = rb_ary_pop(value_stack);
|
1743
1477
|
|
1744
|
-
//
|
1478
|
+
// body
|
1745
1479
|
argv[3] = rb_ary_pop(value_stack);
|
1746
1480
|
|
1747
1481
|
// locals
|
1748
|
-
argv[4] =
|
1482
|
+
argv[4] = rb_ary_new_capa(cast->locals.size);
|
1749
1483
|
for (size_t index = 0; index < cast->locals.size; index++) {
|
1750
1484
|
rb_ary_push(argv[4], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
1751
1485
|
}
|
@@ -1896,7 +1630,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1896
1630
|
argv[1] = rb_ary_pop(value_stack);
|
1897
1631
|
|
1898
1632
|
// requireds
|
1899
|
-
argv[2] =
|
1633
|
+
argv[2] = rb_ary_new_capa(cast->requireds.size);
|
1900
1634
|
for (size_t index = 0; index < cast->requireds.size; index++) {
|
1901
1635
|
rb_ary_push(argv[2], rb_ary_pop(value_stack));
|
1902
1636
|
}
|
@@ -1916,6 +1650,29 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1916
1650
|
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cYARPFindPatternNode));
|
1917
1651
|
break;
|
1918
1652
|
}
|
1653
|
+
#line 137 "api_node.c.erb"
|
1654
|
+
case YP_NODE_FLIP_FLOP_NODE: {
|
1655
|
+
yp_flip_flop_node_t *cast = (yp_flip_flop_node_t *) node;
|
1656
|
+
VALUE argv[5];
|
1657
|
+
|
1658
|
+
// left
|
1659
|
+
argv[0] = rb_ary_pop(value_stack);
|
1660
|
+
|
1661
|
+
// right
|
1662
|
+
argv[1] = rb_ary_pop(value_stack);
|
1663
|
+
|
1664
|
+
// operator_loc
|
1665
|
+
argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1666
|
+
|
1667
|
+
// flags
|
1668
|
+
argv[3] = ULONG2NUM(node->flags >> 1);
|
1669
|
+
|
1670
|
+
// location
|
1671
|
+
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
1672
|
+
|
1673
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPFlipFlopNode));
|
1674
|
+
break;
|
1675
|
+
}
|
1919
1676
|
#line 137 "api_node.c.erb"
|
1920
1677
|
case YP_NODE_FLOAT_NODE: {
|
1921
1678
|
VALUE argv[1];
|
@@ -1991,69 +1748,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
1991
1748
|
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cYARPForwardingSuperNode));
|
1992
1749
|
break;
|
1993
1750
|
}
|
1994
|
-
#line 137 "api_node.c.erb"
|
1995
|
-
case YP_NODE_GLOBAL_VARIABLE_OPERATOR_AND_WRITE_NODE: {
|
1996
|
-
yp_global_variable_operator_and_write_node_t *cast = (yp_global_variable_operator_and_write_node_t *) node;
|
1997
|
-
VALUE argv[4];
|
1998
|
-
|
1999
|
-
// name_loc
|
2000
|
-
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2001
|
-
|
2002
|
-
// operator_loc
|
2003
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2004
|
-
|
2005
|
-
// value
|
2006
|
-
argv[2] = rb_ary_pop(value_stack);
|
2007
|
-
|
2008
|
-
// location
|
2009
|
-
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
2010
|
-
|
2011
|
-
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPGlobalVariableOperatorAndWriteNode));
|
2012
|
-
break;
|
2013
|
-
}
|
2014
|
-
#line 137 "api_node.c.erb"
|
2015
|
-
case YP_NODE_GLOBAL_VARIABLE_OPERATOR_OR_WRITE_NODE: {
|
2016
|
-
yp_global_variable_operator_or_write_node_t *cast = (yp_global_variable_operator_or_write_node_t *) node;
|
2017
|
-
VALUE argv[4];
|
2018
|
-
|
2019
|
-
// name_loc
|
2020
|
-
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2021
|
-
|
2022
|
-
// operator_loc
|
2023
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2024
|
-
|
2025
|
-
// value
|
2026
|
-
argv[2] = rb_ary_pop(value_stack);
|
2027
|
-
|
2028
|
-
// location
|
2029
|
-
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
2030
|
-
|
2031
|
-
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPGlobalVariableOperatorOrWriteNode));
|
2032
|
-
break;
|
2033
|
-
}
|
2034
|
-
#line 137 "api_node.c.erb"
|
2035
|
-
case YP_NODE_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
2036
|
-
yp_global_variable_operator_write_node_t *cast = (yp_global_variable_operator_write_node_t *) node;
|
2037
|
-
VALUE argv[5];
|
2038
|
-
|
2039
|
-
// name_loc
|
2040
|
-
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2041
|
-
|
2042
|
-
// operator_loc
|
2043
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2044
|
-
|
2045
|
-
// value
|
2046
|
-
argv[2] = rb_ary_pop(value_stack);
|
2047
|
-
|
2048
|
-
// operator
|
2049
|
-
argv[3] = rb_id2sym(constants[cast->operator - 1]);
|
2050
|
-
|
2051
|
-
// location
|
2052
|
-
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
2053
|
-
|
2054
|
-
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPGlobalVariableOperatorWriteNode));
|
2055
|
-
break;
|
2056
|
-
}
|
2057
1751
|
#line 137 "api_node.c.erb"
|
2058
1752
|
case YP_NODE_GLOBAL_VARIABLE_READ_NODE: {
|
2059
1753
|
VALUE argv[1];
|
@@ -2093,7 +1787,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2093
1787
|
argv[0] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
2094
1788
|
|
2095
1789
|
// elements
|
2096
|
-
argv[1] =
|
1790
|
+
argv[1] = rb_ary_new_capa(cast->elements.size);
|
2097
1791
|
for (size_t index = 0; index < cast->elements.size; index++) {
|
2098
1792
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
2099
1793
|
}
|
@@ -2116,7 +1810,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2116
1810
|
argv[0] = rb_ary_pop(value_stack);
|
2117
1811
|
|
2118
1812
|
// assocs
|
2119
|
-
argv[1] =
|
1813
|
+
argv[1] = rb_ary_new_capa(cast->assocs.size);
|
2120
1814
|
for (size_t index = 0; index < cast->assocs.size; index++) {
|
2121
1815
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
2122
1816
|
}
|
@@ -2198,69 +1892,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2198
1892
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPInNode));
|
2199
1893
|
break;
|
2200
1894
|
}
|
2201
|
-
#line 137 "api_node.c.erb"
|
2202
|
-
case YP_NODE_INSTANCE_VARIABLE_OPERATOR_AND_WRITE_NODE: {
|
2203
|
-
yp_instance_variable_operator_and_write_node_t *cast = (yp_instance_variable_operator_and_write_node_t *) node;
|
2204
|
-
VALUE argv[4];
|
2205
|
-
|
2206
|
-
// name_loc
|
2207
|
-
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2208
|
-
|
2209
|
-
// operator_loc
|
2210
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2211
|
-
|
2212
|
-
// value
|
2213
|
-
argv[2] = rb_ary_pop(value_stack);
|
2214
|
-
|
2215
|
-
// location
|
2216
|
-
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
2217
|
-
|
2218
|
-
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPInstanceVariableOperatorAndWriteNode));
|
2219
|
-
break;
|
2220
|
-
}
|
2221
|
-
#line 137 "api_node.c.erb"
|
2222
|
-
case YP_NODE_INSTANCE_VARIABLE_OPERATOR_OR_WRITE_NODE: {
|
2223
|
-
yp_instance_variable_operator_or_write_node_t *cast = (yp_instance_variable_operator_or_write_node_t *) node;
|
2224
|
-
VALUE argv[4];
|
2225
|
-
|
2226
|
-
// name_loc
|
2227
|
-
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2228
|
-
|
2229
|
-
// operator_loc
|
2230
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2231
|
-
|
2232
|
-
// value
|
2233
|
-
argv[2] = rb_ary_pop(value_stack);
|
2234
|
-
|
2235
|
-
// location
|
2236
|
-
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
2237
|
-
|
2238
|
-
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPInstanceVariableOperatorOrWriteNode));
|
2239
|
-
break;
|
2240
|
-
}
|
2241
|
-
#line 137 "api_node.c.erb"
|
2242
|
-
case YP_NODE_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
|
2243
|
-
yp_instance_variable_operator_write_node_t *cast = (yp_instance_variable_operator_write_node_t *) node;
|
2244
|
-
VALUE argv[5];
|
2245
|
-
|
2246
|
-
// name_loc
|
2247
|
-
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2248
|
-
|
2249
|
-
// operator_loc
|
2250
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2251
|
-
|
2252
|
-
// value
|
2253
|
-
argv[2] = rb_ary_pop(value_stack);
|
2254
|
-
|
2255
|
-
// operator
|
2256
|
-
argv[3] = rb_id2sym(constants[cast->operator - 1]);
|
2257
|
-
|
2258
|
-
// location
|
2259
|
-
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
2260
|
-
|
2261
|
-
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPInstanceVariableOperatorWriteNode));
|
2262
|
-
break;
|
2263
|
-
}
|
2264
1895
|
#line 137 "api_node.c.erb"
|
2265
1896
|
case YP_NODE_INSTANCE_VARIABLE_READ_NODE: {
|
2266
1897
|
VALUE argv[1];
|
@@ -2310,7 +1941,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2310
1941
|
argv[0] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
2311
1942
|
|
2312
1943
|
// parts
|
2313
|
-
argv[1] =
|
1944
|
+
argv[1] = rb_ary_new_capa(cast->parts.size);
|
2314
1945
|
for (size_t index = 0; index < cast->parts.size; index++) {
|
2315
1946
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
2316
1947
|
}
|
@@ -2319,7 +1950,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2319
1950
|
argv[2] = yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
2320
1951
|
|
2321
1952
|
// flags
|
2322
|
-
argv[3] = ULONG2NUM(
|
1953
|
+
argv[3] = ULONG2NUM(node->flags >> 1);
|
2323
1954
|
|
2324
1955
|
// location
|
2325
1956
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
@@ -2336,7 +1967,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2336
1967
|
argv[0] = cast->opening_loc.start == NULL ? Qnil : yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
2337
1968
|
|
2338
1969
|
// parts
|
2339
|
-
argv[1] =
|
1970
|
+
argv[1] = rb_ary_new_capa(cast->parts.size);
|
2340
1971
|
for (size_t index = 0; index < cast->parts.size; index++) {
|
2341
1972
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
2342
1973
|
}
|
@@ -2359,7 +1990,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2359
1990
|
argv[0] = cast->opening_loc.start == NULL ? Qnil : yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
2360
1991
|
|
2361
1992
|
// parts
|
2362
|
-
argv[1] =
|
1993
|
+
argv[1] = rb_ary_new_capa(cast->parts.size);
|
2363
1994
|
for (size_t index = 0; index < cast->parts.size; index++) {
|
2364
1995
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
2365
1996
|
}
|
@@ -2382,7 +2013,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2382
2013
|
argv[0] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
2383
2014
|
|
2384
2015
|
// parts
|
2385
|
-
argv[1] =
|
2016
|
+
argv[1] = rb_ary_new_capa(cast->parts.size);
|
2386
2017
|
for (size_t index = 0; index < cast->parts.size; index++) {
|
2387
2018
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
2388
2019
|
}
|
@@ -2402,7 +2033,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2402
2033
|
VALUE argv[2];
|
2403
2034
|
|
2404
2035
|
// elements
|
2405
|
-
argv[0] =
|
2036
|
+
argv[0] = rb_ary_new_capa(cast->elements.size);
|
2406
2037
|
for (size_t index = 0; index < cast->elements.size; index++) {
|
2407
2038
|
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
2408
2039
|
}
|
@@ -2453,7 +2084,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2453
2084
|
VALUE argv[5];
|
2454
2085
|
|
2455
2086
|
// locals
|
2456
|
-
argv[0] =
|
2087
|
+
argv[0] = rb_ary_new_capa(cast->locals.size);
|
2457
2088
|
for (size_t index = 0; index < cast->locals.size; index++) {
|
2458
2089
|
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
2459
2090
|
}
|
@@ -2464,7 +2095,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2464
2095
|
// parameters
|
2465
2096
|
argv[2] = rb_ary_pop(value_stack);
|
2466
2097
|
|
2467
|
-
//
|
2098
|
+
// body
|
2468
2099
|
argv[3] = rb_ary_pop(value_stack);
|
2469
2100
|
|
2470
2101
|
// location
|
@@ -2473,78 +2104,6 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2473
2104
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPLambdaNode));
|
2474
2105
|
break;
|
2475
2106
|
}
|
2476
|
-
#line 137 "api_node.c.erb"
|
2477
|
-
case YP_NODE_LOCAL_VARIABLE_OPERATOR_AND_WRITE_NODE: {
|
2478
|
-
yp_local_variable_operator_and_write_node_t *cast = (yp_local_variable_operator_and_write_node_t *) node;
|
2479
|
-
VALUE argv[5];
|
2480
|
-
|
2481
|
-
// name_loc
|
2482
|
-
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2483
|
-
|
2484
|
-
// operator_loc
|
2485
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2486
|
-
|
2487
|
-
// value
|
2488
|
-
argv[2] = rb_ary_pop(value_stack);
|
2489
|
-
|
2490
|
-
// constant_id
|
2491
|
-
argv[3] = rb_id2sym(constants[cast->constant_id - 1]);
|
2492
|
-
|
2493
|
-
// location
|
2494
|
-
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
2495
|
-
|
2496
|
-
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPLocalVariableOperatorAndWriteNode));
|
2497
|
-
break;
|
2498
|
-
}
|
2499
|
-
#line 137 "api_node.c.erb"
|
2500
|
-
case YP_NODE_LOCAL_VARIABLE_OPERATOR_OR_WRITE_NODE: {
|
2501
|
-
yp_local_variable_operator_or_write_node_t *cast = (yp_local_variable_operator_or_write_node_t *) node;
|
2502
|
-
VALUE argv[5];
|
2503
|
-
|
2504
|
-
// name_loc
|
2505
|
-
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2506
|
-
|
2507
|
-
// operator_loc
|
2508
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2509
|
-
|
2510
|
-
// value
|
2511
|
-
argv[2] = rb_ary_pop(value_stack);
|
2512
|
-
|
2513
|
-
// constant_id
|
2514
|
-
argv[3] = rb_id2sym(constants[cast->constant_id - 1]);
|
2515
|
-
|
2516
|
-
// location
|
2517
|
-
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
2518
|
-
|
2519
|
-
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPLocalVariableOperatorOrWriteNode));
|
2520
|
-
break;
|
2521
|
-
}
|
2522
|
-
#line 137 "api_node.c.erb"
|
2523
|
-
case YP_NODE_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
2524
|
-
yp_local_variable_operator_write_node_t *cast = (yp_local_variable_operator_write_node_t *) node;
|
2525
|
-
VALUE argv[6];
|
2526
|
-
|
2527
|
-
// name_loc
|
2528
|
-
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2529
|
-
|
2530
|
-
// operator_loc
|
2531
|
-
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2532
|
-
|
2533
|
-
// value
|
2534
|
-
argv[2] = rb_ary_pop(value_stack);
|
2535
|
-
|
2536
|
-
// constant_id
|
2537
|
-
argv[3] = rb_id2sym(constants[cast->constant_id - 1]);
|
2538
|
-
|
2539
|
-
// operator_id
|
2540
|
-
argv[4] = rb_id2sym(constants[cast->operator_id - 1]);
|
2541
|
-
|
2542
|
-
// location
|
2543
|
-
argv[5] = yp_location_new(parser, node->location.start, node->location.end, source);
|
2544
|
-
|
2545
|
-
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPLocalVariableOperatorWriteNode));
|
2546
|
-
break;
|
2547
|
-
}
|
2548
2107
|
#line 137 "api_node.c.erb"
|
2549
2108
|
case YP_NODE_LOCAL_VARIABLE_READ_NODE: {
|
2550
2109
|
yp_local_variable_read_node_t *cast = (yp_local_variable_read_node_t *) node;
|
@@ -2644,7 +2203,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2644
2203
|
VALUE argv[6];
|
2645
2204
|
|
2646
2205
|
// locals
|
2647
|
-
argv[0] =
|
2206
|
+
argv[0] = rb_ary_new_capa(cast->locals.size);
|
2648
2207
|
for (size_t index = 0; index < cast->locals.size; index++) {
|
2649
2208
|
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
2650
2209
|
}
|
@@ -2655,7 +2214,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2655
2214
|
// constant_path
|
2656
2215
|
argv[2] = rb_ary_pop(value_stack);
|
2657
2216
|
|
2658
|
-
//
|
2217
|
+
// body
|
2659
2218
|
argv[3] = rb_ary_pop(value_stack);
|
2660
2219
|
|
2661
2220
|
// end_keyword_loc
|
@@ -2673,7 +2232,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2673
2232
|
VALUE argv[6];
|
2674
2233
|
|
2675
2234
|
// targets
|
2676
|
-
argv[0] =
|
2235
|
+
argv[0] = rb_ary_new_capa(cast->targets.size);
|
2677
2236
|
for (size_t index = 0; index < cast->targets.size; index++) {
|
2678
2237
|
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
2679
2238
|
}
|
@@ -2750,6 +2309,29 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2750
2309
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPNumberedReferenceReadNode));
|
2751
2310
|
break;
|
2752
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
|
+
}
|
2753
2335
|
#line 137 "api_node.c.erb"
|
2754
2336
|
case YP_NODE_OPTIONAL_PARAMETER_NODE: {
|
2755
2337
|
yp_optional_parameter_node_t *cast = (yp_optional_parameter_node_t *) node;
|
@@ -2793,25 +2375,45 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2793
2375
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPOrNode));
|
2794
2376
|
break;
|
2795
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
|
+
}
|
2796
2398
|
#line 137 "api_node.c.erb"
|
2797
2399
|
case YP_NODE_PARAMETERS_NODE: {
|
2798
2400
|
yp_parameters_node_t *cast = (yp_parameters_node_t *) node;
|
2799
2401
|
VALUE argv[8];
|
2800
2402
|
|
2801
2403
|
// requireds
|
2802
|
-
argv[0] =
|
2404
|
+
argv[0] = rb_ary_new_capa(cast->requireds.size);
|
2803
2405
|
for (size_t index = 0; index < cast->requireds.size; index++) {
|
2804
2406
|
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
2805
2407
|
}
|
2806
2408
|
|
2807
2409
|
// optionals
|
2808
|
-
argv[1] =
|
2410
|
+
argv[1] = rb_ary_new_capa(cast->optionals.size);
|
2809
2411
|
for (size_t index = 0; index < cast->optionals.size; index++) {
|
2810
2412
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
2811
2413
|
}
|
2812
2414
|
|
2813
2415
|
// posts
|
2814
|
-
argv[2] =
|
2416
|
+
argv[2] = rb_ary_new_capa(cast->posts.size);
|
2815
2417
|
for (size_t index = 0; index < cast->posts.size; index++) {
|
2816
2418
|
rb_ary_push(argv[2], rb_ary_pop(value_stack));
|
2817
2419
|
}
|
@@ -2820,7 +2422,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2820
2422
|
argv[3] = rb_ary_pop(value_stack);
|
2821
2423
|
|
2822
2424
|
// keywords
|
2823
|
-
argv[4] =
|
2425
|
+
argv[4] = rb_ary_new_capa(cast->keywords.size);
|
2824
2426
|
for (size_t index = 0; index < cast->keywords.size; index++) {
|
2825
2427
|
rb_ary_push(argv[4], rb_ary_pop(value_stack));
|
2826
2428
|
}
|
@@ -2842,7 +2444,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2842
2444
|
yp_parentheses_node_t *cast = (yp_parentheses_node_t *) node;
|
2843
2445
|
VALUE argv[4];
|
2844
2446
|
|
2845
|
-
//
|
2447
|
+
// body
|
2846
2448
|
argv[0] = rb_ary_pop(value_stack);
|
2847
2449
|
|
2848
2450
|
// opening_loc
|
@@ -2949,7 +2551,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2949
2551
|
VALUE argv[3];
|
2950
2552
|
|
2951
2553
|
// locals
|
2952
|
-
argv[0] =
|
2554
|
+
argv[0] = rb_ary_new_capa(cast->locals.size);
|
2953
2555
|
for (size_t index = 0; index < cast->locals.size; index++) {
|
2954
2556
|
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
2955
2557
|
}
|
@@ -2978,7 +2580,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
2978
2580
|
argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2979
2581
|
|
2980
2582
|
// flags
|
2981
|
-
argv[3] = ULONG2NUM(
|
2583
|
+
argv[3] = ULONG2NUM(node->flags >> 1);
|
2982
2584
|
|
2983
2585
|
// location
|
2984
2586
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
@@ -3027,7 +2629,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
3027
2629
|
argv[3] = yp_string_new(&cast->unescaped, encoding);
|
3028
2630
|
|
3029
2631
|
// flags
|
3030
|
-
argv[4] = ULONG2NUM(
|
2632
|
+
argv[4] = ULONG2NUM(node->flags >> 1);
|
3031
2633
|
|
3032
2634
|
// location
|
3033
2635
|
argv[5] = yp_location_new(parser, node->location.start, node->location.end, source);
|
@@ -3041,7 +2643,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
3041
2643
|
VALUE argv[4];
|
3042
2644
|
|
3043
2645
|
// parameters
|
3044
|
-
argv[0] =
|
2646
|
+
argv[0] = rb_ary_new_capa(cast->parameters.size);
|
3045
2647
|
for (size_t index = 0; index < cast->parameters.size; index++) {
|
3046
2648
|
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
3047
2649
|
}
|
@@ -3101,7 +2703,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
3101
2703
|
argv[0] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
3102
2704
|
|
3103
2705
|
// exceptions
|
3104
|
-
argv[1] =
|
2706
|
+
argv[1] = rb_ary_new_capa(cast->exceptions.size);
|
3105
2707
|
for (size_t index = 0; index < cast->exceptions.size; index++) {
|
3106
2708
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
3107
2709
|
}
|
@@ -3184,7 +2786,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
3184
2786
|
VALUE argv[7];
|
3185
2787
|
|
3186
2788
|
// locals
|
3187
|
-
argv[0] =
|
2789
|
+
argv[0] = rb_ary_new_capa(cast->locals.size);
|
3188
2790
|
for (size_t index = 0; index < cast->locals.size; index++) {
|
3189
2791
|
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
3190
2792
|
}
|
@@ -3198,7 +2800,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
3198
2800
|
// expression
|
3199
2801
|
argv[3] = rb_ary_pop(value_stack);
|
3200
2802
|
|
3201
|
-
//
|
2803
|
+
// body
|
3202
2804
|
argv[4] = rb_ary_pop(value_stack);
|
3203
2805
|
|
3204
2806
|
// end_keyword_loc
|
@@ -3267,7 +2869,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
3267
2869
|
VALUE argv[2];
|
3268
2870
|
|
3269
2871
|
// body
|
3270
|
-
argv[0] =
|
2872
|
+
argv[0] = rb_ary_new_capa(cast->body.size);
|
3271
2873
|
for (size_t index = 0; index < cast->body.size; index++) {
|
3272
2874
|
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
3273
2875
|
}
|
@@ -3382,7 +2984,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
3382
2984
|
VALUE argv[3];
|
3383
2985
|
|
3384
2986
|
// names
|
3385
|
-
argv[0] =
|
2987
|
+
argv[0] = rb_ary_new_capa(cast->names.size);
|
3386
2988
|
for (size_t index = 0; index < cast->names.size; index++) {
|
3387
2989
|
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
3388
2990
|
}
|
@@ -3437,7 +3039,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
3437
3039
|
argv[2] = rb_ary_pop(value_stack);
|
3438
3040
|
|
3439
3041
|
// flags
|
3440
|
-
argv[3] = ULONG2NUM(
|
3042
|
+
argv[3] = ULONG2NUM(node->flags >> 1);
|
3441
3043
|
|
3442
3044
|
// location
|
3443
3045
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
@@ -3454,7 +3056,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
3454
3056
|
argv[0] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
3455
3057
|
|
3456
3058
|
// conditions
|
3457
|
-
argv[1] =
|
3059
|
+
argv[1] = rb_ary_new_capa(cast->conditions.size);
|
3458
3060
|
for (size_t index = 0; index < cast->conditions.size; index++) {
|
3459
3061
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
3460
3062
|
}
|
@@ -3483,7 +3085,7 @@ yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
3483
3085
|
argv[2] = rb_ary_pop(value_stack);
|
3484
3086
|
|
3485
3087
|
// flags
|
3486
|
-
argv[3] = ULONG2NUM(
|
3088
|
+
argv[3] = ULONG2NUM(node->flags >> 1);
|
3487
3089
|
|
3488
3090
|
// location
|
3489
3091
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
@@ -3553,6 +3155,7 @@ Init_yarp_api_node(void) {
|
|
3553
3155
|
rb_cYARPAliasNode = rb_define_class_under(rb_cYARP, "AliasNode", rb_cYARPNode);
|
3554
3156
|
rb_cYARPAlternationPatternNode = rb_define_class_under(rb_cYARP, "AlternationPatternNode", rb_cYARPNode);
|
3555
3157
|
rb_cYARPAndNode = rb_define_class_under(rb_cYARP, "AndNode", rb_cYARPNode);
|
3158
|
+
rb_cYARPAndWriteNode = rb_define_class_under(rb_cYARP, "AndWriteNode", rb_cYARPNode);
|
3556
3159
|
rb_cYARPArgumentsNode = rb_define_class_under(rb_cYARP, "ArgumentsNode", rb_cYARPNode);
|
3557
3160
|
rb_cYARPArrayNode = rb_define_class_under(rb_cYARP, "ArrayNode", rb_cYARPNode);
|
3558
3161
|
rb_cYARPArrayPatternNode = rb_define_class_under(rb_cYARP, "ArrayPatternNode", rb_cYARPNode);
|
@@ -3572,18 +3175,9 @@ Init_yarp_api_node(void) {
|
|
3572
3175
|
rb_cYARPCapturePatternNode = rb_define_class_under(rb_cYARP, "CapturePatternNode", rb_cYARPNode);
|
3573
3176
|
rb_cYARPCaseNode = rb_define_class_under(rb_cYARP, "CaseNode", rb_cYARPNode);
|
3574
3177
|
rb_cYARPClassNode = rb_define_class_under(rb_cYARP, "ClassNode", rb_cYARPNode);
|
3575
|
-
rb_cYARPClassVariableOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "ClassVariableOperatorAndWriteNode", rb_cYARPNode);
|
3576
|
-
rb_cYARPClassVariableOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "ClassVariableOperatorOrWriteNode", rb_cYARPNode);
|
3577
|
-
rb_cYARPClassVariableOperatorWriteNode = rb_define_class_under(rb_cYARP, "ClassVariableOperatorWriteNode", rb_cYARPNode);
|
3578
3178
|
rb_cYARPClassVariableReadNode = rb_define_class_under(rb_cYARP, "ClassVariableReadNode", rb_cYARPNode);
|
3579
3179
|
rb_cYARPClassVariableWriteNode = rb_define_class_under(rb_cYARP, "ClassVariableWriteNode", rb_cYARPNode);
|
3580
|
-
rb_cYARPConstantOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "ConstantOperatorAndWriteNode", rb_cYARPNode);
|
3581
|
-
rb_cYARPConstantOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "ConstantOperatorOrWriteNode", rb_cYARPNode);
|
3582
|
-
rb_cYARPConstantOperatorWriteNode = rb_define_class_under(rb_cYARP, "ConstantOperatorWriteNode", rb_cYARPNode);
|
3583
3180
|
rb_cYARPConstantPathNode = rb_define_class_under(rb_cYARP, "ConstantPathNode", rb_cYARPNode);
|
3584
|
-
rb_cYARPConstantPathOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "ConstantPathOperatorAndWriteNode", rb_cYARPNode);
|
3585
|
-
rb_cYARPConstantPathOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "ConstantPathOperatorOrWriteNode", rb_cYARPNode);
|
3586
|
-
rb_cYARPConstantPathOperatorWriteNode = rb_define_class_under(rb_cYARP, "ConstantPathOperatorWriteNode", rb_cYARPNode);
|
3587
3181
|
rb_cYARPConstantPathWriteNode = rb_define_class_under(rb_cYARP, "ConstantPathWriteNode", rb_cYARPNode);
|
3588
3182
|
rb_cYARPConstantReadNode = rb_define_class_under(rb_cYARP, "ConstantReadNode", rb_cYARPNode);
|
3589
3183
|
rb_cYARPConstantWriteNode = rb_define_class_under(rb_cYARP, "ConstantWriteNode", rb_cYARPNode);
|
@@ -3595,14 +3189,12 @@ Init_yarp_api_node(void) {
|
|
3595
3189
|
rb_cYARPEnsureNode = rb_define_class_under(rb_cYARP, "EnsureNode", rb_cYARPNode);
|
3596
3190
|
rb_cYARPFalseNode = rb_define_class_under(rb_cYARP, "FalseNode", rb_cYARPNode);
|
3597
3191
|
rb_cYARPFindPatternNode = rb_define_class_under(rb_cYARP, "FindPatternNode", rb_cYARPNode);
|
3192
|
+
rb_cYARPFlipFlopNode = rb_define_class_under(rb_cYARP, "FlipFlopNode", rb_cYARPNode);
|
3598
3193
|
rb_cYARPFloatNode = rb_define_class_under(rb_cYARP, "FloatNode", rb_cYARPNode);
|
3599
3194
|
rb_cYARPForNode = rb_define_class_under(rb_cYARP, "ForNode", rb_cYARPNode);
|
3600
3195
|
rb_cYARPForwardingArgumentsNode = rb_define_class_under(rb_cYARP, "ForwardingArgumentsNode", rb_cYARPNode);
|
3601
3196
|
rb_cYARPForwardingParameterNode = rb_define_class_under(rb_cYARP, "ForwardingParameterNode", rb_cYARPNode);
|
3602
3197
|
rb_cYARPForwardingSuperNode = rb_define_class_under(rb_cYARP, "ForwardingSuperNode", rb_cYARPNode);
|
3603
|
-
rb_cYARPGlobalVariableOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "GlobalVariableOperatorAndWriteNode", rb_cYARPNode);
|
3604
|
-
rb_cYARPGlobalVariableOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "GlobalVariableOperatorOrWriteNode", rb_cYARPNode);
|
3605
|
-
rb_cYARPGlobalVariableOperatorWriteNode = rb_define_class_under(rb_cYARP, "GlobalVariableOperatorWriteNode", rb_cYARPNode);
|
3606
3198
|
rb_cYARPGlobalVariableReadNode = rb_define_class_under(rb_cYARP, "GlobalVariableReadNode", rb_cYARPNode);
|
3607
3199
|
rb_cYARPGlobalVariableWriteNode = rb_define_class_under(rb_cYARP, "GlobalVariableWriteNode", rb_cYARPNode);
|
3608
3200
|
rb_cYARPHashNode = rb_define_class_under(rb_cYARP, "HashNode", rb_cYARPNode);
|
@@ -3610,9 +3202,6 @@ Init_yarp_api_node(void) {
|
|
3610
3202
|
rb_cYARPIfNode = rb_define_class_under(rb_cYARP, "IfNode", rb_cYARPNode);
|
3611
3203
|
rb_cYARPImaginaryNode = rb_define_class_under(rb_cYARP, "ImaginaryNode", rb_cYARPNode);
|
3612
3204
|
rb_cYARPInNode = rb_define_class_under(rb_cYARP, "InNode", rb_cYARPNode);
|
3613
|
-
rb_cYARPInstanceVariableOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "InstanceVariableOperatorAndWriteNode", rb_cYARPNode);
|
3614
|
-
rb_cYARPInstanceVariableOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "InstanceVariableOperatorOrWriteNode", rb_cYARPNode);
|
3615
|
-
rb_cYARPInstanceVariableOperatorWriteNode = rb_define_class_under(rb_cYARP, "InstanceVariableOperatorWriteNode", rb_cYARPNode);
|
3616
3205
|
rb_cYARPInstanceVariableReadNode = rb_define_class_under(rb_cYARP, "InstanceVariableReadNode", rb_cYARPNode);
|
3617
3206
|
rb_cYARPInstanceVariableWriteNode = rb_define_class_under(rb_cYARP, "InstanceVariableWriteNode", rb_cYARPNode);
|
3618
3207
|
rb_cYARPIntegerNode = rb_define_class_under(rb_cYARP, "IntegerNode", rb_cYARPNode);
|
@@ -3624,9 +3213,6 @@ Init_yarp_api_node(void) {
|
|
3624
3213
|
rb_cYARPKeywordParameterNode = rb_define_class_under(rb_cYARP, "KeywordParameterNode", rb_cYARPNode);
|
3625
3214
|
rb_cYARPKeywordRestParameterNode = rb_define_class_under(rb_cYARP, "KeywordRestParameterNode", rb_cYARPNode);
|
3626
3215
|
rb_cYARPLambdaNode = rb_define_class_under(rb_cYARP, "LambdaNode", rb_cYARPNode);
|
3627
|
-
rb_cYARPLocalVariableOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "LocalVariableOperatorAndWriteNode", rb_cYARPNode);
|
3628
|
-
rb_cYARPLocalVariableOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "LocalVariableOperatorOrWriteNode", rb_cYARPNode);
|
3629
|
-
rb_cYARPLocalVariableOperatorWriteNode = rb_define_class_under(rb_cYARP, "LocalVariableOperatorWriteNode", rb_cYARPNode);
|
3630
3216
|
rb_cYARPLocalVariableReadNode = rb_define_class_under(rb_cYARP, "LocalVariableReadNode", rb_cYARPNode);
|
3631
3217
|
rb_cYARPLocalVariableWriteNode = rb_define_class_under(rb_cYARP, "LocalVariableWriteNode", rb_cYARPNode);
|
3632
3218
|
rb_cYARPMatchPredicateNode = rb_define_class_under(rb_cYARP, "MatchPredicateNode", rb_cYARPNode);
|
@@ -3638,8 +3224,10 @@ Init_yarp_api_node(void) {
|
|
3638
3224
|
rb_cYARPNilNode = rb_define_class_under(rb_cYARP, "NilNode", rb_cYARPNode);
|
3639
3225
|
rb_cYARPNoKeywordsParameterNode = rb_define_class_under(rb_cYARP, "NoKeywordsParameterNode", rb_cYARPNode);
|
3640
3226
|
rb_cYARPNumberedReferenceReadNode = rb_define_class_under(rb_cYARP, "NumberedReferenceReadNode", rb_cYARPNode);
|
3227
|
+
rb_cYARPOperatorWriteNode = rb_define_class_under(rb_cYARP, "OperatorWriteNode", rb_cYARPNode);
|
3641
3228
|
rb_cYARPOptionalParameterNode = rb_define_class_under(rb_cYARP, "OptionalParameterNode", rb_cYARPNode);
|
3642
3229
|
rb_cYARPOrNode = rb_define_class_under(rb_cYARP, "OrNode", rb_cYARPNode);
|
3230
|
+
rb_cYARPOrWriteNode = rb_define_class_under(rb_cYARP, "OrWriteNode", rb_cYARPNode);
|
3643
3231
|
rb_cYARPParametersNode = rb_define_class_under(rb_cYARP, "ParametersNode", rb_cYARPNode);
|
3644
3232
|
rb_cYARPParenthesesNode = rb_define_class_under(rb_cYARP, "ParenthesesNode", rb_cYARPNode);
|
3645
3233
|
rb_cYARPPinnedExpressionNode = rb_define_class_under(rb_cYARP, "PinnedExpressionNode", rb_cYARPNode);
|