prism 0.19.0 → 0.20.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 +29 -1
- data/Makefile +5 -0
- data/README.md +8 -6
- data/config.yml +236 -38
- data/docs/build_system.md +19 -2
- data/docs/cruby_compilation.md +27 -0
- data/docs/parser_translation.md +34 -0
- data/docs/parsing_rules.md +19 -0
- data/docs/releasing.md +3 -3
- data/docs/ruby_api.md +1 -1
- data/docs/serialization.md +17 -5
- data/ext/prism/api_node.c +101 -81
- data/ext/prism/extension.c +74 -11
- data/ext/prism/extension.h +1 -1
- data/include/prism/ast.h +1699 -504
- data/include/prism/defines.h +8 -0
- data/include/prism/diagnostic.h +39 -2
- data/include/prism/encoding.h +10 -0
- data/include/prism/options.h +40 -14
- data/include/prism/parser.h +33 -17
- data/include/prism/util/pm_buffer.h +9 -0
- data/include/prism/util/pm_constant_pool.h +7 -0
- data/include/prism/util/pm_newline_list.h +0 -11
- data/include/prism/version.h +2 -2
- data/include/prism.h +19 -2
- data/lib/prism/debug.rb +11 -5
- data/lib/prism/dot_visitor.rb +36 -14
- data/lib/prism/dsl.rb +22 -22
- data/lib/prism/ffi.rb +2 -2
- data/lib/prism/node.rb +1020 -737
- data/lib/prism/node_ext.rb +2 -2
- data/lib/prism/parse_result.rb +17 -9
- data/lib/prism/serialize.rb +53 -29
- data/lib/prism/translation/parser/compiler.rb +1831 -0
- data/lib/prism/translation/parser/lexer.rb +335 -0
- data/lib/prism/translation/parser/rubocop.rb +37 -0
- data/lib/prism/translation/parser.rb +163 -0
- data/lib/prism/translation.rb +11 -0
- data/lib/prism.rb +1 -0
- data/prism.gemspec +12 -5
- data/rbi/prism.rbi +150 -88
- data/rbi/prism_static.rbi +15 -3
- data/sig/prism.rbs +996 -961
- data/sig/prism_static.rbs +123 -46
- data/src/diagnostic.c +259 -219
- data/src/encoding.c +4 -8
- data/src/node.c +2 -6
- data/src/options.c +24 -5
- data/src/prettyprint.c +174 -42
- data/src/prism.c +1136 -328
- data/src/serialize.c +12 -9
- data/src/token_type.c +353 -4
- data/src/util/pm_buffer.c +11 -0
- data/src/util/pm_constant_pool.c +12 -11
- data/src/util/pm_newline_list.c +2 -14
- metadata +10 -3
- data/docs/building.md +0 -29
data/src/encoding.c
CHANGED
@@ -2277,7 +2277,10 @@ pm_utf_8_codepoint(const uint8_t *b, ptrdiff_t n, size_t *width) {
|
|
2277
2277
|
return 0;
|
2278
2278
|
}
|
2279
2279
|
|
2280
|
-
|
2280
|
+
/**
|
2281
|
+
* Return the size of the next character in the UTF-8 encoding.
|
2282
|
+
*/
|
2283
|
+
size_t
|
2281
2284
|
pm_encoding_utf_8_char_width(const uint8_t *b, ptrdiff_t n) {
|
2282
2285
|
size_t width;
|
2283
2286
|
pm_utf_8_codepoint(b, n, &width);
|
@@ -5022,10 +5025,6 @@ pm_encoding_find(const uint8_t *start, const uint8_t *end) {
|
|
5022
5025
|
ENCODING2("EUC-CN", "eucCN", PM_ENCODING_GB2312);
|
5023
5026
|
ENCODING2("EUC-TW", "eucTW", PM_ENCODING_EUC_TW);
|
5024
5027
|
ENCODING1("Emacs-Mule", PM_ENCODING_EMACS_MULE);
|
5025
|
-
ENCODING1("external", PM_ENCODING_UTF_8);
|
5026
|
-
break;
|
5027
|
-
case 'F': case 'f':
|
5028
|
-
ENCODING1("filesystem", PM_ENCODING_UTF_8);
|
5029
5028
|
break;
|
5030
5029
|
case 'G': case 'g':
|
5031
5030
|
ENCODING1("GBK", PM_ENCODING_GBK);
|
@@ -5071,9 +5070,6 @@ pm_encoding_find(const uint8_t *start, const uint8_t *end) {
|
|
5071
5070
|
ENCODING1("KOI8-R", PM_ENCODING_KOI8_R);
|
5072
5071
|
ENCODING1("KOI8-U", PM_ENCODING_KOI8_U);
|
5073
5072
|
break;
|
5074
|
-
case 'L': case 'l':
|
5075
|
-
ENCODING1("locale", PM_ENCODING_UTF_8);
|
5076
|
-
break;
|
5077
5073
|
case 'M': case 'm':
|
5078
5074
|
ENCODING1("macCentEuro", PM_ENCODING_MAC_CENT_EURO);
|
5079
5075
|
ENCODING1("macCroatian", PM_ENCODING_MAC_CROATIAN);
|
data/src/node.c
CHANGED
@@ -117,9 +117,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
|
|
117
117
|
case PM_ASSOC_NODE: {
|
118
118
|
pm_assoc_node_t *cast = (pm_assoc_node_t *) node;
|
119
119
|
pm_node_destroy(parser, (pm_node_t *)cast->key);
|
120
|
-
|
121
|
-
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
122
|
-
}
|
120
|
+
pm_node_destroy(parser, (pm_node_t *)cast->value);
|
123
121
|
break;
|
124
122
|
}
|
125
123
|
#line 58 "node.c.erb"
|
@@ -1223,9 +1221,7 @@ pm_node_memsize_node(pm_node_t *node, pm_memsize_t *memsize) {
|
|
1223
1221
|
pm_assoc_node_t *cast = (pm_assoc_node_t *) node;
|
1224
1222
|
memsize->memsize += sizeof(*cast);
|
1225
1223
|
pm_node_memsize_node((pm_node_t *)cast->key, memsize);
|
1226
|
-
|
1227
|
-
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
1228
|
-
}
|
1224
|
+
pm_node_memsize_node((pm_node_t *)cast->value, memsize);
|
1229
1225
|
break;
|
1230
1226
|
}
|
1231
1227
|
#line 103 "node.c.erb"
|
data/src/options.c
CHANGED
@@ -33,11 +33,30 @@ pm_options_frozen_string_literal_set(pm_options_t *options, bool frozen_string_l
|
|
33
33
|
}
|
34
34
|
|
35
35
|
/**
|
36
|
-
* Set the
|
36
|
+
* Set the version option on the given options struct by parsing the given
|
37
|
+
* string. If the string contains an invalid option, this returns false.
|
38
|
+
* Otherwise, it returns true.
|
37
39
|
*/
|
38
|
-
PRISM_EXPORTED_FUNCTION
|
39
|
-
|
40
|
-
|
40
|
+
PRISM_EXPORTED_FUNCTION bool
|
41
|
+
pm_options_version_set(pm_options_t *options, const char *version, size_t length) {
|
42
|
+
if (version == NULL && length == 0) {
|
43
|
+
options->version = PM_OPTIONS_VERSION_LATEST;
|
44
|
+
return true;
|
45
|
+
}
|
46
|
+
|
47
|
+
if (length == 5) {
|
48
|
+
if (strncmp(version, "3.3.0", 5) == 0) {
|
49
|
+
options->version = PM_OPTIONS_VERSION_CRUBY_3_3_0;
|
50
|
+
return true;
|
51
|
+
}
|
52
|
+
|
53
|
+
if (strncmp(version, "latest", 6) == 0) {
|
54
|
+
options->version = PM_OPTIONS_VERSION_LATEST;
|
55
|
+
return true;
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
59
|
+
return false;
|
41
60
|
}
|
42
61
|
|
43
62
|
/**
|
@@ -162,7 +181,7 @@ pm_options_read(pm_options_t *options, const char *data) {
|
|
162
181
|
}
|
163
182
|
|
164
183
|
options->frozen_string_literal = *data++;
|
165
|
-
options->
|
184
|
+
options->version = (pm_options_version_t) *data++;
|
166
185
|
|
167
186
|
uint32_t scopes_count = pm_options_read_u32(data);
|
168
187
|
data += 4;
|
data/src/prettyprint.c
CHANGED
@@ -46,7 +46,7 @@ static inline void
|
|
46
46
|
prettyprint_location(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm_location_t *location) {
|
47
47
|
pm_line_column_t start = pm_newline_list_line_column(&parser->newline_list, location->start);
|
48
48
|
pm_line_column_t end = pm_newline_list_line_column(&parser->newline_list, location->end);
|
49
|
-
pm_buffer_append_format(output_buffer, "(%lu,%lu)-(%lu,%lu)", (unsigned long)
|
49
|
+
pm_buffer_append_format(output_buffer, "(%lu,%lu)-(%lu,%lu)", (unsigned long) start.line, (unsigned long) start.column, (unsigned long) end.line, (unsigned long) end.column);
|
50
50
|
}
|
51
51
|
|
52
52
|
static inline void
|
@@ -518,17 +518,13 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
518
518
|
{
|
519
519
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
520
520
|
pm_buffer_append_string(output_buffer, "\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 value:", 16);
|
521
|
-
|
522
|
-
pm_buffer_append_string(output_buffer, " \xe2\x88\x85\n", 5);
|
523
|
-
} else {
|
524
|
-
pm_buffer_append_byte(output_buffer, '\n');
|
521
|
+
pm_buffer_append_byte(output_buffer, '\n');
|
525
522
|
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
}
|
523
|
+
size_t prefix_length = prefix_buffer->length;
|
524
|
+
pm_buffer_append_string(prefix_buffer, "\xe2\x94\x82 ", 6);
|
525
|
+
pm_buffer_concat(output_buffer, prefix_buffer);
|
526
|
+
prettyprint_node(output_buffer, parser, (pm_node_t *) cast->value, prefix_buffer);
|
527
|
+
prefix_buffer->length = prefix_length;
|
532
528
|
}
|
533
529
|
|
534
530
|
// operator_loc
|
@@ -754,6 +750,20 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
754
750
|
prettyprint_location(output_buffer, parser, &node->location);
|
755
751
|
pm_buffer_append_string(output_buffer, ")\n", 2);
|
756
752
|
|
753
|
+
// flags
|
754
|
+
{
|
755
|
+
pm_buffer_concat(output_buffer, prefix_buffer);
|
756
|
+
pm_buffer_append_string(output_buffer, "\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 flags:", 16);
|
757
|
+
bool found = false;
|
758
|
+
if (cast->base.flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
|
759
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
760
|
+
pm_buffer_append_string(output_buffer, " repeated_parameter", 19);
|
761
|
+
found = true;
|
762
|
+
}
|
763
|
+
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
764
|
+
pm_buffer_append_byte(output_buffer, '\n');
|
765
|
+
}
|
766
|
+
|
757
767
|
// name
|
758
768
|
{
|
759
769
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
@@ -783,13 +793,6 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
783
793
|
pm_buffer_append_string(output_buffer, "]\n", 2);
|
784
794
|
}
|
785
795
|
|
786
|
-
// locals_body_index
|
787
|
-
{
|
788
|
-
pm_buffer_concat(output_buffer, prefix_buffer);
|
789
|
-
pm_buffer_append_string(output_buffer, "\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 locals_body_index:", 28);
|
790
|
-
pm_buffer_append_format(output_buffer, " %d\n", cast->locals_body_index);
|
791
|
-
}
|
792
|
-
|
793
796
|
// parameters
|
794
797
|
{
|
795
798
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
@@ -856,6 +859,20 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
856
859
|
prettyprint_location(output_buffer, parser, &node->location);
|
857
860
|
pm_buffer_append_string(output_buffer, ")\n", 2);
|
858
861
|
|
862
|
+
// flags
|
863
|
+
{
|
864
|
+
pm_buffer_concat(output_buffer, prefix_buffer);
|
865
|
+
pm_buffer_append_string(output_buffer, "\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 flags:", 16);
|
866
|
+
bool found = false;
|
867
|
+
if (cast->base.flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
|
868
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
869
|
+
pm_buffer_append_string(output_buffer, " repeated_parameter", 19);
|
870
|
+
found = true;
|
871
|
+
}
|
872
|
+
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
873
|
+
pm_buffer_append_byte(output_buffer, '\n');
|
874
|
+
}
|
875
|
+
|
859
876
|
// name
|
860
877
|
{
|
861
878
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
@@ -1044,6 +1061,11 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
1044
1061
|
pm_buffer_append_string(output_buffer, " attribute_write", 16);
|
1045
1062
|
found = true;
|
1046
1063
|
}
|
1064
|
+
if (cast->base.flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
|
1065
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
1066
|
+
pm_buffer_append_string(output_buffer, " ignore_visibility", 18);
|
1067
|
+
found = true;
|
1068
|
+
}
|
1047
1069
|
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
1048
1070
|
pm_buffer_append_byte(output_buffer, '\n');
|
1049
1071
|
}
|
@@ -1168,6 +1190,11 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
1168
1190
|
pm_buffer_append_string(output_buffer, " attribute_write", 16);
|
1169
1191
|
found = true;
|
1170
1192
|
}
|
1193
|
+
if (cast->base.flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
|
1194
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
1195
|
+
pm_buffer_append_string(output_buffer, " ignore_visibility", 18);
|
1196
|
+
found = true;
|
1197
|
+
}
|
1171
1198
|
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
1172
1199
|
pm_buffer_append_byte(output_buffer, '\n');
|
1173
1200
|
}
|
@@ -1324,6 +1351,11 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
1324
1351
|
pm_buffer_append_string(output_buffer, " attribute_write", 16);
|
1325
1352
|
found = true;
|
1326
1353
|
}
|
1354
|
+
if (cast->base.flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
|
1355
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
1356
|
+
pm_buffer_append_string(output_buffer, " ignore_visibility", 18);
|
1357
|
+
found = true;
|
1358
|
+
}
|
1327
1359
|
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
1328
1360
|
pm_buffer_append_byte(output_buffer, '\n');
|
1329
1361
|
}
|
@@ -1457,6 +1489,11 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
1457
1489
|
pm_buffer_append_string(output_buffer, " attribute_write", 16);
|
1458
1490
|
found = true;
|
1459
1491
|
}
|
1492
|
+
if (cast->base.flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
|
1493
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
1494
|
+
pm_buffer_append_string(output_buffer, " ignore_visibility", 18);
|
1495
|
+
found = true;
|
1496
|
+
}
|
1460
1497
|
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
1461
1498
|
pm_buffer_append_byte(output_buffer, '\n');
|
1462
1499
|
}
|
@@ -1581,6 +1618,11 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
1581
1618
|
pm_buffer_append_string(output_buffer, " attribute_write", 16);
|
1582
1619
|
found = true;
|
1583
1620
|
}
|
1621
|
+
if (cast->base.flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
|
1622
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
1623
|
+
pm_buffer_append_string(output_buffer, " ignore_visibility", 18);
|
1624
|
+
found = true;
|
1625
|
+
}
|
1584
1626
|
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
1585
1627
|
pm_buffer_append_byte(output_buffer, '\n');
|
1586
1628
|
}
|
@@ -2882,13 +2924,6 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
2882
2924
|
pm_buffer_append_string(output_buffer, "]\n", 2);
|
2883
2925
|
}
|
2884
2926
|
|
2885
|
-
// locals_body_index
|
2886
|
-
{
|
2887
|
-
pm_buffer_concat(output_buffer, prefix_buffer);
|
2888
|
-
pm_buffer_append_string(output_buffer, "\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 locals_body_index:", 28);
|
2889
|
-
pm_buffer_append_format(output_buffer, " %d\n", cast->locals_body_index);
|
2890
|
-
}
|
2891
|
-
|
2892
2927
|
// def_keyword_loc
|
2893
2928
|
{
|
2894
2929
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
@@ -4223,6 +4258,11 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
4223
4258
|
pm_buffer_append_string(output_buffer, " attribute_write", 16);
|
4224
4259
|
found = true;
|
4225
4260
|
}
|
4261
|
+
if (cast->base.flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
|
4262
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
4263
|
+
pm_buffer_append_string(output_buffer, " ignore_visibility", 18);
|
4264
|
+
found = true;
|
4265
|
+
}
|
4226
4266
|
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
4227
4267
|
pm_buffer_append_byte(output_buffer, '\n');
|
4228
4268
|
}
|
@@ -4371,6 +4411,11 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
4371
4411
|
pm_buffer_append_string(output_buffer, " attribute_write", 16);
|
4372
4412
|
found = true;
|
4373
4413
|
}
|
4414
|
+
if (cast->base.flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
|
4415
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
4416
|
+
pm_buffer_append_string(output_buffer, " ignore_visibility", 18);
|
4417
|
+
found = true;
|
4418
|
+
}
|
4374
4419
|
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
4375
4420
|
pm_buffer_append_byte(output_buffer, '\n');
|
4376
4421
|
}
|
@@ -4528,6 +4573,11 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
4528
4573
|
pm_buffer_append_string(output_buffer, " attribute_write", 16);
|
4529
4574
|
found = true;
|
4530
4575
|
}
|
4576
|
+
if (cast->base.flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
|
4577
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
4578
|
+
pm_buffer_append_string(output_buffer, " ignore_visibility", 18);
|
4579
|
+
found = true;
|
4580
|
+
}
|
4531
4581
|
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
4532
4582
|
pm_buffer_append_byte(output_buffer, '\n');
|
4533
4583
|
}
|
@@ -4676,6 +4726,11 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
4676
4726
|
pm_buffer_append_string(output_buffer, " attribute_write", 16);
|
4677
4727
|
found = true;
|
4678
4728
|
}
|
4729
|
+
if (cast->base.flags & PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY) {
|
4730
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
4731
|
+
pm_buffer_append_string(output_buffer, " ignore_visibility", 18);
|
4732
|
+
found = true;
|
4733
|
+
}
|
4679
4734
|
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
4680
4735
|
pm_buffer_append_byte(output_buffer, '\n');
|
4681
4736
|
}
|
@@ -5489,9 +5544,9 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
5489
5544
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
5490
5545
|
pm_buffer_append_string(output_buffer, "\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 flags:", 16);
|
5491
5546
|
bool found = false;
|
5492
|
-
if (cast->base.flags &
|
5547
|
+
if (cast->base.flags & PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS) {
|
5493
5548
|
if (found) pm_buffer_append_byte(output_buffer, ',');
|
5494
|
-
pm_buffer_append_string(output_buffer, "
|
5549
|
+
pm_buffer_append_string(output_buffer, " symbol_keys", 12);
|
5495
5550
|
found = true;
|
5496
5551
|
}
|
5497
5552
|
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
@@ -5531,6 +5586,20 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
5531
5586
|
prettyprint_location(output_buffer, parser, &node->location);
|
5532
5587
|
pm_buffer_append_string(output_buffer, ")\n", 2);
|
5533
5588
|
|
5589
|
+
// flags
|
5590
|
+
{
|
5591
|
+
pm_buffer_concat(output_buffer, prefix_buffer);
|
5592
|
+
pm_buffer_append_string(output_buffer, "\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 flags:", 16);
|
5593
|
+
bool found = false;
|
5594
|
+
if (cast->base.flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
|
5595
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
5596
|
+
pm_buffer_append_string(output_buffer, " repeated_parameter", 19);
|
5597
|
+
found = true;
|
5598
|
+
}
|
5599
|
+
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
5600
|
+
pm_buffer_append_byte(output_buffer, '\n');
|
5601
|
+
}
|
5602
|
+
|
5534
5603
|
// name
|
5535
5604
|
{
|
5536
5605
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
@@ -5592,13 +5661,6 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
5592
5661
|
pm_buffer_append_string(output_buffer, "]\n", 2);
|
5593
5662
|
}
|
5594
5663
|
|
5595
|
-
// locals_body_index
|
5596
|
-
{
|
5597
|
-
pm_buffer_concat(output_buffer, prefix_buffer);
|
5598
|
-
pm_buffer_append_string(output_buffer, "\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 locals_body_index:", 28);
|
5599
|
-
pm_buffer_append_format(output_buffer, " %d\n", cast->locals_body_index);
|
5600
|
-
}
|
5601
|
-
|
5602
5664
|
// operator_loc
|
5603
5665
|
{
|
5604
5666
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
@@ -5727,7 +5789,7 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
5727
5789
|
{
|
5728
5790
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
5729
5791
|
pm_buffer_append_string(output_buffer, "\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 depth:", 16);
|
5730
|
-
pm_buffer_append_format(output_buffer, " %
|
5792
|
+
pm_buffer_append_format(output_buffer, " %" PRIu32 "\n", cast->depth);
|
5731
5793
|
}
|
5732
5794
|
|
5733
5795
|
break;
|
@@ -5797,7 +5859,7 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
5797
5859
|
{
|
5798
5860
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
5799
5861
|
pm_buffer_append_string(output_buffer, "\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 depth:", 16);
|
5800
|
-
pm_buffer_append_format(output_buffer, " %
|
5862
|
+
pm_buffer_append_format(output_buffer, " %" PRIu32 "\n", cast->depth);
|
5801
5863
|
}
|
5802
5864
|
|
5803
5865
|
break;
|
@@ -5858,7 +5920,7 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
5858
5920
|
{
|
5859
5921
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
5860
5922
|
pm_buffer_append_string(output_buffer, "\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 depth:", 16);
|
5861
|
-
pm_buffer_append_format(output_buffer, " %
|
5923
|
+
pm_buffer_append_format(output_buffer, " %" PRIu32 "\n", cast->depth);
|
5862
5924
|
}
|
5863
5925
|
|
5864
5926
|
break;
|
@@ -5882,7 +5944,7 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
5882
5944
|
{
|
5883
5945
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
5884
5946
|
pm_buffer_append_string(output_buffer, "\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 depth:", 16);
|
5885
|
-
pm_buffer_append_format(output_buffer, " %
|
5947
|
+
pm_buffer_append_format(output_buffer, " %" PRIu32 "\n", cast->depth);
|
5886
5948
|
}
|
5887
5949
|
|
5888
5950
|
break;
|
@@ -5906,7 +5968,7 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
5906
5968
|
{
|
5907
5969
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
5908
5970
|
pm_buffer_append_string(output_buffer, "\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 depth:", 16);
|
5909
|
-
pm_buffer_append_format(output_buffer, " %
|
5971
|
+
pm_buffer_append_format(output_buffer, " %" PRIu32 "\n", cast->depth);
|
5910
5972
|
}
|
5911
5973
|
|
5912
5974
|
break;
|
@@ -5930,7 +5992,7 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
5930
5992
|
{
|
5931
5993
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
5932
5994
|
pm_buffer_append_string(output_buffer, "\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 depth:", 16);
|
5933
|
-
pm_buffer_append_format(output_buffer, " %
|
5995
|
+
pm_buffer_append_format(output_buffer, " %" PRIu32 "\n", cast->depth);
|
5934
5996
|
}
|
5935
5997
|
|
5936
5998
|
// name_loc
|
@@ -6642,7 +6704,7 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
6642
6704
|
{
|
6643
6705
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
6644
6706
|
pm_buffer_append_string(output_buffer, "\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 maximum:", 18);
|
6645
|
-
pm_buffer_append_format(output_buffer, " %
|
6707
|
+
pm_buffer_append_format(output_buffer, " %" PRIu8 "\n", cast->maximum);
|
6646
6708
|
}
|
6647
6709
|
|
6648
6710
|
break;
|
@@ -6657,7 +6719,7 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
6657
6719
|
{
|
6658
6720
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
6659
6721
|
pm_buffer_append_string(output_buffer, "\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 number:", 17);
|
6660
|
-
pm_buffer_append_format(output_buffer, " %
|
6722
|
+
pm_buffer_append_format(output_buffer, " %" PRIu32 "\n", cast->number);
|
6661
6723
|
}
|
6662
6724
|
|
6663
6725
|
break;
|
@@ -6668,6 +6730,20 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
6668
6730
|
prettyprint_location(output_buffer, parser, &node->location);
|
6669
6731
|
pm_buffer_append_string(output_buffer, ")\n", 2);
|
6670
6732
|
|
6733
|
+
// flags
|
6734
|
+
{
|
6735
|
+
pm_buffer_concat(output_buffer, prefix_buffer);
|
6736
|
+
pm_buffer_append_string(output_buffer, "\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 flags:", 16);
|
6737
|
+
bool found = false;
|
6738
|
+
if (cast->base.flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
|
6739
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
6740
|
+
pm_buffer_append_string(output_buffer, " repeated_parameter", 19);
|
6741
|
+
found = true;
|
6742
|
+
}
|
6743
|
+
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
6744
|
+
pm_buffer_append_byte(output_buffer, '\n');
|
6745
|
+
}
|
6746
|
+
|
6671
6747
|
// name
|
6672
6748
|
{
|
6673
6749
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
@@ -6710,6 +6786,20 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
6710
6786
|
prettyprint_location(output_buffer, parser, &node->location);
|
6711
6787
|
pm_buffer_append_string(output_buffer, ")\n", 2);
|
6712
6788
|
|
6789
|
+
// flags
|
6790
|
+
{
|
6791
|
+
pm_buffer_concat(output_buffer, prefix_buffer);
|
6792
|
+
pm_buffer_append_string(output_buffer, "\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 flags:", 16);
|
6793
|
+
bool found = false;
|
6794
|
+
if (cast->base.flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
|
6795
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
6796
|
+
pm_buffer_append_string(output_buffer, " repeated_parameter", 19);
|
6797
|
+
found = true;
|
6798
|
+
}
|
6799
|
+
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
6800
|
+
pm_buffer_append_byte(output_buffer, '\n');
|
6801
|
+
}
|
6802
|
+
|
6713
6803
|
// name
|
6714
6804
|
{
|
6715
6805
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
@@ -7476,6 +7566,20 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
7476
7566
|
prettyprint_location(output_buffer, parser, &node->location);
|
7477
7567
|
pm_buffer_append_string(output_buffer, ")\n", 2);
|
7478
7568
|
|
7569
|
+
// flags
|
7570
|
+
{
|
7571
|
+
pm_buffer_concat(output_buffer, prefix_buffer);
|
7572
|
+
pm_buffer_append_string(output_buffer, "\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 flags:", 16);
|
7573
|
+
bool found = false;
|
7574
|
+
if (cast->base.flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
|
7575
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
7576
|
+
pm_buffer_append_string(output_buffer, " repeated_parameter", 19);
|
7577
|
+
found = true;
|
7578
|
+
}
|
7579
|
+
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
7580
|
+
pm_buffer_append_byte(output_buffer, '\n');
|
7581
|
+
}
|
7582
|
+
|
7479
7583
|
// name
|
7480
7584
|
{
|
7481
7585
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
@@ -7505,6 +7609,20 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
7505
7609
|
prettyprint_location(output_buffer, parser, &node->location);
|
7506
7610
|
pm_buffer_append_string(output_buffer, ")\n", 2);
|
7507
7611
|
|
7612
|
+
// flags
|
7613
|
+
{
|
7614
|
+
pm_buffer_concat(output_buffer, prefix_buffer);
|
7615
|
+
pm_buffer_append_string(output_buffer, "\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 flags:", 16);
|
7616
|
+
bool found = false;
|
7617
|
+
if (cast->base.flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
|
7618
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
7619
|
+
pm_buffer_append_string(output_buffer, " repeated_parameter", 19);
|
7620
|
+
found = true;
|
7621
|
+
}
|
7622
|
+
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
7623
|
+
pm_buffer_append_byte(output_buffer, '\n');
|
7624
|
+
}
|
7625
|
+
|
7508
7626
|
// name
|
7509
7627
|
{
|
7510
7628
|
pm_buffer_concat(output_buffer, prefix_buffer);
|
@@ -7680,6 +7798,20 @@ prettyprint_node(pm_buffer_t *output_buffer, const pm_parser_t *parser, const pm
|
|
7680
7798
|
prettyprint_location(output_buffer, parser, &node->location);
|
7681
7799
|
pm_buffer_append_string(output_buffer, ")\n", 2);
|
7682
7800
|
|
7801
|
+
// flags
|
7802
|
+
{
|
7803
|
+
pm_buffer_concat(output_buffer, prefix_buffer);
|
7804
|
+
pm_buffer_append_string(output_buffer, "\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 flags:", 16);
|
7805
|
+
bool found = false;
|
7806
|
+
if (cast->base.flags & PM_PARAMETER_FLAGS_REPEATED_PARAMETER) {
|
7807
|
+
if (found) pm_buffer_append_byte(output_buffer, ',');
|
7808
|
+
pm_buffer_append_string(output_buffer, " repeated_parameter", 19);
|
7809
|
+
found = true;
|
7810
|
+
}
|
7811
|
+
if (!found) pm_buffer_append_string(output_buffer, " \xe2\x88\x85", 4);
|
7812
|
+
pm_buffer_append_byte(output_buffer, '\n');
|
7813
|
+
}
|
7814
|
+
|
7683
7815
|
// name
|
7684
7816
|
{
|
7685
7817
|
pm_buffer_concat(output_buffer, prefix_buffer);
|