prism 0.17.1 → 0.19.0
Sign up to get free protection for your applications and to get access to all the features.
- 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);
|