prism 0.17.1 → 0.19.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 +60 -1
- data/Makefile +5 -5
- data/README.md +4 -3
- data/config.yml +214 -68
- data/docs/build_system.md +6 -6
- data/docs/building.md +10 -3
- data/docs/configuration.md +11 -9
- data/docs/encoding.md +92 -88
- data/docs/heredocs.md +1 -1
- data/docs/javascript.md +29 -1
- data/docs/local_variable_depth.md +229 -0
- data/docs/ruby_api.md +16 -0
- data/docs/serialization.md +18 -13
- data/ext/prism/api_node.c +411 -240
- data/ext/prism/extconf.rb +97 -127
- data/ext/prism/extension.c +97 -33
- data/ext/prism/extension.h +1 -1
- data/include/prism/ast.h +377 -159
- data/include/prism/defines.h +17 -0
- data/include/prism/diagnostic.h +38 -6
- data/include/prism/{enc/pm_encoding.h → encoding.h} +126 -64
- data/include/prism/options.h +2 -2
- data/include/prism/parser.h +62 -36
- data/include/prism/regexp.h +2 -2
- data/include/prism/util/pm_buffer.h +9 -1
- data/include/prism/util/pm_memchr.h +2 -2
- data/include/prism/util/pm_strpbrk.h +3 -3
- data/include/prism/version.h +3 -3
- data/include/prism.h +13 -15
- data/lib/prism/compiler.rb +15 -3
- data/lib/prism/debug.rb +13 -4
- data/lib/prism/desugar_compiler.rb +4 -3
- data/lib/prism/dispatcher.rb +70 -14
- data/lib/prism/dot_visitor.rb +4612 -0
- data/lib/prism/dsl.rb +77 -57
- data/lib/prism/ffi.rb +19 -6
- data/lib/prism/lex_compat.rb +19 -9
- data/lib/prism/mutation_compiler.rb +26 -6
- data/lib/prism/node.rb +1314 -522
- data/lib/prism/node_ext.rb +102 -19
- data/lib/prism/parse_result.rb +58 -27
- data/lib/prism/ripper_compat.rb +49 -34
- data/lib/prism/serialize.rb +251 -227
- data/lib/prism/visitor.rb +15 -3
- data/lib/prism.rb +21 -4
- data/prism.gemspec +7 -9
- data/rbi/prism.rbi +688 -284
- data/rbi/prism_static.rbi +3 -0
- data/sig/prism.rbs +426 -156
- data/sig/prism_static.rbs +1 -0
- data/src/diagnostic.c +280 -216
- data/src/encoding.c +5137 -0
- data/src/node.c +99 -21
- data/src/options.c +21 -2
- data/src/prettyprint.c +1743 -1241
- data/src/prism.c +1774 -831
- data/src/regexp.c +15 -15
- data/src/serialize.c +261 -164
- data/src/util/pm_buffer.c +10 -1
- data/src/util/pm_memchr.c +1 -1
- data/src/util/pm_strpbrk.c +4 -4
- metadata +8 -10
- data/src/enc/pm_big5.c +0 -53
- data/src/enc/pm_euc_jp.c +0 -59
- data/src/enc/pm_gbk.c +0 -62
- data/src/enc/pm_shift_jis.c +0 -57
- data/src/enc/pm_tables.c +0 -743
- data/src/enc/pm_unicode.c +0 -2369
- data/src/enc/pm_windows_31j.c +0 -57
data/ext/prism/api_node.c
CHANGED
@@ -35,7 +35,9 @@ static VALUE rb_cPrismCallAndWriteNode;
|
|
35
35
|
static VALUE rb_cPrismCallNode;
|
36
36
|
static VALUE rb_cPrismCallOperatorWriteNode;
|
37
37
|
static VALUE rb_cPrismCallOrWriteNode;
|
38
|
+
static VALUE rb_cPrismCallTargetNode;
|
38
39
|
static VALUE rb_cPrismCapturePatternNode;
|
40
|
+
static VALUE rb_cPrismCaseMatchNode;
|
39
41
|
static VALUE rb_cPrismCaseNode;
|
40
42
|
static VALUE rb_cPrismClassNode;
|
41
43
|
static VALUE rb_cPrismClassVariableAndWriteNode;
|
@@ -81,10 +83,12 @@ static VALUE rb_cPrismHashPatternNode;
|
|
81
83
|
static VALUE rb_cPrismIfNode;
|
82
84
|
static VALUE rb_cPrismImaginaryNode;
|
83
85
|
static VALUE rb_cPrismImplicitNode;
|
86
|
+
static VALUE rb_cPrismImplicitRestNode;
|
84
87
|
static VALUE rb_cPrismInNode;
|
85
88
|
static VALUE rb_cPrismIndexAndWriteNode;
|
86
89
|
static VALUE rb_cPrismIndexOperatorWriteNode;
|
87
90
|
static VALUE rb_cPrismIndexOrWriteNode;
|
91
|
+
static VALUE rb_cPrismIndexTargetNode;
|
88
92
|
static VALUE rb_cPrismInstanceVariableAndWriteNode;
|
89
93
|
static VALUE rb_cPrismInstanceVariableOperatorWriteNode;
|
90
94
|
static VALUE rb_cPrismInstanceVariableOrWriteNode;
|
@@ -117,6 +121,7 @@ static VALUE rb_cPrismMultiWriteNode;
|
|
117
121
|
static VALUE rb_cPrismNextNode;
|
118
122
|
static VALUE rb_cPrismNilNode;
|
119
123
|
static VALUE rb_cPrismNoKeywordsParameterNode;
|
124
|
+
static VALUE rb_cPrismNumberedParametersNode;
|
120
125
|
static VALUE rb_cPrismNumberedReferenceReadNode;
|
121
126
|
static VALUE rb_cPrismOptionalKeywordParameterNode;
|
122
127
|
static VALUE rb_cPrismOptionalParameterNode;
|
@@ -146,7 +151,6 @@ static VALUE rb_cPrismSourceFileNode;
|
|
146
151
|
static VALUE rb_cPrismSourceLineNode;
|
147
152
|
static VALUE rb_cPrismSplatNode;
|
148
153
|
static VALUE rb_cPrismStatementsNode;
|
149
|
-
static VALUE rb_cPrismStringConcatNode;
|
150
154
|
static VALUE rb_cPrismStringNode;
|
151
155
|
static VALUE rb_cPrismSuperNode;
|
152
156
|
static VALUE rb_cPrismSymbolNode;
|
@@ -194,7 +198,7 @@ pm_source_new(pm_parser_t *parser, rb_encoding *encoding) {
|
|
194
198
|
rb_ary_push(offsets, INT2FIX(parser->newline_list.offsets[index]));
|
195
199
|
}
|
196
200
|
|
197
|
-
VALUE source_argv[] = { source,
|
201
|
+
VALUE source_argv[] = { source, LONG2NUM(parser->start_line), offsets };
|
198
202
|
return rb_class_new_instance(3, source_argv, rb_cPrismSource);
|
199
203
|
}
|
200
204
|
|
@@ -396,6 +400,12 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
396
400
|
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
397
401
|
break;
|
398
402
|
}
|
403
|
+
#line 118 "api_node.c.erb"
|
404
|
+
case PM_CALL_TARGET_NODE: {
|
405
|
+
pm_call_target_node_t *cast = (pm_call_target_node_t *) node;
|
406
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->receiver);
|
407
|
+
break;
|
408
|
+
}
|
399
409
|
#line 118 "api_node.c.erb"
|
400
410
|
case PM_CAPTURE_PATTERN_NODE: {
|
401
411
|
pm_capture_pattern_node_t *cast = (pm_capture_pattern_node_t *) node;
|
@@ -403,6 +413,16 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
403
413
|
pm_node_stack_push(&node_stack, (pm_node_t *) cast->target);
|
404
414
|
break;
|
405
415
|
}
|
416
|
+
#line 118 "api_node.c.erb"
|
417
|
+
case PM_CASE_MATCH_NODE: {
|
418
|
+
pm_case_match_node_t *cast = (pm_case_match_node_t *) node;
|
419
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->predicate);
|
420
|
+
for (size_t index = 0; index < cast->conditions.size; index++) {
|
421
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->conditions.nodes[index]);
|
422
|
+
}
|
423
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->consequent);
|
424
|
+
break;
|
425
|
+
}
|
406
426
|
#line 118 "api_node.c.erb"
|
407
427
|
case PM_CASE_NODE: {
|
408
428
|
pm_case_node_t *cast = (pm_case_node_t *) node;
|
@@ -677,6 +697,14 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
677
697
|
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
678
698
|
break;
|
679
699
|
}
|
700
|
+
#line 118 "api_node.c.erb"
|
701
|
+
case PM_INDEX_TARGET_NODE: {
|
702
|
+
pm_index_target_node_t *cast = (pm_index_target_node_t *) node;
|
703
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->receiver);
|
704
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->arguments);
|
705
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->block);
|
706
|
+
break;
|
707
|
+
}
|
680
708
|
#line 118 "api_node.c.erb"
|
681
709
|
case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
|
682
710
|
pm_instance_variable_and_write_node_t *cast = (pm_instance_variable_and_write_node_t *) node;
|
@@ -798,6 +826,9 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
798
826
|
case PM_MATCH_WRITE_NODE: {
|
799
827
|
pm_match_write_node_t *cast = (pm_match_write_node_t *) node;
|
800
828
|
pm_node_stack_push(&node_stack, (pm_node_t *) cast->call);
|
829
|
+
for (size_t index = 0; index < cast->targets.size; index++) {
|
830
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->targets.nodes[index]);
|
831
|
+
}
|
801
832
|
break;
|
802
833
|
}
|
803
834
|
#line 118 "api_node.c.erb"
|
@@ -971,13 +1002,6 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
971
1002
|
}
|
972
1003
|
break;
|
973
1004
|
}
|
974
|
-
#line 118 "api_node.c.erb"
|
975
|
-
case PM_STRING_CONCAT_NODE: {
|
976
|
-
pm_string_concat_node_t *cast = (pm_string_concat_node_t *) node;
|
977
|
-
pm_node_stack_push(&node_stack, (pm_node_t *) cast->left);
|
978
|
-
pm_node_stack_push(&node_stack, (pm_node_t *) cast->right);
|
979
|
-
break;
|
980
|
-
}
|
981
1005
|
#line 118 "api_node.c.erb"
|
982
1006
|
case PM_SUPER_NODE: {
|
983
1007
|
pm_super_node_t *cast = (pm_super_node_t *) node;
|
@@ -1135,17 +1159,17 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
1135
1159
|
pm_arguments_node_t *cast = (pm_arguments_node_t *) node;
|
1136
1160
|
VALUE argv[3];
|
1137
1161
|
|
1162
|
+
// flags
|
1163
|
+
#line 192 "api_node.c.erb"
|
1164
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
1165
|
+
|
1138
1166
|
// arguments
|
1139
1167
|
#line 158 "api_node.c.erb"
|
1140
|
-
argv[
|
1168
|
+
argv[1] = rb_ary_new_capa(cast->arguments.size);
|
1141
1169
|
for (size_t index = 0; index < cast->arguments.size; index++) {
|
1142
|
-
rb_ary_push(argv[
|
1170
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
1143
1171
|
}
|
1144
1172
|
|
1145
|
-
// flags
|
1146
|
-
#line 189 "api_node.c.erb"
|
1147
|
-
argv[1] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
1148
|
-
|
1149
1173
|
// location
|
1150
1174
|
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1151
1175
|
|
@@ -1155,27 +1179,31 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
1155
1179
|
#line 144 "api_node.c.erb"
|
1156
1180
|
case PM_ARRAY_NODE: {
|
1157
1181
|
pm_array_node_t *cast = (pm_array_node_t *) node;
|
1158
|
-
VALUE argv[
|
1182
|
+
VALUE argv[5];
|
1183
|
+
|
1184
|
+
// flags
|
1185
|
+
#line 192 "api_node.c.erb"
|
1186
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
1159
1187
|
|
1160
1188
|
// elements
|
1161
1189
|
#line 158 "api_node.c.erb"
|
1162
|
-
argv[
|
1190
|
+
argv[1] = rb_ary_new_capa(cast->elements.size);
|
1163
1191
|
for (size_t index = 0; index < cast->elements.size; index++) {
|
1164
|
-
rb_ary_push(argv[
|
1192
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
1165
1193
|
}
|
1166
1194
|
|
1167
1195
|
// opening_loc
|
1168
1196
|
#line 183 "api_node.c.erb"
|
1169
|
-
argv[
|
1197
|
+
argv[2] = cast->opening_loc.start == NULL ? Qnil : pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
1170
1198
|
|
1171
1199
|
// closing_loc
|
1172
1200
|
#line 183 "api_node.c.erb"
|
1173
|
-
argv[
|
1201
|
+
argv[3] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
1174
1202
|
|
1175
1203
|
// location
|
1176
|
-
argv[
|
1204
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1177
1205
|
|
1178
|
-
rb_ary_push(value_stack, rb_class_new_instance(
|
1206
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismArrayNode));
|
1179
1207
|
break;
|
1180
1208
|
}
|
1181
1209
|
#line 144 "api_node.c.erb"
|
@@ -1350,7 +1378,7 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
1350
1378
|
#line 144 "api_node.c.erb"
|
1351
1379
|
case PM_BLOCK_NODE: {
|
1352
1380
|
pm_block_node_t *cast = (pm_block_node_t *) node;
|
1353
|
-
VALUE argv[
|
1381
|
+
VALUE argv[7];
|
1354
1382
|
|
1355
1383
|
// locals
|
1356
1384
|
#line 173 "api_node.c.erb"
|
@@ -1360,26 +1388,30 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
1360
1388
|
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
1361
1389
|
}
|
1362
1390
|
|
1391
|
+
// locals_body_index
|
1392
|
+
#line 189 "api_node.c.erb"
|
1393
|
+
argv[1] = ULONG2NUM(cast->locals_body_index);
|
1394
|
+
|
1363
1395
|
// parameters
|
1364
1396
|
#line 155 "api_node.c.erb"
|
1365
|
-
argv[
|
1397
|
+
argv[2] = rb_ary_pop(value_stack);
|
1366
1398
|
|
1367
1399
|
// body
|
1368
1400
|
#line 155 "api_node.c.erb"
|
1369
|
-
argv[
|
1401
|
+
argv[3] = rb_ary_pop(value_stack);
|
1370
1402
|
|
1371
1403
|
// opening_loc
|
1372
1404
|
#line 180 "api_node.c.erb"
|
1373
|
-
argv[
|
1405
|
+
argv[4] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
1374
1406
|
|
1375
1407
|
// closing_loc
|
1376
1408
|
#line 180 "api_node.c.erb"
|
1377
|
-
argv[
|
1409
|
+
argv[5] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
1378
1410
|
|
1379
1411
|
// location
|
1380
|
-
argv[
|
1412
|
+
argv[6] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1381
1413
|
|
1382
|
-
rb_ary_push(value_stack, rb_class_new_instance(
|
1414
|
+
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cPrismBlockNode));
|
1383
1415
|
break;
|
1384
1416
|
}
|
1385
1417
|
#line 144 "api_node.c.erb"
|
@@ -1458,21 +1490,21 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
1458
1490
|
pm_call_and_write_node_t *cast = (pm_call_and_write_node_t *) node;
|
1459
1491
|
VALUE argv[9];
|
1460
1492
|
|
1493
|
+
// flags
|
1494
|
+
#line 192 "api_node.c.erb"
|
1495
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
1496
|
+
|
1461
1497
|
// receiver
|
1462
1498
|
#line 155 "api_node.c.erb"
|
1463
|
-
argv[
|
1499
|
+
argv[1] = rb_ary_pop(value_stack);
|
1464
1500
|
|
1465
1501
|
// call_operator_loc
|
1466
1502
|
#line 183 "api_node.c.erb"
|
1467
|
-
argv[
|
1503
|
+
argv[2] = cast->call_operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->call_operator_loc.start, cast->call_operator_loc.end, source);
|
1468
1504
|
|
1469
1505
|
// message_loc
|
1470
1506
|
#line 183 "api_node.c.erb"
|
1471
|
-
argv[
|
1472
|
-
|
1473
|
-
// flags
|
1474
|
-
#line 189 "api_node.c.erb"
|
1475
|
-
argv[3] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
1507
|
+
argv[3] = cast->message_loc.start == NULL ? Qnil : pm_location_new(parser, cast->message_loc.start, cast->message_loc.end, source);
|
1476
1508
|
|
1477
1509
|
// read_name
|
1478
1510
|
#line 167 "api_node.c.erb"
|
@@ -1503,42 +1535,42 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
1503
1535
|
pm_call_node_t *cast = (pm_call_node_t *) node;
|
1504
1536
|
VALUE argv[10];
|
1505
1537
|
|
1538
|
+
// flags
|
1539
|
+
#line 192 "api_node.c.erb"
|
1540
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
1541
|
+
|
1506
1542
|
// receiver
|
1507
1543
|
#line 155 "api_node.c.erb"
|
1508
|
-
argv[
|
1544
|
+
argv[1] = rb_ary_pop(value_stack);
|
1509
1545
|
|
1510
1546
|
// call_operator_loc
|
1511
1547
|
#line 183 "api_node.c.erb"
|
1512
|
-
argv[
|
1548
|
+
argv[2] = cast->call_operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->call_operator_loc.start, cast->call_operator_loc.end, source);
|
1549
|
+
|
1550
|
+
// name
|
1551
|
+
#line 167 "api_node.c.erb"
|
1552
|
+
assert(cast->name != 0);
|
1553
|
+
argv[3] = rb_id2sym(constants[cast->name - 1]);
|
1513
1554
|
|
1514
1555
|
// message_loc
|
1515
1556
|
#line 183 "api_node.c.erb"
|
1516
|
-
argv[
|
1557
|
+
argv[4] = cast->message_loc.start == NULL ? Qnil : pm_location_new(parser, cast->message_loc.start, cast->message_loc.end, source);
|
1517
1558
|
|
1518
1559
|
// opening_loc
|
1519
1560
|
#line 183 "api_node.c.erb"
|
1520
|
-
argv[
|
1561
|
+
argv[5] = cast->opening_loc.start == NULL ? Qnil : pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
1521
1562
|
|
1522
1563
|
// arguments
|
1523
1564
|
#line 155 "api_node.c.erb"
|
1524
|
-
argv[
|
1565
|
+
argv[6] = rb_ary_pop(value_stack);
|
1525
1566
|
|
1526
1567
|
// closing_loc
|
1527
1568
|
#line 183 "api_node.c.erb"
|
1528
|
-
argv[
|
1569
|
+
argv[7] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
1529
1570
|
|
1530
1571
|
// block
|
1531
1572
|
#line 155 "api_node.c.erb"
|
1532
|
-
argv[
|
1533
|
-
|
1534
|
-
// flags
|
1535
|
-
#line 189 "api_node.c.erb"
|
1536
|
-
argv[7] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
1537
|
-
|
1538
|
-
// name
|
1539
|
-
#line 167 "api_node.c.erb"
|
1540
|
-
assert(cast->name != 0);
|
1541
|
-
argv[8] = rb_id2sym(constants[cast->name - 1]);
|
1573
|
+
argv[8] = rb_ary_pop(value_stack);
|
1542
1574
|
|
1543
1575
|
// location
|
1544
1576
|
argv[9] = pm_location_new(parser, node->location.start, node->location.end, source);
|
@@ -1551,21 +1583,21 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
1551
1583
|
pm_call_operator_write_node_t *cast = (pm_call_operator_write_node_t *) node;
|
1552
1584
|
VALUE argv[10];
|
1553
1585
|
|
1586
|
+
// flags
|
1587
|
+
#line 192 "api_node.c.erb"
|
1588
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
1589
|
+
|
1554
1590
|
// receiver
|
1555
1591
|
#line 155 "api_node.c.erb"
|
1556
|
-
argv[
|
1592
|
+
argv[1] = rb_ary_pop(value_stack);
|
1557
1593
|
|
1558
1594
|
// call_operator_loc
|
1559
1595
|
#line 183 "api_node.c.erb"
|
1560
|
-
argv[
|
1596
|
+
argv[2] = cast->call_operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->call_operator_loc.start, cast->call_operator_loc.end, source);
|
1561
1597
|
|
1562
1598
|
// message_loc
|
1563
1599
|
#line 183 "api_node.c.erb"
|
1564
|
-
argv[
|
1565
|
-
|
1566
|
-
// flags
|
1567
|
-
#line 189 "api_node.c.erb"
|
1568
|
-
argv[3] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
1600
|
+
argv[3] = cast->message_loc.start == NULL ? Qnil : pm_location_new(parser, cast->message_loc.start, cast->message_loc.end, source);
|
1569
1601
|
|
1570
1602
|
// read_name
|
1571
1603
|
#line 167 "api_node.c.erb"
|
@@ -1601,21 +1633,21 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
1601
1633
|
pm_call_or_write_node_t *cast = (pm_call_or_write_node_t *) node;
|
1602
1634
|
VALUE argv[9];
|
1603
1635
|
|
1636
|
+
// flags
|
1637
|
+
#line 192 "api_node.c.erb"
|
1638
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
1639
|
+
|
1604
1640
|
// receiver
|
1605
1641
|
#line 155 "api_node.c.erb"
|
1606
|
-
argv[
|
1642
|
+
argv[1] = rb_ary_pop(value_stack);
|
1607
1643
|
|
1608
1644
|
// call_operator_loc
|
1609
1645
|
#line 183 "api_node.c.erb"
|
1610
|
-
argv[
|
1646
|
+
argv[2] = cast->call_operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->call_operator_loc.start, cast->call_operator_loc.end, source);
|
1611
1647
|
|
1612
1648
|
// message_loc
|
1613
1649
|
#line 183 "api_node.c.erb"
|
1614
|
-
argv[
|
1615
|
-
|
1616
|
-
// flags
|
1617
|
-
#line 189 "api_node.c.erb"
|
1618
|
-
argv[3] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
1650
|
+
argv[3] = cast->message_loc.start == NULL ? Qnil : pm_location_new(parser, cast->message_loc.start, cast->message_loc.end, source);
|
1619
1651
|
|
1620
1652
|
// read_name
|
1621
1653
|
#line 167 "api_node.c.erb"
|
@@ -1641,6 +1673,38 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
1641
1673
|
rb_ary_push(value_stack, rb_class_new_instance(9, argv, rb_cPrismCallOrWriteNode));
|
1642
1674
|
break;
|
1643
1675
|
}
|
1676
|
+
#line 144 "api_node.c.erb"
|
1677
|
+
case PM_CALL_TARGET_NODE: {
|
1678
|
+
pm_call_target_node_t *cast = (pm_call_target_node_t *) node;
|
1679
|
+
VALUE argv[6];
|
1680
|
+
|
1681
|
+
// flags
|
1682
|
+
#line 192 "api_node.c.erb"
|
1683
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
1684
|
+
|
1685
|
+
// receiver
|
1686
|
+
#line 155 "api_node.c.erb"
|
1687
|
+
argv[1] = rb_ary_pop(value_stack);
|
1688
|
+
|
1689
|
+
// call_operator_loc
|
1690
|
+
#line 180 "api_node.c.erb"
|
1691
|
+
argv[2] = pm_location_new(parser, cast->call_operator_loc.start, cast->call_operator_loc.end, source);
|
1692
|
+
|
1693
|
+
// name
|
1694
|
+
#line 167 "api_node.c.erb"
|
1695
|
+
assert(cast->name != 0);
|
1696
|
+
argv[3] = rb_id2sym(constants[cast->name - 1]);
|
1697
|
+
|
1698
|
+
// message_loc
|
1699
|
+
#line 180 "api_node.c.erb"
|
1700
|
+
argv[4] = pm_location_new(parser, cast->message_loc.start, cast->message_loc.end, source);
|
1701
|
+
|
1702
|
+
// location
|
1703
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1704
|
+
|
1705
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismCallTargetNode));
|
1706
|
+
break;
|
1707
|
+
}
|
1644
1708
|
#line 144 "api_node.c.erb"
|
1645
1709
|
case PM_CAPTURE_PATTERN_NODE: {
|
1646
1710
|
pm_capture_pattern_node_t *cast = (pm_capture_pattern_node_t *) node;
|
@@ -1664,6 +1728,40 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
1664
1728
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismCapturePatternNode));
|
1665
1729
|
break;
|
1666
1730
|
}
|
1731
|
+
#line 144 "api_node.c.erb"
|
1732
|
+
case PM_CASE_MATCH_NODE: {
|
1733
|
+
pm_case_match_node_t *cast = (pm_case_match_node_t *) node;
|
1734
|
+
VALUE argv[6];
|
1735
|
+
|
1736
|
+
// predicate
|
1737
|
+
#line 155 "api_node.c.erb"
|
1738
|
+
argv[0] = rb_ary_pop(value_stack);
|
1739
|
+
|
1740
|
+
// conditions
|
1741
|
+
#line 158 "api_node.c.erb"
|
1742
|
+
argv[1] = rb_ary_new_capa(cast->conditions.size);
|
1743
|
+
for (size_t index = 0; index < cast->conditions.size; index++) {
|
1744
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
1745
|
+
}
|
1746
|
+
|
1747
|
+
// consequent
|
1748
|
+
#line 155 "api_node.c.erb"
|
1749
|
+
argv[2] = rb_ary_pop(value_stack);
|
1750
|
+
|
1751
|
+
// case_keyword_loc
|
1752
|
+
#line 180 "api_node.c.erb"
|
1753
|
+
argv[3] = pm_location_new(parser, cast->case_keyword_loc.start, cast->case_keyword_loc.end, source);
|
1754
|
+
|
1755
|
+
// end_keyword_loc
|
1756
|
+
#line 180 "api_node.c.erb"
|
1757
|
+
argv[4] = pm_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
1758
|
+
|
1759
|
+
// location
|
1760
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1761
|
+
|
1762
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismCaseMatchNode));
|
1763
|
+
break;
|
1764
|
+
}
|
1667
1765
|
#line 144 "api_node.c.erb"
|
1668
1766
|
case PM_CASE_NODE: {
|
1669
1767
|
pm_case_node_t *cast = (pm_case_node_t *) node;
|
@@ -2190,7 +2288,7 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
2190
2288
|
#line 144 "api_node.c.erb"
|
2191
2289
|
case PM_DEF_NODE: {
|
2192
2290
|
pm_def_node_t *cast = (pm_def_node_t *) node;
|
2193
|
-
VALUE argv[
|
2291
|
+
VALUE argv[14];
|
2194
2292
|
|
2195
2293
|
// name
|
2196
2294
|
#line 167 "api_node.c.erb"
|
@@ -2221,34 +2319,38 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
2221
2319
|
rb_ary_push(argv[5], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
2222
2320
|
}
|
2223
2321
|
|
2322
|
+
// locals_body_index
|
2323
|
+
#line 189 "api_node.c.erb"
|
2324
|
+
argv[6] = ULONG2NUM(cast->locals_body_index);
|
2325
|
+
|
2224
2326
|
// def_keyword_loc
|
2225
2327
|
#line 180 "api_node.c.erb"
|
2226
|
-
argv[
|
2328
|
+
argv[7] = pm_location_new(parser, cast->def_keyword_loc.start, cast->def_keyword_loc.end, source);
|
2227
2329
|
|
2228
2330
|
// operator_loc
|
2229
2331
|
#line 183 "api_node.c.erb"
|
2230
|
-
argv[
|
2332
|
+
argv[8] = cast->operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2231
2333
|
|
2232
2334
|
// lparen_loc
|
2233
2335
|
#line 183 "api_node.c.erb"
|
2234
|
-
argv[
|
2336
|
+
argv[9] = cast->lparen_loc.start == NULL ? Qnil : pm_location_new(parser, cast->lparen_loc.start, cast->lparen_loc.end, source);
|
2235
2337
|
|
2236
2338
|
// rparen_loc
|
2237
2339
|
#line 183 "api_node.c.erb"
|
2238
|
-
argv[
|
2340
|
+
argv[10] = cast->rparen_loc.start == NULL ? Qnil : pm_location_new(parser, cast->rparen_loc.start, cast->rparen_loc.end, source);
|
2239
2341
|
|
2240
2342
|
// equal_loc
|
2241
2343
|
#line 183 "api_node.c.erb"
|
2242
|
-
argv[
|
2344
|
+
argv[11] = cast->equal_loc.start == NULL ? Qnil : pm_location_new(parser, cast->equal_loc.start, cast->equal_loc.end, source);
|
2243
2345
|
|
2244
2346
|
// end_keyword_loc
|
2245
2347
|
#line 183 "api_node.c.erb"
|
2246
|
-
argv[
|
2348
|
+
argv[12] = cast->end_keyword_loc.start == NULL ? Qnil : pm_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
2247
2349
|
|
2248
2350
|
// location
|
2249
|
-
argv[
|
2351
|
+
argv[13] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2250
2352
|
|
2251
|
-
rb_ary_push(value_stack, rb_class_new_instance(
|
2353
|
+
rb_ary_push(value_stack, rb_class_new_instance(14, argv, rb_cPrismDefNode));
|
2252
2354
|
break;
|
2253
2355
|
}
|
2254
2356
|
#line 144 "api_node.c.erb"
|
@@ -2419,21 +2521,21 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
2419
2521
|
pm_flip_flop_node_t *cast = (pm_flip_flop_node_t *) node;
|
2420
2522
|
VALUE argv[5];
|
2421
2523
|
|
2524
|
+
// flags
|
2525
|
+
#line 192 "api_node.c.erb"
|
2526
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
2527
|
+
|
2422
2528
|
// left
|
2423
2529
|
#line 155 "api_node.c.erb"
|
2424
|
-
argv[
|
2530
|
+
argv[1] = rb_ary_pop(value_stack);
|
2425
2531
|
|
2426
2532
|
// right
|
2427
2533
|
#line 155 "api_node.c.erb"
|
2428
|
-
argv[
|
2534
|
+
argv[2] = rb_ary_pop(value_stack);
|
2429
2535
|
|
2430
2536
|
// operator_loc
|
2431
2537
|
#line 180 "api_node.c.erb"
|
2432
|
-
argv[
|
2433
|
-
|
2434
|
-
// flags
|
2435
|
-
#line 189 "api_node.c.erb"
|
2436
|
-
argv[3] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
2538
|
+
argv[3] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2437
2539
|
|
2438
2540
|
// location
|
2439
2541
|
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
@@ -2736,7 +2838,7 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
2736
2838
|
#line 144 "api_node.c.erb"
|
2737
2839
|
case PM_IF_NODE: {
|
2738
2840
|
pm_if_node_t *cast = (pm_if_node_t *) node;
|
2739
|
-
VALUE argv[
|
2841
|
+
VALUE argv[7];
|
2740
2842
|
|
2741
2843
|
// if_keyword_loc
|
2742
2844
|
#line 183 "api_node.c.erb"
|
@@ -2746,22 +2848,26 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
2746
2848
|
#line 155 "api_node.c.erb"
|
2747
2849
|
argv[1] = rb_ary_pop(value_stack);
|
2748
2850
|
|
2851
|
+
// then_keyword_loc
|
2852
|
+
#line 183 "api_node.c.erb"
|
2853
|
+
argv[2] = cast->then_keyword_loc.start == NULL ? Qnil : pm_location_new(parser, cast->then_keyword_loc.start, cast->then_keyword_loc.end, source);
|
2854
|
+
|
2749
2855
|
// statements
|
2750
2856
|
#line 155 "api_node.c.erb"
|
2751
|
-
argv[
|
2857
|
+
argv[3] = rb_ary_pop(value_stack);
|
2752
2858
|
|
2753
2859
|
// consequent
|
2754
2860
|
#line 155 "api_node.c.erb"
|
2755
|
-
argv[
|
2861
|
+
argv[4] = rb_ary_pop(value_stack);
|
2756
2862
|
|
2757
2863
|
// end_keyword_loc
|
2758
2864
|
#line 183 "api_node.c.erb"
|
2759
|
-
argv[
|
2865
|
+
argv[5] = cast->end_keyword_loc.start == NULL ? Qnil : pm_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
2760
2866
|
|
2761
2867
|
// location
|
2762
|
-
argv[
|
2868
|
+
argv[6] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2763
2869
|
|
2764
|
-
rb_ary_push(value_stack, rb_class_new_instance(
|
2870
|
+
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cPrismIfNode));
|
2765
2871
|
break;
|
2766
2872
|
}
|
2767
2873
|
#line 144 "api_node.c.erb"
|
@@ -2792,6 +2898,16 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
2792
2898
|
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismImplicitNode));
|
2793
2899
|
break;
|
2794
2900
|
}
|
2901
|
+
#line 144 "api_node.c.erb"
|
2902
|
+
case PM_IMPLICIT_REST_NODE: {
|
2903
|
+
VALUE argv[1];
|
2904
|
+
|
2905
|
+
// location
|
2906
|
+
argv[0] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2907
|
+
|
2908
|
+
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cPrismImplicitRestNode));
|
2909
|
+
break;
|
2910
|
+
}
|
2795
2911
|
#line 144 "api_node.c.erb"
|
2796
2912
|
case PM_IN_NODE: {
|
2797
2913
|
pm_in_node_t *cast = (pm_in_node_t *) node;
|
@@ -2824,33 +2940,33 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
2824
2940
|
pm_index_and_write_node_t *cast = (pm_index_and_write_node_t *) node;
|
2825
2941
|
VALUE argv[10];
|
2826
2942
|
|
2943
|
+
// flags
|
2944
|
+
#line 192 "api_node.c.erb"
|
2945
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
2946
|
+
|
2827
2947
|
// receiver
|
2828
2948
|
#line 155 "api_node.c.erb"
|
2829
|
-
argv[
|
2949
|
+
argv[1] = rb_ary_pop(value_stack);
|
2830
2950
|
|
2831
2951
|
// call_operator_loc
|
2832
2952
|
#line 183 "api_node.c.erb"
|
2833
|
-
argv[
|
2953
|
+
argv[2] = cast->call_operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->call_operator_loc.start, cast->call_operator_loc.end, source);
|
2834
2954
|
|
2835
2955
|
// opening_loc
|
2836
2956
|
#line 180 "api_node.c.erb"
|
2837
|
-
argv[
|
2957
|
+
argv[3] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
2838
2958
|
|
2839
2959
|
// arguments
|
2840
2960
|
#line 155 "api_node.c.erb"
|
2841
|
-
argv[
|
2961
|
+
argv[4] = rb_ary_pop(value_stack);
|
2842
2962
|
|
2843
2963
|
// closing_loc
|
2844
2964
|
#line 180 "api_node.c.erb"
|
2845
|
-
argv[
|
2965
|
+
argv[5] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
2846
2966
|
|
2847
2967
|
// block
|
2848
2968
|
#line 155 "api_node.c.erb"
|
2849
|
-
argv[
|
2850
|
-
|
2851
|
-
// flags
|
2852
|
-
#line 189 "api_node.c.erb"
|
2853
|
-
argv[6] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
2969
|
+
argv[6] = rb_ary_pop(value_stack);
|
2854
2970
|
|
2855
2971
|
// operator_loc
|
2856
2972
|
#line 180 "api_node.c.erb"
|
@@ -2871,33 +2987,33 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
2871
2987
|
pm_index_operator_write_node_t *cast = (pm_index_operator_write_node_t *) node;
|
2872
2988
|
VALUE argv[11];
|
2873
2989
|
|
2990
|
+
// flags
|
2991
|
+
#line 192 "api_node.c.erb"
|
2992
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
2993
|
+
|
2874
2994
|
// receiver
|
2875
2995
|
#line 155 "api_node.c.erb"
|
2876
|
-
argv[
|
2996
|
+
argv[1] = rb_ary_pop(value_stack);
|
2877
2997
|
|
2878
2998
|
// call_operator_loc
|
2879
2999
|
#line 183 "api_node.c.erb"
|
2880
|
-
argv[
|
3000
|
+
argv[2] = cast->call_operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->call_operator_loc.start, cast->call_operator_loc.end, source);
|
2881
3001
|
|
2882
3002
|
// opening_loc
|
2883
3003
|
#line 180 "api_node.c.erb"
|
2884
|
-
argv[
|
3004
|
+
argv[3] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
2885
3005
|
|
2886
3006
|
// arguments
|
2887
3007
|
#line 155 "api_node.c.erb"
|
2888
|
-
argv[
|
3008
|
+
argv[4] = rb_ary_pop(value_stack);
|
2889
3009
|
|
2890
3010
|
// closing_loc
|
2891
3011
|
#line 180 "api_node.c.erb"
|
2892
|
-
argv[
|
3012
|
+
argv[5] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
2893
3013
|
|
2894
3014
|
// block
|
2895
3015
|
#line 155 "api_node.c.erb"
|
2896
|
-
argv[
|
2897
|
-
|
2898
|
-
// flags
|
2899
|
-
#line 189 "api_node.c.erb"
|
2900
|
-
argv[6] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
3016
|
+
argv[6] = rb_ary_pop(value_stack);
|
2901
3017
|
|
2902
3018
|
// operator
|
2903
3019
|
#line 167 "api_node.c.erb"
|
@@ -2923,33 +3039,33 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
2923
3039
|
pm_index_or_write_node_t *cast = (pm_index_or_write_node_t *) node;
|
2924
3040
|
VALUE argv[10];
|
2925
3041
|
|
3042
|
+
// flags
|
3043
|
+
#line 192 "api_node.c.erb"
|
3044
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
3045
|
+
|
2926
3046
|
// receiver
|
2927
3047
|
#line 155 "api_node.c.erb"
|
2928
|
-
argv[
|
3048
|
+
argv[1] = rb_ary_pop(value_stack);
|
2929
3049
|
|
2930
3050
|
// call_operator_loc
|
2931
3051
|
#line 183 "api_node.c.erb"
|
2932
|
-
argv[
|
3052
|
+
argv[2] = cast->call_operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->call_operator_loc.start, cast->call_operator_loc.end, source);
|
2933
3053
|
|
2934
3054
|
// opening_loc
|
2935
3055
|
#line 180 "api_node.c.erb"
|
2936
|
-
argv[
|
3056
|
+
argv[3] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
2937
3057
|
|
2938
3058
|
// arguments
|
2939
3059
|
#line 155 "api_node.c.erb"
|
2940
|
-
argv[
|
3060
|
+
argv[4] = rb_ary_pop(value_stack);
|
2941
3061
|
|
2942
3062
|
// closing_loc
|
2943
3063
|
#line 180 "api_node.c.erb"
|
2944
|
-
argv[
|
3064
|
+
argv[5] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
2945
3065
|
|
2946
3066
|
// block
|
2947
3067
|
#line 155 "api_node.c.erb"
|
2948
|
-
argv[
|
2949
|
-
|
2950
|
-
// flags
|
2951
|
-
#line 189 "api_node.c.erb"
|
2952
|
-
argv[6] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
3068
|
+
argv[6] = rb_ary_pop(value_stack);
|
2953
3069
|
|
2954
3070
|
// operator_loc
|
2955
3071
|
#line 180 "api_node.c.erb"
|
@@ -2965,6 +3081,41 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
2965
3081
|
rb_ary_push(value_stack, rb_class_new_instance(10, argv, rb_cPrismIndexOrWriteNode));
|
2966
3082
|
break;
|
2967
3083
|
}
|
3084
|
+
#line 144 "api_node.c.erb"
|
3085
|
+
case PM_INDEX_TARGET_NODE: {
|
3086
|
+
pm_index_target_node_t *cast = (pm_index_target_node_t *) node;
|
3087
|
+
VALUE argv[7];
|
3088
|
+
|
3089
|
+
// flags
|
3090
|
+
#line 192 "api_node.c.erb"
|
3091
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
3092
|
+
|
3093
|
+
// receiver
|
3094
|
+
#line 155 "api_node.c.erb"
|
3095
|
+
argv[1] = rb_ary_pop(value_stack);
|
3096
|
+
|
3097
|
+
// opening_loc
|
3098
|
+
#line 180 "api_node.c.erb"
|
3099
|
+
argv[2] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
3100
|
+
|
3101
|
+
// arguments
|
3102
|
+
#line 155 "api_node.c.erb"
|
3103
|
+
argv[3] = rb_ary_pop(value_stack);
|
3104
|
+
|
3105
|
+
// closing_loc
|
3106
|
+
#line 180 "api_node.c.erb"
|
3107
|
+
argv[4] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
3108
|
+
|
3109
|
+
// block
|
3110
|
+
#line 155 "api_node.c.erb"
|
3111
|
+
argv[5] = rb_ary_pop(value_stack);
|
3112
|
+
|
3113
|
+
// location
|
3114
|
+
argv[6] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3115
|
+
|
3116
|
+
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cPrismIndexTargetNode));
|
3117
|
+
break;
|
3118
|
+
}
|
2968
3119
|
#line 144 "api_node.c.erb"
|
2969
3120
|
case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
|
2970
3121
|
pm_instance_variable_and_write_node_t *cast = (pm_instance_variable_and_write_node_t *) node;
|
@@ -3119,7 +3270,7 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
3119
3270
|
VALUE argv[2];
|
3120
3271
|
|
3121
3272
|
// flags
|
3122
|
-
#line
|
3273
|
+
#line 192 "api_node.c.erb"
|
3123
3274
|
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
3124
3275
|
|
3125
3276
|
// location
|
@@ -3133,24 +3284,24 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
3133
3284
|
pm_interpolated_match_last_line_node_t *cast = (pm_interpolated_match_last_line_node_t *) node;
|
3134
3285
|
VALUE argv[5];
|
3135
3286
|
|
3287
|
+
// flags
|
3288
|
+
#line 192 "api_node.c.erb"
|
3289
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
3290
|
+
|
3136
3291
|
// opening_loc
|
3137
3292
|
#line 180 "api_node.c.erb"
|
3138
|
-
argv[
|
3293
|
+
argv[1] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
3139
3294
|
|
3140
3295
|
// parts
|
3141
3296
|
#line 158 "api_node.c.erb"
|
3142
|
-
argv[
|
3297
|
+
argv[2] = rb_ary_new_capa(cast->parts.size);
|
3143
3298
|
for (size_t index = 0; index < cast->parts.size; index++) {
|
3144
|
-
rb_ary_push(argv[
|
3299
|
+
rb_ary_push(argv[2], rb_ary_pop(value_stack));
|
3145
3300
|
}
|
3146
3301
|
|
3147
3302
|
// closing_loc
|
3148
3303
|
#line 180 "api_node.c.erb"
|
3149
|
-
argv[
|
3150
|
-
|
3151
|
-
// flags
|
3152
|
-
#line 189 "api_node.c.erb"
|
3153
|
-
argv[3] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
3304
|
+
argv[3] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
3154
3305
|
|
3155
3306
|
// location
|
3156
3307
|
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
@@ -3163,24 +3314,24 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
3163
3314
|
pm_interpolated_regular_expression_node_t *cast = (pm_interpolated_regular_expression_node_t *) node;
|
3164
3315
|
VALUE argv[5];
|
3165
3316
|
|
3317
|
+
// flags
|
3318
|
+
#line 192 "api_node.c.erb"
|
3319
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
3320
|
+
|
3166
3321
|
// opening_loc
|
3167
3322
|
#line 180 "api_node.c.erb"
|
3168
|
-
argv[
|
3323
|
+
argv[1] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
3169
3324
|
|
3170
3325
|
// parts
|
3171
3326
|
#line 158 "api_node.c.erb"
|
3172
|
-
argv[
|
3327
|
+
argv[2] = rb_ary_new_capa(cast->parts.size);
|
3173
3328
|
for (size_t index = 0; index < cast->parts.size; index++) {
|
3174
|
-
rb_ary_push(argv[
|
3329
|
+
rb_ary_push(argv[2], rb_ary_pop(value_stack));
|
3175
3330
|
}
|
3176
3331
|
|
3177
3332
|
// closing_loc
|
3178
3333
|
#line 180 "api_node.c.erb"
|
3179
|
-
argv[
|
3180
|
-
|
3181
|
-
// flags
|
3182
|
-
#line 189 "api_node.c.erb"
|
3183
|
-
argv[3] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
3334
|
+
argv[3] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
3184
3335
|
|
3185
3336
|
// location
|
3186
3337
|
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
@@ -3269,19 +3420,23 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
3269
3420
|
#line 144 "api_node.c.erb"
|
3270
3421
|
case PM_KEYWORD_HASH_NODE: {
|
3271
3422
|
pm_keyword_hash_node_t *cast = (pm_keyword_hash_node_t *) node;
|
3272
|
-
VALUE argv[
|
3423
|
+
VALUE argv[3];
|
3424
|
+
|
3425
|
+
// flags
|
3426
|
+
#line 192 "api_node.c.erb"
|
3427
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
3273
3428
|
|
3274
3429
|
// elements
|
3275
3430
|
#line 158 "api_node.c.erb"
|
3276
|
-
argv[
|
3431
|
+
argv[1] = rb_ary_new_capa(cast->elements.size);
|
3277
3432
|
for (size_t index = 0; index < cast->elements.size; index++) {
|
3278
|
-
rb_ary_push(argv[
|
3433
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
3279
3434
|
}
|
3280
3435
|
|
3281
3436
|
// location
|
3282
|
-
argv[
|
3437
|
+
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3283
3438
|
|
3284
|
-
rb_ary_push(value_stack, rb_class_new_instance(
|
3439
|
+
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismKeywordHashNode));
|
3285
3440
|
break;
|
3286
3441
|
}
|
3287
3442
|
#line 144 "api_node.c.erb"
|
@@ -3309,7 +3464,7 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
3309
3464
|
#line 144 "api_node.c.erb"
|
3310
3465
|
case PM_LAMBDA_NODE: {
|
3311
3466
|
pm_lambda_node_t *cast = (pm_lambda_node_t *) node;
|
3312
|
-
VALUE argv[
|
3467
|
+
VALUE argv[8];
|
3313
3468
|
|
3314
3469
|
// locals
|
3315
3470
|
#line 173 "api_node.c.erb"
|
@@ -3319,30 +3474,34 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
3319
3474
|
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
3320
3475
|
}
|
3321
3476
|
|
3477
|
+
// locals_body_index
|
3478
|
+
#line 189 "api_node.c.erb"
|
3479
|
+
argv[1] = ULONG2NUM(cast->locals_body_index);
|
3480
|
+
|
3322
3481
|
// operator_loc
|
3323
3482
|
#line 180 "api_node.c.erb"
|
3324
|
-
argv[
|
3483
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
3325
3484
|
|
3326
3485
|
// opening_loc
|
3327
3486
|
#line 180 "api_node.c.erb"
|
3328
|
-
argv[
|
3487
|
+
argv[3] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
3329
3488
|
|
3330
3489
|
// closing_loc
|
3331
3490
|
#line 180 "api_node.c.erb"
|
3332
|
-
argv[
|
3491
|
+
argv[4] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
3333
3492
|
|
3334
3493
|
// parameters
|
3335
3494
|
#line 155 "api_node.c.erb"
|
3336
|
-
argv[
|
3495
|
+
argv[5] = rb_ary_pop(value_stack);
|
3337
3496
|
|
3338
3497
|
// body
|
3339
3498
|
#line 155 "api_node.c.erb"
|
3340
|
-
argv[
|
3499
|
+
argv[6] = rb_ary_pop(value_stack);
|
3341
3500
|
|
3342
3501
|
// location
|
3343
|
-
argv[
|
3502
|
+
argv[7] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3344
3503
|
|
3345
|
-
rb_ary_push(value_stack, rb_class_new_instance(
|
3504
|
+
rb_ary_push(value_stack, rb_class_new_instance(8, argv, rb_cPrismLambdaNode));
|
3346
3505
|
break;
|
3347
3506
|
}
|
3348
3507
|
#line 144 "api_node.c.erb"
|
@@ -3368,7 +3527,7 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
3368
3527
|
argv[3] = rb_id2sym(constants[cast->name - 1]);
|
3369
3528
|
|
3370
3529
|
// depth
|
3371
|
-
#line
|
3530
|
+
#line 189 "api_node.c.erb"
|
3372
3531
|
argv[4] = ULONG2NUM(cast->depth);
|
3373
3532
|
|
3374
3533
|
// location
|
@@ -3405,7 +3564,7 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
3405
3564
|
argv[4] = rb_id2sym(constants[cast->operator - 1]);
|
3406
3565
|
|
3407
3566
|
// depth
|
3408
|
-
#line
|
3567
|
+
#line 189 "api_node.c.erb"
|
3409
3568
|
argv[5] = ULONG2NUM(cast->depth);
|
3410
3569
|
|
3411
3570
|
// location
|
@@ -3437,7 +3596,7 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
3437
3596
|
argv[3] = rb_id2sym(constants[cast->name - 1]);
|
3438
3597
|
|
3439
3598
|
// depth
|
3440
|
-
#line
|
3599
|
+
#line 189 "api_node.c.erb"
|
3441
3600
|
argv[4] = ULONG2NUM(cast->depth);
|
3442
3601
|
|
3443
3602
|
// location
|
@@ -3457,7 +3616,7 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
3457
3616
|
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
3458
3617
|
|
3459
3618
|
// depth
|
3460
|
-
#line
|
3619
|
+
#line 189 "api_node.c.erb"
|
3461
3620
|
argv[1] = ULONG2NUM(cast->depth);
|
3462
3621
|
|
3463
3622
|
// location
|
@@ -3477,7 +3636,7 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
3477
3636
|
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
3478
3637
|
|
3479
3638
|
// depth
|
3480
|
-
#line
|
3639
|
+
#line 189 "api_node.c.erb"
|
3481
3640
|
argv[1] = ULONG2NUM(cast->depth);
|
3482
3641
|
|
3483
3642
|
// location
|
@@ -3497,7 +3656,7 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
3497
3656
|
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
3498
3657
|
|
3499
3658
|
// depth
|
3500
|
-
#line
|
3659
|
+
#line 189 "api_node.c.erb"
|
3501
3660
|
argv[1] = ULONG2NUM(cast->depth);
|
3502
3661
|
|
3503
3662
|
// name_loc
|
@@ -3523,25 +3682,25 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
3523
3682
|
pm_match_last_line_node_t *cast = (pm_match_last_line_node_t *) node;
|
3524
3683
|
VALUE argv[6];
|
3525
3684
|
|
3685
|
+
// flags
|
3686
|
+
#line 192 "api_node.c.erb"
|
3687
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
3688
|
+
|
3526
3689
|
// opening_loc
|
3527
3690
|
#line 180 "api_node.c.erb"
|
3528
|
-
argv[
|
3691
|
+
argv[1] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
3529
3692
|
|
3530
3693
|
// content_loc
|
3531
3694
|
#line 180 "api_node.c.erb"
|
3532
|
-
argv[
|
3695
|
+
argv[2] = pm_location_new(parser, cast->content_loc.start, cast->content_loc.end, source);
|
3533
3696
|
|
3534
3697
|
// closing_loc
|
3535
3698
|
#line 180 "api_node.c.erb"
|
3536
|
-
argv[
|
3699
|
+
argv[3] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
3537
3700
|
|
3538
3701
|
// unescaped
|
3539
3702
|
#line 164 "api_node.c.erb"
|
3540
|
-
argv[
|
3541
|
-
|
3542
|
-
// flags
|
3543
|
-
#line 189 "api_node.c.erb"
|
3544
|
-
argv[4] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
3703
|
+
argv[4] = pm_string_new(&cast->unescaped, encoding);
|
3545
3704
|
|
3546
3705
|
// location
|
3547
3706
|
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
@@ -3604,12 +3763,11 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
3604
3763
|
#line 155 "api_node.c.erb"
|
3605
3764
|
argv[0] = rb_ary_pop(value_stack);
|
3606
3765
|
|
3607
|
-
//
|
3608
|
-
#line
|
3609
|
-
argv[1] = rb_ary_new_capa(cast->
|
3610
|
-
for (size_t index = 0; index < cast->
|
3611
|
-
|
3612
|
-
rb_ary_push(argv[1], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
3766
|
+
// targets
|
3767
|
+
#line 158 "api_node.c.erb"
|
3768
|
+
argv[1] = rb_ary_new_capa(cast->targets.size);
|
3769
|
+
for (size_t index = 0; index < cast->targets.size; index++) {
|
3770
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
3613
3771
|
}
|
3614
3772
|
|
3615
3773
|
// location
|
@@ -3798,13 +3956,28 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
3798
3956
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismNoKeywordsParameterNode));
|
3799
3957
|
break;
|
3800
3958
|
}
|
3959
|
+
#line 144 "api_node.c.erb"
|
3960
|
+
case PM_NUMBERED_PARAMETERS_NODE: {
|
3961
|
+
pm_numbered_parameters_node_t *cast = (pm_numbered_parameters_node_t *) node;
|
3962
|
+
VALUE argv[2];
|
3963
|
+
|
3964
|
+
// maximum
|
3965
|
+
#line 186 "api_node.c.erb"
|
3966
|
+
argv[0] = UINT2NUM(cast->maximum);
|
3967
|
+
|
3968
|
+
// location
|
3969
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3970
|
+
|
3971
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismNumberedParametersNode));
|
3972
|
+
break;
|
3973
|
+
}
|
3801
3974
|
#line 144 "api_node.c.erb"
|
3802
3975
|
case PM_NUMBERED_REFERENCE_READ_NODE: {
|
3803
3976
|
pm_numbered_reference_read_node_t *cast = (pm_numbered_reference_read_node_t *) node;
|
3804
3977
|
VALUE argv[2];
|
3805
3978
|
|
3806
3979
|
// number
|
3807
|
-
#line
|
3980
|
+
#line 189 "api_node.c.erb"
|
3808
3981
|
argv[0] = ULONG2NUM(cast->number);
|
3809
3982
|
|
3810
3983
|
// location
|
@@ -4090,21 +4263,21 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
4090
4263
|
pm_range_node_t *cast = (pm_range_node_t *) node;
|
4091
4264
|
VALUE argv[5];
|
4092
4265
|
|
4266
|
+
// flags
|
4267
|
+
#line 192 "api_node.c.erb"
|
4268
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
4269
|
+
|
4093
4270
|
// left
|
4094
4271
|
#line 155 "api_node.c.erb"
|
4095
|
-
argv[
|
4272
|
+
argv[1] = rb_ary_pop(value_stack);
|
4096
4273
|
|
4097
4274
|
// right
|
4098
4275
|
#line 155 "api_node.c.erb"
|
4099
|
-
argv[
|
4276
|
+
argv[2] = rb_ary_pop(value_stack);
|
4100
4277
|
|
4101
4278
|
// operator_loc
|
4102
4279
|
#line 180 "api_node.c.erb"
|
4103
|
-
argv[
|
4104
|
-
|
4105
|
-
// flags
|
4106
|
-
#line 189 "api_node.c.erb"
|
4107
|
-
argv[3] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
4280
|
+
argv[3] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
4108
4281
|
|
4109
4282
|
// location
|
4110
4283
|
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
@@ -4141,25 +4314,25 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
4141
4314
|
pm_regular_expression_node_t *cast = (pm_regular_expression_node_t *) node;
|
4142
4315
|
VALUE argv[6];
|
4143
4316
|
|
4317
|
+
// flags
|
4318
|
+
#line 192 "api_node.c.erb"
|
4319
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
4320
|
+
|
4144
4321
|
// opening_loc
|
4145
4322
|
#line 180 "api_node.c.erb"
|
4146
|
-
argv[
|
4323
|
+
argv[1] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
4147
4324
|
|
4148
4325
|
// content_loc
|
4149
4326
|
#line 180 "api_node.c.erb"
|
4150
|
-
argv[
|
4327
|
+
argv[2] = pm_location_new(parser, cast->content_loc.start, cast->content_loc.end, source);
|
4151
4328
|
|
4152
4329
|
// closing_loc
|
4153
4330
|
#line 180 "api_node.c.erb"
|
4154
|
-
argv[
|
4331
|
+
argv[3] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
4155
4332
|
|
4156
4333
|
// unescaped
|
4157
4334
|
#line 164 "api_node.c.erb"
|
4158
|
-
argv[
|
4159
|
-
|
4160
|
-
// flags
|
4161
|
-
#line 189 "api_node.c.erb"
|
4162
|
-
argv[4] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
4335
|
+
argv[4] = pm_string_new(&cast->unescaped, encoding);
|
4163
4336
|
|
4164
4337
|
// location
|
4165
4338
|
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
@@ -4436,31 +4609,13 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
4436
4609
|
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismStatementsNode));
|
4437
4610
|
break;
|
4438
4611
|
}
|
4439
|
-
#line 144 "api_node.c.erb"
|
4440
|
-
case PM_STRING_CONCAT_NODE: {
|
4441
|
-
VALUE argv[3];
|
4442
|
-
|
4443
|
-
// left
|
4444
|
-
#line 155 "api_node.c.erb"
|
4445
|
-
argv[0] = rb_ary_pop(value_stack);
|
4446
|
-
|
4447
|
-
// right
|
4448
|
-
#line 155 "api_node.c.erb"
|
4449
|
-
argv[1] = rb_ary_pop(value_stack);
|
4450
|
-
|
4451
|
-
// location
|
4452
|
-
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4453
|
-
|
4454
|
-
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismStringConcatNode));
|
4455
|
-
break;
|
4456
|
-
}
|
4457
4612
|
#line 144 "api_node.c.erb"
|
4458
4613
|
case PM_STRING_NODE: {
|
4459
4614
|
pm_string_node_t *cast = (pm_string_node_t *) node;
|
4460
4615
|
VALUE argv[6];
|
4461
4616
|
|
4462
4617
|
// flags
|
4463
|
-
#line
|
4618
|
+
#line 192 "api_node.c.erb"
|
4464
4619
|
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
4465
4620
|
|
4466
4621
|
// opening_loc
|
@@ -4519,28 +4674,32 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
4519
4674
|
#line 144 "api_node.c.erb"
|
4520
4675
|
case PM_SYMBOL_NODE: {
|
4521
4676
|
pm_symbol_node_t *cast = (pm_symbol_node_t *) node;
|
4522
|
-
VALUE argv[
|
4677
|
+
VALUE argv[6];
|
4678
|
+
|
4679
|
+
// flags
|
4680
|
+
#line 192 "api_node.c.erb"
|
4681
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
4523
4682
|
|
4524
4683
|
// opening_loc
|
4525
4684
|
#line 183 "api_node.c.erb"
|
4526
|
-
argv[
|
4685
|
+
argv[1] = cast->opening_loc.start == NULL ? Qnil : pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
4527
4686
|
|
4528
4687
|
// value_loc
|
4529
4688
|
#line 183 "api_node.c.erb"
|
4530
|
-
argv[
|
4689
|
+
argv[2] = cast->value_loc.start == NULL ? Qnil : pm_location_new(parser, cast->value_loc.start, cast->value_loc.end, source);
|
4531
4690
|
|
4532
4691
|
// closing_loc
|
4533
4692
|
#line 183 "api_node.c.erb"
|
4534
|
-
argv[
|
4693
|
+
argv[3] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
4535
4694
|
|
4536
4695
|
// unescaped
|
4537
4696
|
#line 164 "api_node.c.erb"
|
4538
|
-
argv[
|
4697
|
+
argv[4] = pm_string_new(&cast->unescaped, encoding);
|
4539
4698
|
|
4540
4699
|
// location
|
4541
|
-
argv[
|
4700
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4542
4701
|
|
4543
|
-
rb_ary_push(value_stack, rb_class_new_instance(
|
4702
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismSymbolNode));
|
4544
4703
|
break;
|
4545
4704
|
}
|
4546
4705
|
#line 144 "api_node.c.erb"
|
@@ -4578,7 +4737,7 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
4578
4737
|
#line 144 "api_node.c.erb"
|
4579
4738
|
case PM_UNLESS_NODE: {
|
4580
4739
|
pm_unless_node_t *cast = (pm_unless_node_t *) node;
|
4581
|
-
VALUE argv[
|
4740
|
+
VALUE argv[7];
|
4582
4741
|
|
4583
4742
|
// keyword_loc
|
4584
4743
|
#line 180 "api_node.c.erb"
|
@@ -4588,22 +4747,26 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
4588
4747
|
#line 155 "api_node.c.erb"
|
4589
4748
|
argv[1] = rb_ary_pop(value_stack);
|
4590
4749
|
|
4750
|
+
// then_keyword_loc
|
4751
|
+
#line 183 "api_node.c.erb"
|
4752
|
+
argv[2] = cast->then_keyword_loc.start == NULL ? Qnil : pm_location_new(parser, cast->then_keyword_loc.start, cast->then_keyword_loc.end, source);
|
4753
|
+
|
4591
4754
|
// statements
|
4592
4755
|
#line 155 "api_node.c.erb"
|
4593
|
-
argv[
|
4756
|
+
argv[3] = rb_ary_pop(value_stack);
|
4594
4757
|
|
4595
4758
|
// consequent
|
4596
4759
|
#line 155 "api_node.c.erb"
|
4597
|
-
argv[
|
4760
|
+
argv[4] = rb_ary_pop(value_stack);
|
4598
4761
|
|
4599
4762
|
// end_keyword_loc
|
4600
4763
|
#line 183 "api_node.c.erb"
|
4601
|
-
argv[
|
4764
|
+
argv[5] = cast->end_keyword_loc.start == NULL ? Qnil : pm_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
4602
4765
|
|
4603
4766
|
// location
|
4604
|
-
argv[
|
4767
|
+
argv[6] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4605
4768
|
|
4606
|
-
rb_ary_push(value_stack, rb_class_new_instance(
|
4769
|
+
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cPrismUnlessNode));
|
4607
4770
|
break;
|
4608
4771
|
}
|
4609
4772
|
#line 144 "api_node.c.erb"
|
@@ -4611,25 +4774,25 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
4611
4774
|
pm_until_node_t *cast = (pm_until_node_t *) node;
|
4612
4775
|
VALUE argv[6];
|
4613
4776
|
|
4777
|
+
// flags
|
4778
|
+
#line 192 "api_node.c.erb"
|
4779
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
4780
|
+
|
4614
4781
|
// keyword_loc
|
4615
4782
|
#line 180 "api_node.c.erb"
|
4616
|
-
argv[
|
4783
|
+
argv[1] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
4617
4784
|
|
4618
4785
|
// closing_loc
|
4619
4786
|
#line 183 "api_node.c.erb"
|
4620
|
-
argv[
|
4787
|
+
argv[2] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
4621
4788
|
|
4622
4789
|
// predicate
|
4623
4790
|
#line 155 "api_node.c.erb"
|
4624
|
-
argv[
|
4791
|
+
argv[3] = rb_ary_pop(value_stack);
|
4625
4792
|
|
4626
4793
|
// statements
|
4627
4794
|
#line 155 "api_node.c.erb"
|
4628
|
-
argv[
|
4629
|
-
|
4630
|
-
// flags
|
4631
|
-
#line 189 "api_node.c.erb"
|
4632
|
-
argv[4] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
4795
|
+
argv[4] = rb_ary_pop(value_stack);
|
4633
4796
|
|
4634
4797
|
// location
|
4635
4798
|
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
@@ -4668,25 +4831,25 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
4668
4831
|
pm_while_node_t *cast = (pm_while_node_t *) node;
|
4669
4832
|
VALUE argv[6];
|
4670
4833
|
|
4834
|
+
// flags
|
4835
|
+
#line 192 "api_node.c.erb"
|
4836
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
4837
|
+
|
4671
4838
|
// keyword_loc
|
4672
4839
|
#line 180 "api_node.c.erb"
|
4673
|
-
argv[
|
4840
|
+
argv[1] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
4674
4841
|
|
4675
4842
|
// closing_loc
|
4676
4843
|
#line 183 "api_node.c.erb"
|
4677
|
-
argv[
|
4844
|
+
argv[2] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
4678
4845
|
|
4679
4846
|
// predicate
|
4680
4847
|
#line 155 "api_node.c.erb"
|
4681
|
-
argv[
|
4848
|
+
argv[3] = rb_ary_pop(value_stack);
|
4682
4849
|
|
4683
4850
|
// statements
|
4684
4851
|
#line 155 "api_node.c.erb"
|
4685
|
-
argv[
|
4686
|
-
|
4687
|
-
// flags
|
4688
|
-
#line 189 "api_node.c.erb"
|
4689
|
-
argv[4] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
4852
|
+
argv[4] = rb_ary_pop(value_stack);
|
4690
4853
|
|
4691
4854
|
// location
|
4692
4855
|
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
@@ -4697,28 +4860,32 @@ pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
|
4697
4860
|
#line 144 "api_node.c.erb"
|
4698
4861
|
case PM_X_STRING_NODE: {
|
4699
4862
|
pm_x_string_node_t *cast = (pm_x_string_node_t *) node;
|
4700
|
-
VALUE argv[
|
4863
|
+
VALUE argv[6];
|
4864
|
+
|
4865
|
+
// flags
|
4866
|
+
#line 192 "api_node.c.erb"
|
4867
|
+
argv[0] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
|
4701
4868
|
|
4702
4869
|
// opening_loc
|
4703
4870
|
#line 180 "api_node.c.erb"
|
4704
|
-
argv[
|
4871
|
+
argv[1] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
4705
4872
|
|
4706
4873
|
// content_loc
|
4707
4874
|
#line 180 "api_node.c.erb"
|
4708
|
-
argv[
|
4875
|
+
argv[2] = pm_location_new(parser, cast->content_loc.start, cast->content_loc.end, source);
|
4709
4876
|
|
4710
4877
|
// closing_loc
|
4711
4878
|
#line 180 "api_node.c.erb"
|
4712
|
-
argv[
|
4879
|
+
argv[3] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
4713
4880
|
|
4714
4881
|
// unescaped
|
4715
4882
|
#line 164 "api_node.c.erb"
|
4716
|
-
argv[
|
4883
|
+
argv[4] = pm_string_new(&cast->unescaped, encoding);
|
4717
4884
|
|
4718
4885
|
// location
|
4719
|
-
argv[
|
4886
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4720
4887
|
|
4721
|
-
rb_ary_push(value_stack, rb_class_new_instance(
|
4888
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismXStringNode));
|
4722
4889
|
break;
|
4723
4890
|
}
|
4724
4891
|
#line 144 "api_node.c.erb"
|
@@ -4782,7 +4949,9 @@ Init_prism_api_node(void) {
|
|
4782
4949
|
rb_cPrismCallNode = rb_define_class_under(rb_cPrism, "CallNode", rb_cPrismNode);
|
4783
4950
|
rb_cPrismCallOperatorWriteNode = rb_define_class_under(rb_cPrism, "CallOperatorWriteNode", rb_cPrismNode);
|
4784
4951
|
rb_cPrismCallOrWriteNode = rb_define_class_under(rb_cPrism, "CallOrWriteNode", rb_cPrismNode);
|
4952
|
+
rb_cPrismCallTargetNode = rb_define_class_under(rb_cPrism, "CallTargetNode", rb_cPrismNode);
|
4785
4953
|
rb_cPrismCapturePatternNode = rb_define_class_under(rb_cPrism, "CapturePatternNode", rb_cPrismNode);
|
4954
|
+
rb_cPrismCaseMatchNode = rb_define_class_under(rb_cPrism, "CaseMatchNode", rb_cPrismNode);
|
4786
4955
|
rb_cPrismCaseNode = rb_define_class_under(rb_cPrism, "CaseNode", rb_cPrismNode);
|
4787
4956
|
rb_cPrismClassNode = rb_define_class_under(rb_cPrism, "ClassNode", rb_cPrismNode);
|
4788
4957
|
rb_cPrismClassVariableAndWriteNode = rb_define_class_under(rb_cPrism, "ClassVariableAndWriteNode", rb_cPrismNode);
|
@@ -4828,10 +4997,12 @@ Init_prism_api_node(void) {
|
|
4828
4997
|
rb_cPrismIfNode = rb_define_class_under(rb_cPrism, "IfNode", rb_cPrismNode);
|
4829
4998
|
rb_cPrismImaginaryNode = rb_define_class_under(rb_cPrism, "ImaginaryNode", rb_cPrismNode);
|
4830
4999
|
rb_cPrismImplicitNode = rb_define_class_under(rb_cPrism, "ImplicitNode", rb_cPrismNode);
|
5000
|
+
rb_cPrismImplicitRestNode = rb_define_class_under(rb_cPrism, "ImplicitRestNode", rb_cPrismNode);
|
4831
5001
|
rb_cPrismInNode = rb_define_class_under(rb_cPrism, "InNode", rb_cPrismNode);
|
4832
5002
|
rb_cPrismIndexAndWriteNode = rb_define_class_under(rb_cPrism, "IndexAndWriteNode", rb_cPrismNode);
|
4833
5003
|
rb_cPrismIndexOperatorWriteNode = rb_define_class_under(rb_cPrism, "IndexOperatorWriteNode", rb_cPrismNode);
|
4834
5004
|
rb_cPrismIndexOrWriteNode = rb_define_class_under(rb_cPrism, "IndexOrWriteNode", rb_cPrismNode);
|
5005
|
+
rb_cPrismIndexTargetNode = rb_define_class_under(rb_cPrism, "IndexTargetNode", rb_cPrismNode);
|
4835
5006
|
rb_cPrismInstanceVariableAndWriteNode = rb_define_class_under(rb_cPrism, "InstanceVariableAndWriteNode", rb_cPrismNode);
|
4836
5007
|
rb_cPrismInstanceVariableOperatorWriteNode = rb_define_class_under(rb_cPrism, "InstanceVariableOperatorWriteNode", rb_cPrismNode);
|
4837
5008
|
rb_cPrismInstanceVariableOrWriteNode = rb_define_class_under(rb_cPrism, "InstanceVariableOrWriteNode", rb_cPrismNode);
|
@@ -4864,6 +5035,7 @@ Init_prism_api_node(void) {
|
|
4864
5035
|
rb_cPrismNextNode = rb_define_class_under(rb_cPrism, "NextNode", rb_cPrismNode);
|
4865
5036
|
rb_cPrismNilNode = rb_define_class_under(rb_cPrism, "NilNode", rb_cPrismNode);
|
4866
5037
|
rb_cPrismNoKeywordsParameterNode = rb_define_class_under(rb_cPrism, "NoKeywordsParameterNode", rb_cPrismNode);
|
5038
|
+
rb_cPrismNumberedParametersNode = rb_define_class_under(rb_cPrism, "NumberedParametersNode", rb_cPrismNode);
|
4867
5039
|
rb_cPrismNumberedReferenceReadNode = rb_define_class_under(rb_cPrism, "NumberedReferenceReadNode", rb_cPrismNode);
|
4868
5040
|
rb_cPrismOptionalKeywordParameterNode = rb_define_class_under(rb_cPrism, "OptionalKeywordParameterNode", rb_cPrismNode);
|
4869
5041
|
rb_cPrismOptionalParameterNode = rb_define_class_under(rb_cPrism, "OptionalParameterNode", rb_cPrismNode);
|
@@ -4893,7 +5065,6 @@ Init_prism_api_node(void) {
|
|
4893
5065
|
rb_cPrismSourceLineNode = rb_define_class_under(rb_cPrism, "SourceLineNode", rb_cPrismNode);
|
4894
5066
|
rb_cPrismSplatNode = rb_define_class_under(rb_cPrism, "SplatNode", rb_cPrismNode);
|
4895
5067
|
rb_cPrismStatementsNode = rb_define_class_under(rb_cPrism, "StatementsNode", rb_cPrismNode);
|
4896
|
-
rb_cPrismStringConcatNode = rb_define_class_under(rb_cPrism, "StringConcatNode", rb_cPrismNode);
|
4897
5068
|
rb_cPrismStringNode = rb_define_class_under(rb_cPrism, "StringNode", rb_cPrismNode);
|
4898
5069
|
rb_cPrismSuperNode = rb_define_class_under(rb_cPrism, "SuperNode", rb_cPrismNode);
|
4899
5070
|
rb_cPrismSymbolNode = rb_define_class_under(rb_cPrism, "SymbolNode", rb_cPrismNode);
|