prism 0.30.0 → 1.0.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 +31 -1
- data/README.md +3 -1
- data/config.yml +185 -126
- data/docs/serialization.md +3 -0
- data/ext/prism/api_node.c +2843 -2085
- data/ext/prism/extconf.rb +1 -1
- data/ext/prism/extension.c +35 -25
- data/ext/prism/extension.h +2 -2
- data/include/prism/ast.h +1048 -69
- data/include/prism/defines.h +9 -0
- data/include/prism/diagnostic.h +11 -3
- data/include/prism/options.h +55 -1
- data/include/prism/parser.h +27 -3
- data/include/prism/regexp.h +2 -1
- data/include/prism/util/pm_integer.h +6 -6
- data/include/prism/util/pm_newline_list.h +11 -0
- data/include/prism/util/pm_string.h +1 -0
- data/include/prism/version.h +3 -3
- data/lib/prism/desugar_compiler.rb +111 -74
- data/lib/prism/dispatcher.rb +2 -1
- data/lib/prism/dot_visitor.rb +21 -31
- data/lib/prism/dsl.rb +656 -471
- data/lib/prism/ffi.rb +3 -0
- data/lib/prism/inspect_visitor.rb +285 -57
- data/lib/prism/mutation_compiler.rb +5 -5
- data/lib/prism/node.rb +2282 -4754
- data/lib/prism/node_ext.rb +72 -11
- data/lib/prism/parse_result/errors.rb +65 -0
- data/lib/prism/parse_result/newlines.rb +28 -28
- data/lib/prism/parse_result.rb +25 -2
- data/lib/prism/reflection.rb +7 -7
- data/lib/prism/serialize.rb +468 -610
- data/lib/prism/translation/parser/compiler.rb +18 -18
- data/lib/prism/translation/parser/lexer.rb +1 -1
- data/lib/prism/translation/parser.rb +3 -3
- data/lib/prism/translation/ripper.rb +14 -14
- data/lib/prism/translation/ruby_parser.rb +43 -7
- data/prism.gemspec +3 -1
- data/rbi/prism/dsl.rbi +521 -0
- data/rbi/prism/node.rbi +1456 -5616
- data/rbi/prism.rbi +16 -16
- data/sig/prism/dsl.rbs +189 -305
- data/sig/prism/node.rbs +702 -603
- data/sig/prism/parse_result.rbs +2 -0
- data/src/diagnostic.c +22 -6
- data/src/node.c +277 -284
- data/src/options.c +18 -0
- data/src/prettyprint.c +99 -108
- data/src/prism.c +1282 -760
- data/src/regexp.c +72 -4
- data/src/serialize.c +165 -50
- data/src/token_type.c +2 -2
- data/src/util/pm_integer.c +14 -14
- data/src/util/pm_newline_list.c +29 -0
- data/src/util/pm_string.c +9 -5
- metadata +4 -2
data/include/prism/ast.h
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
|
1
|
+
/*----------------------------------------------------------------------------*/
|
2
2
|
/* This file is generated by the templates/template.rb script and should not */
|
3
3
|
/* be modified manually. See */
|
4
4
|
/* templates/include/prism/ast.h.erb */
|
5
5
|
/* if you are looking to modify the */
|
6
6
|
/* template */
|
7
|
-
|
7
|
+
/*----------------------------------------------------------------------------*/
|
8
8
|
|
9
9
|
/**
|
10
10
|
* @file ast.h
|
@@ -1043,11 +1043,8 @@ typedef uint16_t pm_node_flags_t;
|
|
1043
1043
|
* We store the flags enum in every node in the tree. Some flags are common to
|
1044
1044
|
* all nodes (the ones listed below). Others are specific to certain node types.
|
1045
1045
|
*/
|
1046
|
-
|
1047
|
-
|
1048
|
-
static const pm_node_flags_t PM_NODE_FLAG_NEWLINE = (1 << (PM_NODE_FLAG_BITS - 1));
|
1049
|
-
static const pm_node_flags_t PM_NODE_FLAG_STATIC_LITERAL = (1 << (PM_NODE_FLAG_BITS - 2));
|
1050
|
-
static const pm_node_flags_t PM_NODE_FLAG_COMMON_MASK = (1 << (PM_NODE_FLAG_BITS - 1)) | (1 << (PM_NODE_FLAG_BITS - 2));
|
1046
|
+
static const pm_node_flags_t PM_NODE_FLAG_NEWLINE = 0x1;
|
1047
|
+
static const pm_node_flags_t PM_NODE_FLAG_STATIC_LITERAL = 0x2;
|
1051
1048
|
|
1052
1049
|
/**
|
1053
1050
|
* Cast the type to an enum to allow the compiler to provide exhaustiveness
|
@@ -1082,6 +1079,12 @@ typedef struct pm_node {
|
|
1082
1079
|
*/
|
1083
1080
|
pm_node_flags_t flags;
|
1084
1081
|
|
1082
|
+
/**
|
1083
|
+
* The unique identifier for this node, which is deterministic based on the
|
1084
|
+
* source. It is used to identify unique nodes across parses.
|
1085
|
+
*/
|
1086
|
+
uint32_t node_id;
|
1087
|
+
|
1085
1088
|
/**
|
1086
1089
|
* This is the location of the node in the source. It's a range of bytes
|
1087
1090
|
* containing a start and an end.
|
@@ -1092,6 +1095,11 @@ typedef struct pm_node {
|
|
1092
1095
|
/**
|
1093
1096
|
* AliasGlobalVariableNode
|
1094
1097
|
*
|
1098
|
+
* Represents the use of the `alias` keyword to alias a global variable.
|
1099
|
+
*
|
1100
|
+
* alias $foo $bar
|
1101
|
+
* ^^^^^^^^^^^^^^^
|
1102
|
+
*
|
1095
1103
|
* Type: PM_ALIAS_GLOBAL_VARIABLE_NODE
|
1096
1104
|
*
|
1097
1105
|
* @extends pm_node_t
|
@@ -1103,7 +1111,7 @@ typedef struct pm_alias_global_variable_node {
|
|
1103
1111
|
/**
|
1104
1112
|
* AliasGlobalVariableNode#new_name
|
1105
1113
|
*
|
1106
|
-
* Represents the new name of the global variable that can be used after aliasing.
|
1114
|
+
* Represents the new name of the global variable that can be used after aliasing.
|
1107
1115
|
*
|
1108
1116
|
* alias $foo $bar
|
1109
1117
|
* ^^^^
|
@@ -1113,7 +1121,7 @@ typedef struct pm_alias_global_variable_node {
|
|
1113
1121
|
/**
|
1114
1122
|
* AliasGlobalVariableNode#old_name
|
1115
1123
|
*
|
1116
|
-
* Represents the old name of the global variable that
|
1124
|
+
* Represents the old name of the global variable that can be used before aliasing.
|
1117
1125
|
*
|
1118
1126
|
* alias $foo $bar
|
1119
1127
|
* ^^^^
|
@@ -1134,6 +1142,11 @@ typedef struct pm_alias_global_variable_node {
|
|
1134
1142
|
/**
|
1135
1143
|
* AliasMethodNode
|
1136
1144
|
*
|
1145
|
+
* Represents the use of the `alias` keyword to alias a method.
|
1146
|
+
*
|
1147
|
+
* alias foo bar
|
1148
|
+
* ^^^^^^^^^^^^^
|
1149
|
+
*
|
1137
1150
|
* Type: PM_ALIAS_METHOD_NODE
|
1138
1151
|
*
|
1139
1152
|
* @extends pm_node_t
|
@@ -1161,6 +1174,11 @@ typedef struct pm_alias_method_node {
|
|
1161
1174
|
/**
|
1162
1175
|
* AlternationPatternNode
|
1163
1176
|
*
|
1177
|
+
* Represents an alternation pattern in pattern matching.
|
1178
|
+
*
|
1179
|
+
* foo => bar | baz
|
1180
|
+
* ^^^^^^^^^
|
1181
|
+
*
|
1164
1182
|
* Type: PM_ALTERNATION_PATTERN_NODE
|
1165
1183
|
*
|
1166
1184
|
* @extends pm_node_t
|
@@ -1188,6 +1206,11 @@ typedef struct pm_alternation_pattern_node {
|
|
1188
1206
|
/**
|
1189
1207
|
* AndNode
|
1190
1208
|
*
|
1209
|
+
* Represents the use of the `&&` operator or the `and` keyword.
|
1210
|
+
*
|
1211
|
+
* left and right
|
1212
|
+
* ^^^^^^^^^^^^^^
|
1213
|
+
*
|
1191
1214
|
* Type: PM_AND_NODE
|
1192
1215
|
*
|
1193
1216
|
* @extends pm_node_t
|
@@ -1236,10 +1259,16 @@ typedef struct pm_and_node {
|
|
1236
1259
|
/**
|
1237
1260
|
* ArgumentsNode
|
1238
1261
|
*
|
1262
|
+
* Represents a set of arguments to a method or a keyword.
|
1263
|
+
*
|
1264
|
+
* return foo, bar, baz
|
1265
|
+
* ^^^^^^^^^^^^^
|
1266
|
+
*
|
1239
1267
|
* Type: PM_ARGUMENTS_NODE
|
1240
1268
|
* Flags:
|
1241
1269
|
* PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS
|
1242
1270
|
* PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT
|
1271
|
+
* PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT
|
1243
1272
|
*
|
1244
1273
|
* @extends pm_node_t
|
1245
1274
|
*/
|
@@ -1256,6 +1285,11 @@ typedef struct pm_arguments_node {
|
|
1256
1285
|
/**
|
1257
1286
|
* ArrayNode
|
1258
1287
|
*
|
1288
|
+
* Represents an array literal. This can be a regular array using brackets or a special array using % like %w or %i.
|
1289
|
+
*
|
1290
|
+
* [1, 2, 3]
|
1291
|
+
* ^^^^^^^^^
|
1292
|
+
*
|
1259
1293
|
* Type: PM_ARRAY_NODE
|
1260
1294
|
* Flags:
|
1261
1295
|
* PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT
|
@@ -1301,6 +1335,23 @@ typedef struct pm_array_node {
|
|
1301
1335
|
/**
|
1302
1336
|
* ArrayPatternNode
|
1303
1337
|
*
|
1338
|
+
* Represents an array pattern in pattern matching.
|
1339
|
+
*
|
1340
|
+
* foo in 1, 2
|
1341
|
+
* ^^^^^^^^^^^
|
1342
|
+
*
|
1343
|
+
* foo in [1, 2]
|
1344
|
+
* ^^^^^^^^^^^^^
|
1345
|
+
*
|
1346
|
+
* foo in *1
|
1347
|
+
* ^^^^^^^^^
|
1348
|
+
*
|
1349
|
+
* foo in Bar[]
|
1350
|
+
* ^^^^^^^^^^^^
|
1351
|
+
*
|
1352
|
+
* foo in Bar[1, 2, 3]
|
1353
|
+
* ^^^^^^^^^^^^^^^^^^^
|
1354
|
+
*
|
1304
1355
|
* Type: PM_ARRAY_PATTERN_NODE
|
1305
1356
|
*
|
1306
1357
|
* @extends pm_node_t
|
@@ -1343,6 +1394,11 @@ typedef struct pm_array_pattern_node {
|
|
1343
1394
|
/**
|
1344
1395
|
* AssocNode
|
1345
1396
|
*
|
1397
|
+
* Represents a hash key/value pair.
|
1398
|
+
*
|
1399
|
+
* { a => b }
|
1400
|
+
* ^^^^^^
|
1401
|
+
*
|
1346
1402
|
* Type: PM_ASSOC_NODE
|
1347
1403
|
*
|
1348
1404
|
* @extends pm_node_t
|
@@ -1394,6 +1450,11 @@ typedef struct pm_assoc_node {
|
|
1394
1450
|
/**
|
1395
1451
|
* AssocSplatNode
|
1396
1452
|
*
|
1453
|
+
* Represents a splat in a hash literal.
|
1454
|
+
*
|
1455
|
+
* { **foo }
|
1456
|
+
* ^^^^^
|
1457
|
+
*
|
1397
1458
|
* Type: PM_ASSOC_SPLAT_NODE
|
1398
1459
|
*
|
1399
1460
|
* @extends pm_node_t
|
@@ -1426,6 +1487,11 @@ typedef struct pm_assoc_splat_node {
|
|
1426
1487
|
/**
|
1427
1488
|
* BackReferenceReadNode
|
1428
1489
|
*
|
1490
|
+
* Represents reading a reference to a field in the previous match.
|
1491
|
+
*
|
1492
|
+
* $'
|
1493
|
+
* ^^
|
1494
|
+
*
|
1429
1495
|
* Type: PM_BACK_REFERENCE_READ_NODE
|
1430
1496
|
*
|
1431
1497
|
* @extends pm_node_t
|
@@ -1449,6 +1515,13 @@ typedef struct pm_back_reference_read_node {
|
|
1449
1515
|
/**
|
1450
1516
|
* BeginNode
|
1451
1517
|
*
|
1518
|
+
* Represents a begin statement.
|
1519
|
+
*
|
1520
|
+
* begin
|
1521
|
+
* foo
|
1522
|
+
* end
|
1523
|
+
* ^^^^^
|
1524
|
+
*
|
1452
1525
|
* Type: PM_BEGIN_NODE
|
1453
1526
|
*
|
1454
1527
|
* @extends pm_node_t
|
@@ -1491,6 +1564,11 @@ typedef struct pm_begin_node {
|
|
1491
1564
|
/**
|
1492
1565
|
* BlockArgumentNode
|
1493
1566
|
*
|
1567
|
+
* Represents a block argument using `&`.
|
1568
|
+
*
|
1569
|
+
* bar(&args)
|
1570
|
+
* ^^^^^^^^^^
|
1571
|
+
*
|
1494
1572
|
* Type: PM_BLOCK_ARGUMENT_NODE
|
1495
1573
|
*
|
1496
1574
|
* @extends pm_node_t
|
@@ -1513,6 +1591,11 @@ typedef struct pm_block_argument_node {
|
|
1513
1591
|
/**
|
1514
1592
|
* BlockLocalVariableNode
|
1515
1593
|
*
|
1594
|
+
* Represents a block local variable.
|
1595
|
+
*
|
1596
|
+
* a { |; b| }
|
1597
|
+
* ^
|
1598
|
+
*
|
1516
1599
|
* Type: PM_BLOCK_LOCAL_VARIABLE_NODE
|
1517
1600
|
* Flags:
|
1518
1601
|
* PM_PARAMETER_FLAGS_REPEATED_PARAMETER
|
@@ -1532,6 +1615,11 @@ typedef struct pm_block_local_variable_node {
|
|
1532
1615
|
/**
|
1533
1616
|
* BlockNode
|
1534
1617
|
*
|
1618
|
+
* Represents a block of ruby code.
|
1619
|
+
*
|
1620
|
+
* [1, 2, 3].each { |i| puts x }
|
1621
|
+
* ^^^^^^^^^^^^^^
|
1622
|
+
*
|
1535
1623
|
* Type: PM_BLOCK_NODE
|
1536
1624
|
*
|
1537
1625
|
* @extends pm_node_t
|
@@ -1569,6 +1657,12 @@ typedef struct pm_block_node {
|
|
1569
1657
|
/**
|
1570
1658
|
* BlockParameterNode
|
1571
1659
|
*
|
1660
|
+
* Represents a block parameter of a method, block, or lambda definition.
|
1661
|
+
*
|
1662
|
+
* def a(&b)
|
1663
|
+
* ^^
|
1664
|
+
* end
|
1665
|
+
*
|
1572
1666
|
* Type: PM_BLOCK_PARAMETER_NODE
|
1573
1667
|
* Flags:
|
1574
1668
|
* PM_PARAMETER_FLAGS_REPEATED_PARAMETER
|
@@ -1598,6 +1692,15 @@ typedef struct pm_block_parameter_node {
|
|
1598
1692
|
/**
|
1599
1693
|
* BlockParametersNode
|
1600
1694
|
*
|
1695
|
+
* Represents a block's parameters declaration.
|
1696
|
+
*
|
1697
|
+
* -> (a, b = 1; local) { }
|
1698
|
+
* ^^^^^^^^^^^^^^^^^
|
1699
|
+
*
|
1700
|
+
* foo do |a, b = 1; local|
|
1701
|
+
* ^^^^^^^^^^^^^^^^^
|
1702
|
+
* end
|
1703
|
+
*
|
1601
1704
|
* Type: PM_BLOCK_PARAMETERS_NODE
|
1602
1705
|
*
|
1603
1706
|
* @extends pm_node_t
|
@@ -1630,6 +1733,11 @@ typedef struct pm_block_parameters_node {
|
|
1630
1733
|
/**
|
1631
1734
|
* BreakNode
|
1632
1735
|
*
|
1736
|
+
* Represents the use of the `break` keyword.
|
1737
|
+
*
|
1738
|
+
* break foo
|
1739
|
+
* ^^^^^^^^^
|
1740
|
+
*
|
1633
1741
|
* Type: PM_BREAK_NODE
|
1634
1742
|
*
|
1635
1743
|
* @extends pm_node_t
|
@@ -1662,6 +1770,11 @@ typedef struct pm_break_node {
|
|
1662
1770
|
/**
|
1663
1771
|
* CallAndWriteNode
|
1664
1772
|
*
|
1773
|
+
* Represents the use of the `&&=` operator on a call.
|
1774
|
+
*
|
1775
|
+
* foo.bar &&= value
|
1776
|
+
* ^^^^^^^^^^^^^^^^^
|
1777
|
+
*
|
1665
1778
|
* Type: PM_CALL_AND_WRITE_NODE
|
1666
1779
|
* Flags:
|
1667
1780
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
@@ -1714,6 +1827,26 @@ typedef struct pm_call_and_write_node {
|
|
1714
1827
|
/**
|
1715
1828
|
* CallNode
|
1716
1829
|
*
|
1830
|
+
* Represents a method call, in all of the various forms that can take.
|
1831
|
+
*
|
1832
|
+
* foo
|
1833
|
+
* ^^^
|
1834
|
+
*
|
1835
|
+
* foo()
|
1836
|
+
* ^^^^^
|
1837
|
+
*
|
1838
|
+
* +foo
|
1839
|
+
* ^^^^
|
1840
|
+
*
|
1841
|
+
* foo + bar
|
1842
|
+
* ^^^^^^^^^
|
1843
|
+
*
|
1844
|
+
* foo.bar
|
1845
|
+
* ^^^^^^^
|
1846
|
+
*
|
1847
|
+
* foo&.bar
|
1848
|
+
* ^^^^^^^^
|
1849
|
+
*
|
1717
1850
|
* Type: PM_CALL_NODE
|
1718
1851
|
* Flags:
|
1719
1852
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
@@ -1782,6 +1915,11 @@ typedef struct pm_call_node {
|
|
1782
1915
|
/**
|
1783
1916
|
* CallOperatorWriteNode
|
1784
1917
|
*
|
1918
|
+
* Represents the use of an assignment operator on a call.
|
1919
|
+
*
|
1920
|
+
* foo.bar += baz
|
1921
|
+
* ^^^^^^^^^^^^^^
|
1922
|
+
*
|
1785
1923
|
* Type: PM_CALL_OPERATOR_WRITE_NODE
|
1786
1924
|
* Flags:
|
1787
1925
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
@@ -1839,6 +1977,11 @@ typedef struct pm_call_operator_write_node {
|
|
1839
1977
|
/**
|
1840
1978
|
* CallOrWriteNode
|
1841
1979
|
*
|
1980
|
+
* Represents the use of the `||=` operator on a call.
|
1981
|
+
*
|
1982
|
+
* foo.bar ||= value
|
1983
|
+
* ^^^^^^^^^^^^^^^^^
|
1984
|
+
*
|
1842
1985
|
* Type: PM_CALL_OR_WRITE_NODE
|
1843
1986
|
* Flags:
|
1844
1987
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
@@ -1891,6 +2034,19 @@ typedef struct pm_call_or_write_node {
|
|
1891
2034
|
/**
|
1892
2035
|
* CallTargetNode
|
1893
2036
|
*
|
2037
|
+
* Represents assigning to a method call.
|
2038
|
+
*
|
2039
|
+
* foo.bar, = 1
|
2040
|
+
* ^^^^^^^
|
2041
|
+
*
|
2042
|
+
* begin
|
2043
|
+
* rescue => foo.bar
|
2044
|
+
* ^^^^^^^
|
2045
|
+
* end
|
2046
|
+
*
|
2047
|
+
* for foo.bar in baz do end
|
2048
|
+
* ^^^^^^^
|
2049
|
+
*
|
1894
2050
|
* Type: PM_CALL_TARGET_NODE
|
1895
2051
|
* Flags:
|
1896
2052
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
@@ -1928,6 +2084,11 @@ typedef struct pm_call_target_node {
|
|
1928
2084
|
/**
|
1929
2085
|
* CapturePatternNode
|
1930
2086
|
*
|
2087
|
+
* Represents assigning to a local variable in pattern matching.
|
2088
|
+
*
|
2089
|
+
* foo => [bar => baz]
|
2090
|
+
* ^^^^^^^^^^^^
|
2091
|
+
*
|
1931
2092
|
* Type: PM_CAPTURE_PATTERN_NODE
|
1932
2093
|
*
|
1933
2094
|
* @extends pm_node_t
|
@@ -1955,6 +2116,13 @@ typedef struct pm_capture_pattern_node {
|
|
1955
2116
|
/**
|
1956
2117
|
* CaseMatchNode
|
1957
2118
|
*
|
2119
|
+
* Represents the use of a case statement for pattern matching.
|
2120
|
+
*
|
2121
|
+
* case true
|
2122
|
+
* in false
|
2123
|
+
* end
|
2124
|
+
* ^^^^^^^^^
|
2125
|
+
*
|
1958
2126
|
* Type: PM_CASE_MATCH_NODE
|
1959
2127
|
*
|
1960
2128
|
* @extends pm_node_t
|
@@ -1974,9 +2142,9 @@ typedef struct pm_case_match_node {
|
|
1974
2142
|
struct pm_node_list conditions;
|
1975
2143
|
|
1976
2144
|
/**
|
1977
|
-
* CaseMatchNode#
|
2145
|
+
* CaseMatchNode#else_clause
|
1978
2146
|
*/
|
1979
|
-
struct pm_else_node *
|
2147
|
+
struct pm_else_node *else_clause;
|
1980
2148
|
|
1981
2149
|
/**
|
1982
2150
|
* CaseMatchNode#case_keyword_loc
|
@@ -1992,6 +2160,13 @@ typedef struct pm_case_match_node {
|
|
1992
2160
|
/**
|
1993
2161
|
* CaseNode
|
1994
2162
|
*
|
2163
|
+
* Represents the use of a case statement.
|
2164
|
+
*
|
2165
|
+
* case true
|
2166
|
+
* when false
|
2167
|
+
* end
|
2168
|
+
* ^^^^^^^^^^
|
2169
|
+
*
|
1995
2170
|
* Type: PM_CASE_NODE
|
1996
2171
|
*
|
1997
2172
|
* @extends pm_node_t
|
@@ -2011,9 +2186,9 @@ typedef struct pm_case_node {
|
|
2011
2186
|
struct pm_node_list conditions;
|
2012
2187
|
|
2013
2188
|
/**
|
2014
|
-
* CaseNode#
|
2189
|
+
* CaseNode#else_clause
|
2015
2190
|
*/
|
2016
|
-
struct pm_else_node *
|
2191
|
+
struct pm_else_node *else_clause;
|
2017
2192
|
|
2018
2193
|
/**
|
2019
2194
|
* CaseNode#case_keyword_loc
|
@@ -2029,6 +2204,11 @@ typedef struct pm_case_node {
|
|
2029
2204
|
/**
|
2030
2205
|
* ClassNode
|
2031
2206
|
*
|
2207
|
+
* Represents a class declaration involving the `class` keyword.
|
2208
|
+
*
|
2209
|
+
* class Foo end
|
2210
|
+
* ^^^^^^^^^^^^^
|
2211
|
+
*
|
2032
2212
|
* Type: PM_CLASS_NODE
|
2033
2213
|
*
|
2034
2214
|
* @extends pm_node_t
|
@@ -2081,6 +2261,11 @@ typedef struct pm_class_node {
|
|
2081
2261
|
/**
|
2082
2262
|
* ClassVariableAndWriteNode
|
2083
2263
|
*
|
2264
|
+
* Represents the use of the `&&=` operator for assignment to a class variable.
|
2265
|
+
*
|
2266
|
+
* @@target &&= value
|
2267
|
+
* ^^^^^^^^^^^^^^^^^^
|
2268
|
+
*
|
2084
2269
|
* Type: PM_CLASS_VARIABLE_AND_WRITE_NODE
|
2085
2270
|
*
|
2086
2271
|
* @extends pm_node_t
|
@@ -2113,6 +2298,11 @@ typedef struct pm_class_variable_and_write_node {
|
|
2113
2298
|
/**
|
2114
2299
|
* ClassVariableOperatorWriteNode
|
2115
2300
|
*
|
2301
|
+
* Represents assigning to a class variable using an operator that isn't `=`.
|
2302
|
+
*
|
2303
|
+
* @@target += value
|
2304
|
+
* ^^^^^^^^^^^^^^^^^
|
2305
|
+
*
|
2116
2306
|
* Type: PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE
|
2117
2307
|
*
|
2118
2308
|
* @extends pm_node_t
|
@@ -2150,6 +2340,11 @@ typedef struct pm_class_variable_operator_write_node {
|
|
2150
2340
|
/**
|
2151
2341
|
* ClassVariableOrWriteNode
|
2152
2342
|
*
|
2343
|
+
* Represents the use of the `||=` operator for assignment to a class variable.
|
2344
|
+
*
|
2345
|
+
* @@target ||= value
|
2346
|
+
* ^^^^^^^^^^^^^^^^^^
|
2347
|
+
*
|
2153
2348
|
* Type: PM_CLASS_VARIABLE_OR_WRITE_NODE
|
2154
2349
|
*
|
2155
2350
|
* @extends pm_node_t
|
@@ -2182,6 +2377,11 @@ typedef struct pm_class_variable_or_write_node {
|
|
2182
2377
|
/**
|
2183
2378
|
* ClassVariableReadNode
|
2184
2379
|
*
|
2380
|
+
* Represents referencing a class variable.
|
2381
|
+
*
|
2382
|
+
* @@foo
|
2383
|
+
* ^^^^^
|
2384
|
+
*
|
2185
2385
|
* Type: PM_CLASS_VARIABLE_READ_NODE
|
2186
2386
|
*
|
2187
2387
|
* @extends pm_node_t
|
@@ -2205,6 +2405,11 @@ typedef struct pm_class_variable_read_node {
|
|
2205
2405
|
/**
|
2206
2406
|
* ClassVariableTargetNode
|
2207
2407
|
*
|
2408
|
+
* Represents writing to a class variable in a context that doesn't have an explicit value.
|
2409
|
+
*
|
2410
|
+
* @@foo, @@bar = baz
|
2411
|
+
* ^^^^^ ^^^^^
|
2412
|
+
*
|
2208
2413
|
* Type: PM_CLASS_VARIABLE_TARGET_NODE
|
2209
2414
|
*
|
2210
2415
|
* @extends pm_node_t
|
@@ -2222,6 +2427,11 @@ typedef struct pm_class_variable_target_node {
|
|
2222
2427
|
/**
|
2223
2428
|
* ClassVariableWriteNode
|
2224
2429
|
*
|
2430
|
+
* Represents writing to a class variable.
|
2431
|
+
*
|
2432
|
+
* @@foo = 1
|
2433
|
+
* ^^^^^^^^^
|
2434
|
+
*
|
2225
2435
|
* Type: PM_CLASS_VARIABLE_WRITE_NODE
|
2226
2436
|
*
|
2227
2437
|
* @extends pm_node_t
|
@@ -2278,6 +2488,11 @@ typedef struct pm_class_variable_write_node {
|
|
2278
2488
|
/**
|
2279
2489
|
* ConstantAndWriteNode
|
2280
2490
|
*
|
2491
|
+
* Represents the use of the `&&=` operator for assignment to a constant.
|
2492
|
+
*
|
2493
|
+
* Target &&= value
|
2494
|
+
* ^^^^^^^^^^^^^^^^
|
2495
|
+
*
|
2281
2496
|
* Type: PM_CONSTANT_AND_WRITE_NODE
|
2282
2497
|
*
|
2283
2498
|
* @extends pm_node_t
|
@@ -2310,6 +2525,11 @@ typedef struct pm_constant_and_write_node {
|
|
2310
2525
|
/**
|
2311
2526
|
* ConstantOperatorWriteNode
|
2312
2527
|
*
|
2528
|
+
* Represents assigning to a constant using an operator that isn't `=`.
|
2529
|
+
*
|
2530
|
+
* Target += value
|
2531
|
+
* ^^^^^^^^^^^^^^^
|
2532
|
+
*
|
2313
2533
|
* Type: PM_CONSTANT_OPERATOR_WRITE_NODE
|
2314
2534
|
*
|
2315
2535
|
* @extends pm_node_t
|
@@ -2347,6 +2567,11 @@ typedef struct pm_constant_operator_write_node {
|
|
2347
2567
|
/**
|
2348
2568
|
* ConstantOrWriteNode
|
2349
2569
|
*
|
2570
|
+
* Represents the use of the `||=` operator for assignment to a constant.
|
2571
|
+
*
|
2572
|
+
* Target ||= value
|
2573
|
+
* ^^^^^^^^^^^^^^^^
|
2574
|
+
*
|
2350
2575
|
* Type: PM_CONSTANT_OR_WRITE_NODE
|
2351
2576
|
*
|
2352
2577
|
* @extends pm_node_t
|
@@ -2379,6 +2604,11 @@ typedef struct pm_constant_or_write_node {
|
|
2379
2604
|
/**
|
2380
2605
|
* ConstantPathAndWriteNode
|
2381
2606
|
*
|
2607
|
+
* Represents the use of the `&&=` operator for assignment to a constant path.
|
2608
|
+
*
|
2609
|
+
* Parent::Child &&= value
|
2610
|
+
* ^^^^^^^^^^^^^^^^^^^^^^^
|
2611
|
+
*
|
2382
2612
|
* Type: PM_CONSTANT_PATH_AND_WRITE_NODE
|
2383
2613
|
*
|
2384
2614
|
* @extends pm_node_t
|
@@ -2406,6 +2636,11 @@ typedef struct pm_constant_path_and_write_node {
|
|
2406
2636
|
/**
|
2407
2637
|
* ConstantPathNode
|
2408
2638
|
*
|
2639
|
+
* Represents accessing a constant through a path of `::` operators.
|
2640
|
+
*
|
2641
|
+
* Foo::Bar
|
2642
|
+
* ^^^^^^^^
|
2643
|
+
*
|
2409
2644
|
* Type: PM_CONSTANT_PATH_NODE
|
2410
2645
|
*
|
2411
2646
|
* @extends pm_node_t
|
@@ -2467,6 +2702,11 @@ typedef struct pm_constant_path_node {
|
|
2467
2702
|
/**
|
2468
2703
|
* ConstantPathOperatorWriteNode
|
2469
2704
|
*
|
2705
|
+
* Represents assigning to a constant path using an operator that isn't `=`.
|
2706
|
+
*
|
2707
|
+
* Parent::Child += value
|
2708
|
+
* ^^^^^^^^^^^^^^^^^^^^^^
|
2709
|
+
*
|
2470
2710
|
* Type: PM_CONSTANT_PATH_OPERATOR_WRITE_NODE
|
2471
2711
|
*
|
2472
2712
|
* @extends pm_node_t
|
@@ -2499,6 +2739,11 @@ typedef struct pm_constant_path_operator_write_node {
|
|
2499
2739
|
/**
|
2500
2740
|
* ConstantPathOrWriteNode
|
2501
2741
|
*
|
2742
|
+
* Represents the use of the `||=` operator for assignment to a constant path.
|
2743
|
+
*
|
2744
|
+
* Parent::Child ||= value
|
2745
|
+
* ^^^^^^^^^^^^^^^^^^^^^^^
|
2746
|
+
*
|
2502
2747
|
* Type: PM_CONSTANT_PATH_OR_WRITE_NODE
|
2503
2748
|
*
|
2504
2749
|
* @extends pm_node_t
|
@@ -2526,6 +2771,11 @@ typedef struct pm_constant_path_or_write_node {
|
|
2526
2771
|
/**
|
2527
2772
|
* ConstantPathTargetNode
|
2528
2773
|
*
|
2774
|
+
* Represents writing to a constant path in a context that doesn't have an explicit value.
|
2775
|
+
*
|
2776
|
+
* Foo::Foo, Bar::Bar = baz
|
2777
|
+
* ^^^^^^^^ ^^^^^^^^
|
2778
|
+
*
|
2529
2779
|
* Type: PM_CONSTANT_PATH_TARGET_NODE
|
2530
2780
|
*
|
2531
2781
|
* @extends pm_node_t
|
@@ -2558,6 +2808,17 @@ typedef struct pm_constant_path_target_node {
|
|
2558
2808
|
/**
|
2559
2809
|
* ConstantPathWriteNode
|
2560
2810
|
*
|
2811
|
+
* Represents writing to a constant path.
|
2812
|
+
*
|
2813
|
+
* ::Foo = 1
|
2814
|
+
* ^^^^^^^^^
|
2815
|
+
*
|
2816
|
+
* Foo::Bar = 1
|
2817
|
+
* ^^^^^^^^^^^^
|
2818
|
+
*
|
2819
|
+
* ::Foo::Bar = 1
|
2820
|
+
* ^^^^^^^^^^^^^^
|
2821
|
+
*
|
2561
2822
|
* Type: PM_CONSTANT_PATH_WRITE_NODE
|
2562
2823
|
*
|
2563
2824
|
* @extends pm_node_t
|
@@ -2603,6 +2864,11 @@ typedef struct pm_constant_path_write_node {
|
|
2603
2864
|
/**
|
2604
2865
|
* ConstantReadNode
|
2605
2866
|
*
|
2867
|
+
* Represents referencing a constant.
|
2868
|
+
*
|
2869
|
+
* Foo
|
2870
|
+
* ^^^
|
2871
|
+
*
|
2606
2872
|
* Type: PM_CONSTANT_READ_NODE
|
2607
2873
|
*
|
2608
2874
|
* @extends pm_node_t
|
@@ -2626,6 +2892,11 @@ typedef struct pm_constant_read_node {
|
|
2626
2892
|
/**
|
2627
2893
|
* ConstantTargetNode
|
2628
2894
|
*
|
2895
|
+
* Represents writing to a constant in a context that doesn't have an explicit value.
|
2896
|
+
*
|
2897
|
+
* Foo, Bar = baz
|
2898
|
+
* ^^^ ^^^
|
2899
|
+
*
|
2629
2900
|
* Type: PM_CONSTANT_TARGET_NODE
|
2630
2901
|
*
|
2631
2902
|
* @extends pm_node_t
|
@@ -2643,6 +2914,11 @@ typedef struct pm_constant_target_node {
|
|
2643
2914
|
/**
|
2644
2915
|
* ConstantWriteNode
|
2645
2916
|
*
|
2917
|
+
* Represents writing to a constant.
|
2918
|
+
*
|
2919
|
+
* Foo = 1
|
2920
|
+
* ^^^^^^^
|
2921
|
+
*
|
2646
2922
|
* Type: PM_CONSTANT_WRITE_NODE
|
2647
2923
|
*
|
2648
2924
|
* @extends pm_node_t
|
@@ -2699,6 +2975,12 @@ typedef struct pm_constant_write_node {
|
|
2699
2975
|
/**
|
2700
2976
|
* DefNode
|
2701
2977
|
*
|
2978
|
+
* Represents a method definition.
|
2979
|
+
*
|
2980
|
+
* def method
|
2981
|
+
* end
|
2982
|
+
* ^^^^^^^^^^
|
2983
|
+
*
|
2702
2984
|
* Type: PM_DEF_NODE
|
2703
2985
|
*
|
2704
2986
|
* @extends pm_node_t
|
@@ -2771,6 +3053,11 @@ typedef struct pm_def_node {
|
|
2771
3053
|
/**
|
2772
3054
|
* DefinedNode
|
2773
3055
|
*
|
3056
|
+
* Represents the use of the `defined?` keyword.
|
3057
|
+
*
|
3058
|
+
* defined?(a)
|
3059
|
+
* ^^^^^^^^^^^
|
3060
|
+
*
|
2774
3061
|
* Type: PM_DEFINED_NODE
|
2775
3062
|
*
|
2776
3063
|
* @extends pm_node_t
|
@@ -2803,6 +3090,11 @@ typedef struct pm_defined_node {
|
|
2803
3090
|
/**
|
2804
3091
|
* ElseNode
|
2805
3092
|
*
|
3093
|
+
* Represents an `else` clause in a `case`, `if`, or `unless` statement.
|
3094
|
+
*
|
3095
|
+
* if a then b else c end
|
3096
|
+
* ^^^^^^^^^^
|
3097
|
+
*
|
2806
3098
|
* Type: PM_ELSE_NODE
|
2807
3099
|
*
|
2808
3100
|
* @extends pm_node_t
|
@@ -2830,6 +3122,11 @@ typedef struct pm_else_node {
|
|
2830
3122
|
/**
|
2831
3123
|
* EmbeddedStatementsNode
|
2832
3124
|
*
|
3125
|
+
* Represents an interpolated set of statements.
|
3126
|
+
*
|
3127
|
+
* "foo #{bar}"
|
3128
|
+
* ^^^^^^
|
3129
|
+
*
|
2833
3130
|
* Type: PM_EMBEDDED_STATEMENTS_NODE
|
2834
3131
|
*
|
2835
3132
|
* @extends pm_node_t
|
@@ -2857,6 +3154,11 @@ typedef struct pm_embedded_statements_node {
|
|
2857
3154
|
/**
|
2858
3155
|
* EmbeddedVariableNode
|
2859
3156
|
*
|
3157
|
+
* Represents an interpolated variable.
|
3158
|
+
*
|
3159
|
+
* "foo #@bar"
|
3160
|
+
* ^^^^^
|
3161
|
+
*
|
2860
3162
|
* Type: PM_EMBEDDED_VARIABLE_NODE
|
2861
3163
|
*
|
2862
3164
|
* @extends pm_node_t
|
@@ -2879,6 +3181,15 @@ typedef struct pm_embedded_variable_node {
|
|
2879
3181
|
/**
|
2880
3182
|
* EnsureNode
|
2881
3183
|
*
|
3184
|
+
* Represents an `ensure` clause in a `begin` statement.
|
3185
|
+
*
|
3186
|
+
* begin
|
3187
|
+
* foo
|
3188
|
+
* ensure
|
3189
|
+
* ^^^^^^
|
3190
|
+
* bar
|
3191
|
+
* end
|
3192
|
+
*
|
2882
3193
|
* Type: PM_ENSURE_NODE
|
2883
3194
|
*
|
2884
3195
|
* @extends pm_node_t
|
@@ -2906,6 +3217,11 @@ typedef struct pm_ensure_node {
|
|
2906
3217
|
/**
|
2907
3218
|
* FalseNode
|
2908
3219
|
*
|
3220
|
+
* Represents the use of the literal `false` keyword.
|
3221
|
+
*
|
3222
|
+
* false
|
3223
|
+
* ^^^^^
|
3224
|
+
*
|
2909
3225
|
* Type: PM_FALSE_NODE
|
2910
3226
|
*
|
2911
3227
|
* @extends pm_node_t
|
@@ -2918,6 +3234,17 @@ typedef struct pm_false_node {
|
|
2918
3234
|
/**
|
2919
3235
|
* FindPatternNode
|
2920
3236
|
*
|
3237
|
+
* Represents a find pattern in pattern matching.
|
3238
|
+
*
|
3239
|
+
* foo in *bar, baz, *qux
|
3240
|
+
* ^^^^^^^^^^^^^^^
|
3241
|
+
*
|
3242
|
+
* foo in [*bar, baz, *qux]
|
3243
|
+
* ^^^^^^^^^^^^^^^^^
|
3244
|
+
*
|
3245
|
+
* foo in Foo(*bar, baz, *qux)
|
3246
|
+
* ^^^^^^^^^^^^^^^^^^^^
|
3247
|
+
*
|
2921
3248
|
* Type: PM_FIND_PATTERN_NODE
|
2922
3249
|
*
|
2923
3250
|
* @extends pm_node_t
|
@@ -2960,6 +3287,11 @@ typedef struct pm_find_pattern_node {
|
|
2960
3287
|
/**
|
2961
3288
|
* FlipFlopNode
|
2962
3289
|
*
|
3290
|
+
* Represents the use of the `..` or `...` operators to create flip flops.
|
3291
|
+
*
|
3292
|
+
* baz if foo .. bar
|
3293
|
+
* ^^^^^^^^^^
|
3294
|
+
*
|
2963
3295
|
* Type: PM_FLIP_FLOP_NODE
|
2964
3296
|
* Flags:
|
2965
3297
|
* PM_RANGE_FLAGS_EXCLUDE_END
|
@@ -2989,6 +3321,11 @@ typedef struct pm_flip_flop_node {
|
|
2989
3321
|
/**
|
2990
3322
|
* FloatNode
|
2991
3323
|
*
|
3324
|
+
* Represents a floating point number literal.
|
3325
|
+
*
|
3326
|
+
* 1.0
|
3327
|
+
* ^^^
|
3328
|
+
*
|
2992
3329
|
* Type: PM_FLOAT_NODE
|
2993
3330
|
*
|
2994
3331
|
* @extends pm_node_t
|
@@ -3008,6 +3345,11 @@ typedef struct pm_float_node {
|
|
3008
3345
|
/**
|
3009
3346
|
* ForNode
|
3010
3347
|
*
|
3348
|
+
* Represents the use of the `for` keyword.
|
3349
|
+
*
|
3350
|
+
* for i in a end
|
3351
|
+
* ^^^^^^^^^^^^^^
|
3352
|
+
*
|
3011
3353
|
* Type: PM_FOR_NODE
|
3012
3354
|
*
|
3013
3355
|
* @extends pm_node_t
|
@@ -3092,6 +3434,13 @@ typedef struct pm_for_node {
|
|
3092
3434
|
/**
|
3093
3435
|
* ForwardingArgumentsNode
|
3094
3436
|
*
|
3437
|
+
* Represents forwarding all arguments to this method to another method.
|
3438
|
+
*
|
3439
|
+
* def foo(...)
|
3440
|
+
* bar(...)
|
3441
|
+
* ^^^
|
3442
|
+
* end
|
3443
|
+
*
|
3095
3444
|
* Type: PM_FORWARDING_ARGUMENTS_NODE
|
3096
3445
|
*
|
3097
3446
|
* @extends pm_node_t
|
@@ -3104,6 +3453,12 @@ typedef struct pm_forwarding_arguments_node {
|
|
3104
3453
|
/**
|
3105
3454
|
* ForwardingParameterNode
|
3106
3455
|
*
|
3456
|
+
* Represents the use of the forwarding parameter in a method, block, or lambda declaration.
|
3457
|
+
*
|
3458
|
+
* def foo(...)
|
3459
|
+
* ^^^
|
3460
|
+
* end
|
3461
|
+
*
|
3107
3462
|
* Type: PM_FORWARDING_PARAMETER_NODE
|
3108
3463
|
*
|
3109
3464
|
* @extends pm_node_t
|
@@ -3116,6 +3471,11 @@ typedef struct pm_forwarding_parameter_node {
|
|
3116
3471
|
/**
|
3117
3472
|
* ForwardingSuperNode
|
3118
3473
|
*
|
3474
|
+
* Represents the use of the `super` keyword without parentheses or arguments.
|
3475
|
+
*
|
3476
|
+
* super
|
3477
|
+
* ^^^^^
|
3478
|
+
*
|
3119
3479
|
* Type: PM_FORWARDING_SUPER_NODE
|
3120
3480
|
*
|
3121
3481
|
* @extends pm_node_t
|
@@ -3133,6 +3493,11 @@ typedef struct pm_forwarding_super_node {
|
|
3133
3493
|
/**
|
3134
3494
|
* GlobalVariableAndWriteNode
|
3135
3495
|
*
|
3496
|
+
* Represents the use of the `&&=` operator for assignment to a global variable.
|
3497
|
+
*
|
3498
|
+
* $target &&= value
|
3499
|
+
* ^^^^^^^^^^^^^^^^^
|
3500
|
+
*
|
3136
3501
|
* Type: PM_GLOBAL_VARIABLE_AND_WRITE_NODE
|
3137
3502
|
*
|
3138
3503
|
* @extends pm_node_t
|
@@ -3165,6 +3530,11 @@ typedef struct pm_global_variable_and_write_node {
|
|
3165
3530
|
/**
|
3166
3531
|
* GlobalVariableOperatorWriteNode
|
3167
3532
|
*
|
3533
|
+
* Represents assigning to a global variable using an operator that isn't `=`.
|
3534
|
+
*
|
3535
|
+
* $target += value
|
3536
|
+
* ^^^^^^^^^^^^^^^^
|
3537
|
+
*
|
3168
3538
|
* Type: PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE
|
3169
3539
|
*
|
3170
3540
|
* @extends pm_node_t
|
@@ -3202,6 +3572,11 @@ typedef struct pm_global_variable_operator_write_node {
|
|
3202
3572
|
/**
|
3203
3573
|
* GlobalVariableOrWriteNode
|
3204
3574
|
*
|
3575
|
+
* Represents the use of the `||=` operator for assignment to a global variable.
|
3576
|
+
*
|
3577
|
+
* $target ||= value
|
3578
|
+
* ^^^^^^^^^^^^^^^^^
|
3579
|
+
*
|
3205
3580
|
* Type: PM_GLOBAL_VARIABLE_OR_WRITE_NODE
|
3206
3581
|
*
|
3207
3582
|
* @extends pm_node_t
|
@@ -3234,6 +3609,11 @@ typedef struct pm_global_variable_or_write_node {
|
|
3234
3609
|
/**
|
3235
3610
|
* GlobalVariableReadNode
|
3236
3611
|
*
|
3612
|
+
* Represents referencing a global variable.
|
3613
|
+
*
|
3614
|
+
* $foo
|
3615
|
+
* ^^^^
|
3616
|
+
*
|
3237
3617
|
* Type: PM_GLOBAL_VARIABLE_READ_NODE
|
3238
3618
|
*
|
3239
3619
|
* @extends pm_node_t
|
@@ -3257,6 +3637,11 @@ typedef struct pm_global_variable_read_node {
|
|
3257
3637
|
/**
|
3258
3638
|
* GlobalVariableTargetNode
|
3259
3639
|
*
|
3640
|
+
* Represents writing to a global variable in a context that doesn't have an explicit value.
|
3641
|
+
*
|
3642
|
+
* $foo, $bar = baz
|
3643
|
+
* ^^^^ ^^^^
|
3644
|
+
*
|
3260
3645
|
* Type: PM_GLOBAL_VARIABLE_TARGET_NODE
|
3261
3646
|
*
|
3262
3647
|
* @extends pm_node_t
|
@@ -3274,6 +3659,11 @@ typedef struct pm_global_variable_target_node {
|
|
3274
3659
|
/**
|
3275
3660
|
* GlobalVariableWriteNode
|
3276
3661
|
*
|
3662
|
+
* Represents writing to a global variable.
|
3663
|
+
*
|
3664
|
+
* $foo = 1
|
3665
|
+
* ^^^^^^^^
|
3666
|
+
*
|
3277
3667
|
* Type: PM_GLOBAL_VARIABLE_WRITE_NODE
|
3278
3668
|
*
|
3279
3669
|
* @extends pm_node_t
|
@@ -3330,6 +3720,11 @@ typedef struct pm_global_variable_write_node {
|
|
3330
3720
|
/**
|
3331
3721
|
* HashNode
|
3332
3722
|
*
|
3723
|
+
* Represents a hash literal.
|
3724
|
+
*
|
3725
|
+
* { a => b }
|
3726
|
+
* ^^^^^^^^^^
|
3727
|
+
*
|
3333
3728
|
* Type: PM_HASH_NODE
|
3334
3729
|
*
|
3335
3730
|
* @extends pm_node_t
|
@@ -3375,6 +3770,14 @@ typedef struct pm_hash_node {
|
|
3375
3770
|
/**
|
3376
3771
|
* HashPatternNode
|
3377
3772
|
*
|
3773
|
+
* Represents a hash pattern in pattern matching.
|
3774
|
+
*
|
3775
|
+
* foo => { a: 1, b: 2 }
|
3776
|
+
* ^^^^^^^^^^^^^^
|
3777
|
+
*
|
3778
|
+
* foo => { a: 1, b: 2, **c }
|
3779
|
+
* ^^^^^^^^^^^^^^^^^^^
|
3780
|
+
*
|
3378
3781
|
* Type: PM_HASH_PATTERN_NODE
|
3379
3782
|
*
|
3380
3783
|
* @extends pm_node_t
|
@@ -3412,6 +3815,17 @@ typedef struct pm_hash_pattern_node {
|
|
3412
3815
|
/**
|
3413
3816
|
* IfNode
|
3414
3817
|
*
|
3818
|
+
* Represents the use of the `if` keyword, either in the block form or the modifier form, or a ternary expression.
|
3819
|
+
*
|
3820
|
+
* bar if foo
|
3821
|
+
* ^^^^^^^^^^
|
3822
|
+
*
|
3823
|
+
* if foo then bar end
|
3824
|
+
* ^^^^^^^^^^^^^^^^^^^
|
3825
|
+
*
|
3826
|
+
* foo ? bar : baz
|
3827
|
+
* ^^^^^^^^^^^^^^^
|
3828
|
+
*
|
3415
3829
|
* Type: PM_IF_NODE
|
3416
3830
|
*
|
3417
3831
|
* @extends pm_node_t
|
@@ -3478,7 +3892,7 @@ typedef struct pm_if_node {
|
|
3478
3892
|
struct pm_statements_node *statements;
|
3479
3893
|
|
3480
3894
|
/**
|
3481
|
-
* IfNode#
|
3895
|
+
* IfNode#subsequent
|
3482
3896
|
*
|
3483
3897
|
* Represents an `ElseNode` or an `IfNode` when there is an `else` or an `elsif` in the `if` statement.
|
3484
3898
|
*
|
@@ -3494,7 +3908,7 @@ typedef struct pm_if_node {
|
|
3494
3908
|
* if foo then bar else baz end
|
3495
3909
|
* ^^^^^^^^^^^^
|
3496
3910
|
*/
|
3497
|
-
struct pm_node *
|
3911
|
+
struct pm_node *subsequent;
|
3498
3912
|
|
3499
3913
|
/**
|
3500
3914
|
* IfNode#end_keyword_loc
|
@@ -3512,6 +3926,11 @@ typedef struct pm_if_node {
|
|
3512
3926
|
/**
|
3513
3927
|
* ImaginaryNode
|
3514
3928
|
*
|
3929
|
+
* Represents an imaginary number literal.
|
3930
|
+
*
|
3931
|
+
* 1.0i
|
3932
|
+
* ^^^^
|
3933
|
+
*
|
3515
3934
|
* Type: PM_IMAGINARY_NODE
|
3516
3935
|
*
|
3517
3936
|
* @extends pm_node_t
|
@@ -3529,6 +3948,17 @@ typedef struct pm_imaginary_node {
|
|
3529
3948
|
/**
|
3530
3949
|
* ImplicitNode
|
3531
3950
|
*
|
3951
|
+
* Represents a node that is implicitly being added to the tree but doesn't correspond directly to a node in the source.
|
3952
|
+
*
|
3953
|
+
* { foo: }
|
3954
|
+
* ^^^^
|
3955
|
+
*
|
3956
|
+
* { Foo: }
|
3957
|
+
* ^^^^
|
3958
|
+
*
|
3959
|
+
* foo in { bar: }
|
3960
|
+
* ^^^^
|
3961
|
+
*
|
3532
3962
|
* Type: PM_IMPLICIT_NODE
|
3533
3963
|
*
|
3534
3964
|
* @extends pm_node_t
|
@@ -3546,6 +3976,20 @@ typedef struct pm_implicit_node {
|
|
3546
3976
|
/**
|
3547
3977
|
* ImplicitRestNode
|
3548
3978
|
*
|
3979
|
+
* Represents using a trailing comma to indicate an implicit rest parameter.
|
3980
|
+
*
|
3981
|
+
* foo { |bar,| }
|
3982
|
+
* ^
|
3983
|
+
*
|
3984
|
+
* foo in [bar,]
|
3985
|
+
* ^
|
3986
|
+
*
|
3987
|
+
* for foo, in bar do end
|
3988
|
+
* ^
|
3989
|
+
*
|
3990
|
+
* foo, = bar
|
3991
|
+
* ^
|
3992
|
+
*
|
3549
3993
|
* Type: PM_IMPLICIT_REST_NODE
|
3550
3994
|
*
|
3551
3995
|
* @extends pm_node_t
|
@@ -3558,6 +4002,11 @@ typedef struct pm_implicit_rest_node {
|
|
3558
4002
|
/**
|
3559
4003
|
* InNode
|
3560
4004
|
*
|
4005
|
+
* Represents the use of the `in` keyword in a case statement.
|
4006
|
+
*
|
4007
|
+
* case a; in b then c end
|
4008
|
+
* ^^^^^^^^^^^
|
4009
|
+
*
|
3561
4010
|
* Type: PM_IN_NODE
|
3562
4011
|
*
|
3563
4012
|
* @extends pm_node_t
|
@@ -3590,6 +4039,11 @@ typedef struct pm_in_node {
|
|
3590
4039
|
/**
|
3591
4040
|
* IndexAndWriteNode
|
3592
4041
|
*
|
4042
|
+
* Represents the use of the `&&=` operator on a call to the `[]` method.
|
4043
|
+
*
|
4044
|
+
* foo.bar[baz] &&= value
|
4045
|
+
* ^^^^^^^^^^^^^^^^^^^^^^
|
4046
|
+
*
|
3593
4047
|
* Type: PM_INDEX_AND_WRITE_NODE
|
3594
4048
|
* Flags:
|
3595
4049
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
@@ -3647,6 +4101,11 @@ typedef struct pm_index_and_write_node {
|
|
3647
4101
|
/**
|
3648
4102
|
* IndexOperatorWriteNode
|
3649
4103
|
*
|
4104
|
+
* Represents the use of an assignment operator on a call to `[]`.
|
4105
|
+
*
|
4106
|
+
* foo.bar[baz] += value
|
4107
|
+
* ^^^^^^^^^^^^^^^^^^^^^
|
4108
|
+
*
|
3650
4109
|
* Type: PM_INDEX_OPERATOR_WRITE_NODE
|
3651
4110
|
* Flags:
|
3652
4111
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
@@ -3709,6 +4168,11 @@ typedef struct pm_index_operator_write_node {
|
|
3709
4168
|
/**
|
3710
4169
|
* IndexOrWriteNode
|
3711
4170
|
*
|
4171
|
+
* Represents the use of the `||=` operator on a call to `[]`.
|
4172
|
+
*
|
4173
|
+
* foo.bar[baz] ||= value
|
4174
|
+
* ^^^^^^^^^^^^^^^^^^^^^^
|
4175
|
+
*
|
3712
4176
|
* Type: PM_INDEX_OR_WRITE_NODE
|
3713
4177
|
* Flags:
|
3714
4178
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
@@ -3766,6 +4230,19 @@ typedef struct pm_index_or_write_node {
|
|
3766
4230
|
/**
|
3767
4231
|
* IndexTargetNode
|
3768
4232
|
*
|
4233
|
+
* Represents assigning to an index.
|
4234
|
+
*
|
4235
|
+
* foo[bar], = 1
|
4236
|
+
* ^^^^^^^^
|
4237
|
+
*
|
4238
|
+
* begin
|
4239
|
+
* rescue => foo[bar]
|
4240
|
+
* ^^^^^^^^
|
4241
|
+
* end
|
4242
|
+
*
|
4243
|
+
* for foo[bar] in baz do end
|
4244
|
+
* ^^^^^^^^
|
4245
|
+
*
|
3769
4246
|
* Type: PM_INDEX_TARGET_NODE
|
3770
4247
|
* Flags:
|
3771
4248
|
* PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
|
@@ -3808,6 +4285,11 @@ typedef struct pm_index_target_node {
|
|
3808
4285
|
/**
|
3809
4286
|
* InstanceVariableAndWriteNode
|
3810
4287
|
*
|
4288
|
+
* Represents the use of the `&&=` operator for assignment to an instance variable.
|
4289
|
+
*
|
4290
|
+
* @target &&= value
|
4291
|
+
* ^^^^^^^^^^^^^^^^^
|
4292
|
+
*
|
3811
4293
|
* Type: PM_INSTANCE_VARIABLE_AND_WRITE_NODE
|
3812
4294
|
*
|
3813
4295
|
* @extends pm_node_t
|
@@ -3840,6 +4322,11 @@ typedef struct pm_instance_variable_and_write_node {
|
|
3840
4322
|
/**
|
3841
4323
|
* InstanceVariableOperatorWriteNode
|
3842
4324
|
*
|
4325
|
+
* Represents assigning to an instance variable using an operator that isn't `=`.
|
4326
|
+
*
|
4327
|
+
* @target += value
|
4328
|
+
* ^^^^^^^^^^^^^^^^
|
4329
|
+
*
|
3843
4330
|
* Type: PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE
|
3844
4331
|
*
|
3845
4332
|
* @extends pm_node_t
|
@@ -3877,6 +4364,11 @@ typedef struct pm_instance_variable_operator_write_node {
|
|
3877
4364
|
/**
|
3878
4365
|
* InstanceVariableOrWriteNode
|
3879
4366
|
*
|
4367
|
+
* Represents the use of the `||=` operator for assignment to an instance variable.
|
4368
|
+
*
|
4369
|
+
* @target ||= value
|
4370
|
+
* ^^^^^^^^^^^^^^^^^
|
4371
|
+
*
|
3880
4372
|
* Type: PM_INSTANCE_VARIABLE_OR_WRITE_NODE
|
3881
4373
|
*
|
3882
4374
|
* @extends pm_node_t
|
@@ -3909,6 +4401,11 @@ typedef struct pm_instance_variable_or_write_node {
|
|
3909
4401
|
/**
|
3910
4402
|
* InstanceVariableReadNode
|
3911
4403
|
*
|
4404
|
+
* Represents referencing an instance variable.
|
4405
|
+
*
|
4406
|
+
* @foo
|
4407
|
+
* ^^^^
|
4408
|
+
*
|
3912
4409
|
* Type: PM_INSTANCE_VARIABLE_READ_NODE
|
3913
4410
|
*
|
3914
4411
|
* @extends pm_node_t
|
@@ -3932,6 +4429,11 @@ typedef struct pm_instance_variable_read_node {
|
|
3932
4429
|
/**
|
3933
4430
|
* InstanceVariableTargetNode
|
3934
4431
|
*
|
4432
|
+
* Represents writing to an instance variable in a context that doesn't have an explicit value.
|
4433
|
+
*
|
4434
|
+
* @foo, @bar = baz
|
4435
|
+
* ^^^^ ^^^^
|
4436
|
+
*
|
3935
4437
|
* Type: PM_INSTANCE_VARIABLE_TARGET_NODE
|
3936
4438
|
*
|
3937
4439
|
* @extends pm_node_t
|
@@ -3949,6 +4451,11 @@ typedef struct pm_instance_variable_target_node {
|
|
3949
4451
|
/**
|
3950
4452
|
* InstanceVariableWriteNode
|
3951
4453
|
*
|
4454
|
+
* Represents writing to an instance variable.
|
4455
|
+
*
|
4456
|
+
* @foo = 1
|
4457
|
+
* ^^^^^^^^
|
4458
|
+
*
|
3952
4459
|
* Type: PM_INSTANCE_VARIABLE_WRITE_NODE
|
3953
4460
|
*
|
3954
4461
|
* @extends pm_node_t
|
@@ -4005,6 +4512,11 @@ typedef struct pm_instance_variable_write_node {
|
|
4005
4512
|
/**
|
4006
4513
|
* IntegerNode
|
4007
4514
|
*
|
4515
|
+
* Represents an integer number literal.
|
4516
|
+
*
|
4517
|
+
* 1
|
4518
|
+
* ^
|
4519
|
+
*
|
4008
4520
|
* Type: PM_INTEGER_NODE
|
4009
4521
|
* Flags:
|
4010
4522
|
* PM_INTEGER_BASE_FLAGS_BINARY
|
@@ -4029,6 +4541,11 @@ typedef struct pm_integer_node {
|
|
4029
4541
|
/**
|
4030
4542
|
* InterpolatedMatchLastLineNode
|
4031
4543
|
*
|
4544
|
+
* Represents a regular expression literal that contains interpolation that is being used in the predicate of a conditional to implicitly match against the last line read by an IO object.
|
4545
|
+
*
|
4546
|
+
* if /foo #{bar} baz/ then end
|
4547
|
+
* ^^^^^^^^^^^^^^^^
|
4548
|
+
*
|
4032
4549
|
* Type: PM_INTERPOLATED_MATCH_LAST_LINE_NODE
|
4033
4550
|
* Flags:
|
4034
4551
|
* PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
|
@@ -4068,6 +4585,11 @@ typedef struct pm_interpolated_match_last_line_node {
|
|
4068
4585
|
/**
|
4069
4586
|
* InterpolatedRegularExpressionNode
|
4070
4587
|
*
|
4588
|
+
* Represents a regular expression literal that contains interpolation.
|
4589
|
+
*
|
4590
|
+
* /foo #{bar} baz/
|
4591
|
+
* ^^^^^^^^^^^^^^^^
|
4592
|
+
*
|
4071
4593
|
* Type: PM_INTERPOLATED_REGULAR_EXPRESSION_NODE
|
4072
4594
|
* Flags:
|
4073
4595
|
* PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
|
@@ -4107,6 +4629,11 @@ typedef struct pm_interpolated_regular_expression_node {
|
|
4107
4629
|
/**
|
4108
4630
|
* InterpolatedStringNode
|
4109
4631
|
*
|
4632
|
+
* Represents a string literal that contains interpolation.
|
4633
|
+
*
|
4634
|
+
* "foo #{bar} baz"
|
4635
|
+
* ^^^^^^^^^^^^^^^^
|
4636
|
+
*
|
4110
4637
|
* Type: PM_INTERPOLATED_STRING_NODE
|
4111
4638
|
* Flags:
|
4112
4639
|
* PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN
|
@@ -4137,6 +4664,11 @@ typedef struct pm_interpolated_string_node {
|
|
4137
4664
|
/**
|
4138
4665
|
* InterpolatedSymbolNode
|
4139
4666
|
*
|
4667
|
+
* Represents a symbol literal that contains interpolation.
|
4668
|
+
*
|
4669
|
+
* :"foo #{bar} baz"
|
4670
|
+
* ^^^^^^^^^^^^^^^^^
|
4671
|
+
*
|
4140
4672
|
* Type: PM_INTERPOLATED_SYMBOL_NODE
|
4141
4673
|
*
|
4142
4674
|
* @extends pm_node_t
|
@@ -4164,6 +4696,11 @@ typedef struct pm_interpolated_symbol_node {
|
|
4164
4696
|
/**
|
4165
4697
|
* InterpolatedXStringNode
|
4166
4698
|
*
|
4699
|
+
* Represents an xstring literal that contains interpolation.
|
4700
|
+
*
|
4701
|
+
* `foo #{bar} baz`
|
4702
|
+
* ^^^^^^^^^^^^^^^^
|
4703
|
+
*
|
4167
4704
|
* Type: PM_INTERPOLATED_X_STRING_NODE
|
4168
4705
|
*
|
4169
4706
|
* @extends pm_node_t
|
@@ -4191,6 +4728,11 @@ typedef struct pm_interpolated_x_string_node {
|
|
4191
4728
|
/**
|
4192
4729
|
* ItLocalVariableReadNode
|
4193
4730
|
*
|
4731
|
+
* Represents reading from the implicit `it` local variable.
|
4732
|
+
*
|
4733
|
+
* -> { it }
|
4734
|
+
* ^^
|
4735
|
+
*
|
4194
4736
|
* Type: PM_IT_LOCAL_VARIABLE_READ_NODE
|
4195
4737
|
*
|
4196
4738
|
* @extends pm_node_t
|
@@ -4203,6 +4745,11 @@ typedef struct pm_it_local_variable_read_node {
|
|
4203
4745
|
/**
|
4204
4746
|
* ItParametersNode
|
4205
4747
|
*
|
4748
|
+
* Represents an implicit set of parameters through the use of the `it` keyword within a block or lambda.
|
4749
|
+
*
|
4750
|
+
* -> { it + it }
|
4751
|
+
* ^^^^^^^^^^^^^^
|
4752
|
+
*
|
4206
4753
|
* Type: PM_IT_PARAMETERS_NODE
|
4207
4754
|
*
|
4208
4755
|
* @extends pm_node_t
|
@@ -4215,6 +4762,11 @@ typedef struct pm_it_parameters_node {
|
|
4215
4762
|
/**
|
4216
4763
|
* KeywordHashNode
|
4217
4764
|
*
|
4765
|
+
* Represents a hash literal without opening and closing braces.
|
4766
|
+
*
|
4767
|
+
* foo(a: b)
|
4768
|
+
* ^^^^
|
4769
|
+
*
|
4218
4770
|
* Type: PM_KEYWORD_HASH_NODE
|
4219
4771
|
* Flags:
|
4220
4772
|
* PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS
|
@@ -4234,6 +4786,12 @@ typedef struct pm_keyword_hash_node {
|
|
4234
4786
|
/**
|
4235
4787
|
* KeywordRestParameterNode
|
4236
4788
|
*
|
4789
|
+
* Represents a keyword rest parameter to a method, block, or lambda definition.
|
4790
|
+
*
|
4791
|
+
* def a(**b)
|
4792
|
+
* ^^^
|
4793
|
+
* end
|
4794
|
+
*
|
4237
4795
|
* Type: PM_KEYWORD_REST_PARAMETER_NODE
|
4238
4796
|
* Flags:
|
4239
4797
|
* PM_PARAMETER_FLAGS_REPEATED_PARAMETER
|
@@ -4263,6 +4821,11 @@ typedef struct pm_keyword_rest_parameter_node {
|
|
4263
4821
|
/**
|
4264
4822
|
* LambdaNode
|
4265
4823
|
*
|
4824
|
+
* Represents using a lambda literal (not the lambda method call).
|
4825
|
+
*
|
4826
|
+
* ->(value) { value * 2 }
|
4827
|
+
* ^^^^^^^^^^^^^^^^^^^^^^^
|
4828
|
+
*
|
4266
4829
|
* Type: PM_LAMBDA_NODE
|
4267
4830
|
*
|
4268
4831
|
* @extends pm_node_t
|
@@ -4305,6 +4868,11 @@ typedef struct pm_lambda_node {
|
|
4305
4868
|
/**
|
4306
4869
|
* LocalVariableAndWriteNode
|
4307
4870
|
*
|
4871
|
+
* Represents the use of the `&&=` operator for assignment to a local variable.
|
4872
|
+
*
|
4873
|
+
* target &&= value
|
4874
|
+
* ^^^^^^^^^^^^^^^^
|
4875
|
+
*
|
4308
4876
|
* Type: PM_LOCAL_VARIABLE_AND_WRITE_NODE
|
4309
4877
|
*
|
4310
4878
|
* @extends pm_node_t
|
@@ -4342,6 +4910,11 @@ typedef struct pm_local_variable_and_write_node {
|
|
4342
4910
|
/**
|
4343
4911
|
* LocalVariableOperatorWriteNode
|
4344
4912
|
*
|
4913
|
+
* Represents assigning to a local variable using an operator that isn't `=`.
|
4914
|
+
*
|
4915
|
+
* target += value
|
4916
|
+
* ^^^^^^^^^^^^^^^
|
4917
|
+
*
|
4345
4918
|
* Type: PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE
|
4346
4919
|
*
|
4347
4920
|
* @extends pm_node_t
|
@@ -4384,6 +4957,11 @@ typedef struct pm_local_variable_operator_write_node {
|
|
4384
4957
|
/**
|
4385
4958
|
* LocalVariableOrWriteNode
|
4386
4959
|
*
|
4960
|
+
* Represents the use of the `||=` operator for assignment to a local variable.
|
4961
|
+
*
|
4962
|
+
* target ||= value
|
4963
|
+
* ^^^^^^^^^^^^^^^^
|
4964
|
+
*
|
4387
4965
|
* Type: PM_LOCAL_VARIABLE_OR_WRITE_NODE
|
4388
4966
|
*
|
4389
4967
|
* @extends pm_node_t
|
@@ -4421,6 +4999,11 @@ typedef struct pm_local_variable_or_write_node {
|
|
4421
4999
|
/**
|
4422
5000
|
* LocalVariableReadNode
|
4423
5001
|
*
|
5002
|
+
* Represents reading a local variable. Note that this requires that a local variable of the same name has already been written to in the same scope, otherwise it is parsed as a method call.
|
5003
|
+
*
|
5004
|
+
* foo
|
5005
|
+
* ^^^
|
5006
|
+
*
|
4424
5007
|
* Type: PM_LOCAL_VARIABLE_READ_NODE
|
4425
5008
|
*
|
4426
5009
|
* @extends pm_node_t
|
@@ -4461,6 +5044,11 @@ typedef struct pm_local_variable_read_node {
|
|
4461
5044
|
/**
|
4462
5045
|
* LocalVariableTargetNode
|
4463
5046
|
*
|
5047
|
+
* Represents writing to a local variable in a context that doesn't have an explicit value.
|
5048
|
+
*
|
5049
|
+
* foo, bar = baz
|
5050
|
+
* ^^^ ^^^
|
5051
|
+
*
|
4464
5052
|
* Type: PM_LOCAL_VARIABLE_TARGET_NODE
|
4465
5053
|
*
|
4466
5054
|
* @extends pm_node_t
|
@@ -4483,6 +5071,11 @@ typedef struct pm_local_variable_target_node {
|
|
4483
5071
|
/**
|
4484
5072
|
* LocalVariableWriteNode
|
4485
5073
|
*
|
5074
|
+
* Represents writing to a local variable.
|
5075
|
+
*
|
5076
|
+
* foo = 1
|
5077
|
+
* ^^^^^^^
|
5078
|
+
*
|
4486
5079
|
* Type: PM_LOCAL_VARIABLE_WRITE_NODE
|
4487
5080
|
*
|
4488
5081
|
* @extends pm_node_t
|
@@ -4556,6 +5149,11 @@ typedef struct pm_local_variable_write_node {
|
|
4556
5149
|
/**
|
4557
5150
|
* MatchLastLineNode
|
4558
5151
|
*
|
5152
|
+
* Represents a regular expression literal used in the predicate of a conditional to implicitly match against the last line read by an IO object.
|
5153
|
+
*
|
5154
|
+
* if /foo/i then end
|
5155
|
+
* ^^^^^^
|
5156
|
+
*
|
4559
5157
|
* Type: PM_MATCH_LAST_LINE_NODE
|
4560
5158
|
* Flags:
|
4561
5159
|
* PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
|
@@ -4600,6 +5198,11 @@ typedef struct pm_match_last_line_node {
|
|
4600
5198
|
/**
|
4601
5199
|
* MatchPredicateNode
|
4602
5200
|
*
|
5201
|
+
* Represents the use of the modifier `in` operator.
|
5202
|
+
*
|
5203
|
+
* foo in bar
|
5204
|
+
* ^^^^^^^^^^
|
5205
|
+
*
|
4603
5206
|
* Type: PM_MATCH_PREDICATE_NODE
|
4604
5207
|
*
|
4605
5208
|
* @extends pm_node_t
|
@@ -4627,6 +5230,11 @@ typedef struct pm_match_predicate_node {
|
|
4627
5230
|
/**
|
4628
5231
|
* MatchRequiredNode
|
4629
5232
|
*
|
5233
|
+
* Represents the use of the `=>` operator.
|
5234
|
+
*
|
5235
|
+
* foo => bar
|
5236
|
+
* ^^^^^^^^^^
|
5237
|
+
*
|
4630
5238
|
* Type: PM_MATCH_REQUIRED_NODE
|
4631
5239
|
*
|
4632
5240
|
* @extends pm_node_t
|
@@ -4654,6 +5262,11 @@ typedef struct pm_match_required_node {
|
|
4654
5262
|
/**
|
4655
5263
|
* MatchWriteNode
|
4656
5264
|
*
|
5265
|
+
* Represents writing local variables using a regular expression match with named capture groups.
|
5266
|
+
*
|
5267
|
+
* /(?<foo>bar)/ =~ baz
|
5268
|
+
* ^^^^^^^^^^^^^^^^^^^^
|
5269
|
+
*
|
4657
5270
|
* Type: PM_MATCH_WRITE_NODE
|
4658
5271
|
*
|
4659
5272
|
* @extends pm_node_t
|
@@ -4676,6 +5289,8 @@ typedef struct pm_match_write_node {
|
|
4676
5289
|
/**
|
4677
5290
|
* MissingNode
|
4678
5291
|
*
|
5292
|
+
* Represents a node that is missing from the source and results in a syntax error.
|
5293
|
+
*
|
4679
5294
|
* Type: PM_MISSING_NODE
|
4680
5295
|
*
|
4681
5296
|
* @extends pm_node_t
|
@@ -4688,6 +5303,11 @@ typedef struct pm_missing_node {
|
|
4688
5303
|
/**
|
4689
5304
|
* ModuleNode
|
4690
5305
|
*
|
5306
|
+
* Represents a module declaration involving the `module` keyword.
|
5307
|
+
*
|
5308
|
+
* module Foo end
|
5309
|
+
* ^^^^^^^^^^^^^^
|
5310
|
+
*
|
4691
5311
|
* Type: PM_MODULE_NODE
|
4692
5312
|
*
|
4693
5313
|
* @extends pm_node_t
|
@@ -4730,6 +5350,16 @@ typedef struct pm_module_node {
|
|
4730
5350
|
/**
|
4731
5351
|
* MultiTargetNode
|
4732
5352
|
*
|
5353
|
+
* Represents a multi-target expression.
|
5354
|
+
*
|
5355
|
+
* a, (b, c) = 1, 2, 3
|
5356
|
+
* ^^^^^^
|
5357
|
+
*
|
5358
|
+
* This can be a part of `MultiWriteNode` as above, or the target of a `for` loop
|
5359
|
+
*
|
5360
|
+
* for a, b in [[1, 2], [3, 4]]
|
5361
|
+
* ^^^^
|
5362
|
+
*
|
4733
5363
|
* Type: PM_MULTI_TARGET_NODE
|
4734
5364
|
*
|
4735
5365
|
* @extends pm_node_t
|
@@ -4740,26 +5370,66 @@ typedef struct pm_multi_target_node {
|
|
4740
5370
|
|
4741
5371
|
/**
|
4742
5372
|
* MultiTargetNode#lefts
|
5373
|
+
*
|
5374
|
+
* Represents the targets expressions before a splat node.
|
5375
|
+
*
|
5376
|
+
* a, (b, c, *) = 1, 2, 3, 4, 5
|
5377
|
+
* ^^^^
|
5378
|
+
*
|
5379
|
+
* The splat node can be absent, in that case all target expressions are in the left field.
|
5380
|
+
*
|
5381
|
+
* a, (b, c) = 1, 2, 3, 4, 5
|
5382
|
+
* ^^^^
|
4743
5383
|
*/
|
4744
5384
|
struct pm_node_list lefts;
|
4745
5385
|
|
4746
5386
|
/**
|
4747
5387
|
* MultiTargetNode#rest
|
5388
|
+
*
|
5389
|
+
* Represents a splat node in the target expression.
|
5390
|
+
*
|
5391
|
+
* a, (b, *c) = 1, 2, 3, 4
|
5392
|
+
* ^^
|
5393
|
+
*
|
5394
|
+
* The variable can be empty, this results in a `SplatNode` with a `nil` expression field.
|
5395
|
+
*
|
5396
|
+
* a, (b, *) = 1, 2, 3, 4
|
5397
|
+
* ^
|
5398
|
+
*
|
5399
|
+
* If the `*` is omitted, the field will containt an `ImplicitRestNode`
|
5400
|
+
*
|
5401
|
+
* a, (b,) = 1, 2, 3, 4
|
5402
|
+
* ^
|
4748
5403
|
*/
|
4749
5404
|
struct pm_node *rest;
|
4750
5405
|
|
4751
5406
|
/**
|
4752
5407
|
* MultiTargetNode#rights
|
5408
|
+
*
|
5409
|
+
* Represents the targets expressions after a splat node.
|
5410
|
+
*
|
5411
|
+
* a, (*, b, c) = 1, 2, 3, 4, 5
|
5412
|
+
* ^^^^
|
4753
5413
|
*/
|
4754
5414
|
struct pm_node_list rights;
|
4755
5415
|
|
4756
5416
|
/**
|
4757
5417
|
* MultiTargetNode#lparen_loc
|
5418
|
+
*
|
5419
|
+
* The location of the opening parenthesis.
|
5420
|
+
*
|
5421
|
+
* a, (b, c) = 1, 2, 3
|
5422
|
+
* ^
|
4758
5423
|
*/
|
4759
5424
|
pm_location_t lparen_loc;
|
4760
5425
|
|
4761
5426
|
/**
|
4762
5427
|
* MultiTargetNode#rparen_loc
|
5428
|
+
*
|
5429
|
+
* The location of the closing parenthesis.
|
5430
|
+
*
|
5431
|
+
* a, (b, c) = 1, 2, 3
|
5432
|
+
* ^
|
4763
5433
|
*/
|
4764
5434
|
pm_location_t rparen_loc;
|
4765
5435
|
} pm_multi_target_node_t;
|
@@ -4767,6 +5437,11 @@ typedef struct pm_multi_target_node {
|
|
4767
5437
|
/**
|
4768
5438
|
* MultiWriteNode
|
4769
5439
|
*
|
5440
|
+
* Represents a write to a multi-target expression.
|
5441
|
+
*
|
5442
|
+
* a, b, c = 1, 2, 3
|
5443
|
+
* ^^^^^^^^^^^^^^^^^
|
5444
|
+
*
|
4770
5445
|
* Type: PM_MULTI_WRITE_NODE
|
4771
5446
|
*
|
4772
5447
|
* @extends pm_node_t
|
@@ -4777,36 +5452,86 @@ typedef struct pm_multi_write_node {
|
|
4777
5452
|
|
4778
5453
|
/**
|
4779
5454
|
* MultiWriteNode#lefts
|
5455
|
+
*
|
5456
|
+
* Represents the targets expressions before a splat node.
|
5457
|
+
*
|
5458
|
+
* a, b, * = 1, 2, 3, 4, 5
|
5459
|
+
* ^^^^
|
5460
|
+
*
|
5461
|
+
* The splat node can be absent, in that case all target expressions are in the left field.
|
5462
|
+
*
|
5463
|
+
* a, b, c = 1, 2, 3, 4, 5
|
5464
|
+
* ^^^^^^^
|
4780
5465
|
*/
|
4781
5466
|
struct pm_node_list lefts;
|
4782
5467
|
|
4783
5468
|
/**
|
4784
5469
|
* MultiWriteNode#rest
|
5470
|
+
*
|
5471
|
+
* Represents a splat node in the target expression.
|
5472
|
+
*
|
5473
|
+
* a, b, *c = 1, 2, 3, 4
|
5474
|
+
* ^^
|
5475
|
+
*
|
5476
|
+
* The variable can be empty, this results in a `SplatNode` with a `nil` expression field.
|
5477
|
+
*
|
5478
|
+
* a, b, * = 1, 2, 3, 4
|
5479
|
+
* ^
|
5480
|
+
*
|
5481
|
+
* If the `*` is omitted, the field will containt an `ImplicitRestNode`
|
5482
|
+
*
|
5483
|
+
* a, b, = 1, 2, 3, 4
|
5484
|
+
* ^
|
4785
5485
|
*/
|
4786
5486
|
struct pm_node *rest;
|
4787
5487
|
|
4788
5488
|
/**
|
4789
5489
|
* MultiWriteNode#rights
|
5490
|
+
*
|
5491
|
+
* Represents the targets expressions after a splat node.
|
5492
|
+
*
|
5493
|
+
* a, *, b, c = 1, 2, 3, 4, 5
|
5494
|
+
* ^^^^
|
4790
5495
|
*/
|
4791
5496
|
struct pm_node_list rights;
|
4792
5497
|
|
4793
5498
|
/**
|
4794
5499
|
* MultiWriteNode#lparen_loc
|
5500
|
+
*
|
5501
|
+
* The location of the opening parenthesis.
|
5502
|
+
*
|
5503
|
+
* (a, b, c) = 1, 2, 3
|
5504
|
+
* ^
|
4795
5505
|
*/
|
4796
5506
|
pm_location_t lparen_loc;
|
4797
5507
|
|
4798
5508
|
/**
|
4799
5509
|
* MultiWriteNode#rparen_loc
|
5510
|
+
*
|
5511
|
+
* The location of the closing parenthesis.
|
5512
|
+
*
|
5513
|
+
* (a, b, c) = 1, 2, 3
|
5514
|
+
* ^
|
4800
5515
|
*/
|
4801
5516
|
pm_location_t rparen_loc;
|
4802
5517
|
|
4803
5518
|
/**
|
4804
5519
|
* MultiWriteNode#operator_loc
|
5520
|
+
*
|
5521
|
+
* The location of the operator.
|
5522
|
+
*
|
5523
|
+
* a, b, c = 1, 2, 3
|
5524
|
+
* ^
|
4805
5525
|
*/
|
4806
5526
|
pm_location_t operator_loc;
|
4807
5527
|
|
4808
5528
|
/**
|
4809
5529
|
* MultiWriteNode#value
|
5530
|
+
*
|
5531
|
+
* The value to write to the targets. It can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression).
|
5532
|
+
*
|
5533
|
+
* a, b, c = 1, 2, 3
|
5534
|
+
* ^^^^^^^
|
4810
5535
|
*/
|
4811
5536
|
struct pm_node *value;
|
4812
5537
|
} pm_multi_write_node_t;
|
@@ -4814,6 +5539,11 @@ typedef struct pm_multi_write_node {
|
|
4814
5539
|
/**
|
4815
5540
|
* NextNode
|
4816
5541
|
*
|
5542
|
+
* Represents the use of the `next` keyword.
|
5543
|
+
*
|
5544
|
+
* next 1
|
5545
|
+
* ^^^^^^
|
5546
|
+
*
|
4817
5547
|
* Type: PM_NEXT_NODE
|
4818
5548
|
*
|
4819
5549
|
* @extends pm_node_t
|
@@ -4836,6 +5566,11 @@ typedef struct pm_next_node {
|
|
4836
5566
|
/**
|
4837
5567
|
* NilNode
|
4838
5568
|
*
|
5569
|
+
* Represents the use of the `nil` keyword.
|
5570
|
+
*
|
5571
|
+
* nil
|
5572
|
+
* ^^^
|
5573
|
+
*
|
4839
5574
|
* Type: PM_NIL_NODE
|
4840
5575
|
*
|
4841
5576
|
* @extends pm_node_t
|
@@ -4848,6 +5583,12 @@ typedef struct pm_nil_node {
|
|
4848
5583
|
/**
|
4849
5584
|
* NoKeywordsParameterNode
|
4850
5585
|
*
|
5586
|
+
* Represents the use of `**nil` inside method arguments.
|
5587
|
+
*
|
5588
|
+
* def a(**nil)
|
5589
|
+
* ^^^^^
|
5590
|
+
* end
|
5591
|
+
*
|
4851
5592
|
* Type: PM_NO_KEYWORDS_PARAMETER_NODE
|
4852
5593
|
*
|
4853
5594
|
* @extends pm_node_t
|
@@ -4870,6 +5611,11 @@ typedef struct pm_no_keywords_parameter_node {
|
|
4870
5611
|
/**
|
4871
5612
|
* NumberedParametersNode
|
4872
5613
|
*
|
5614
|
+
* Represents an implicit set of parameters through the use of numbered parameters within a block or lambda.
|
5615
|
+
*
|
5616
|
+
* -> { _1 + _2 }
|
5617
|
+
* ^^^^^^^^^^^^^^
|
5618
|
+
*
|
4873
5619
|
* Type: PM_NUMBERED_PARAMETERS_NODE
|
4874
5620
|
*
|
4875
5621
|
* @extends pm_node_t
|
@@ -4887,6 +5633,11 @@ typedef struct pm_numbered_parameters_node {
|
|
4887
5633
|
/**
|
4888
5634
|
* NumberedReferenceReadNode
|
4889
5635
|
*
|
5636
|
+
* Represents reading a numbered reference to a capture in the previous match.
|
5637
|
+
*
|
5638
|
+
* $1
|
5639
|
+
* ^^
|
5640
|
+
*
|
4890
5641
|
* Type: PM_NUMBERED_REFERENCE_READ_NODE
|
4891
5642
|
*
|
4892
5643
|
* @extends pm_node_t
|
@@ -4912,6 +5663,12 @@ typedef struct pm_numbered_reference_read_node {
|
|
4912
5663
|
/**
|
4913
5664
|
* OptionalKeywordParameterNode
|
4914
5665
|
*
|
5666
|
+
* Represents an optional keyword parameter to a method, block, or lambda definition.
|
5667
|
+
*
|
5668
|
+
* def a(b: 1)
|
5669
|
+
* ^^^^
|
5670
|
+
* end
|
5671
|
+
*
|
4915
5672
|
* Type: PM_OPTIONAL_KEYWORD_PARAMETER_NODE
|
4916
5673
|
* Flags:
|
4917
5674
|
* PM_PARAMETER_FLAGS_REPEATED_PARAMETER
|
@@ -4941,6 +5698,12 @@ typedef struct pm_optional_keyword_parameter_node {
|
|
4941
5698
|
/**
|
4942
5699
|
* OptionalParameterNode
|
4943
5700
|
*
|
5701
|
+
* Represents an optional parameter to a method, block, or lambda definition.
|
5702
|
+
*
|
5703
|
+
* def a(b = 1)
|
5704
|
+
* ^^^^^
|
5705
|
+
* end
|
5706
|
+
*
|
4944
5707
|
* Type: PM_OPTIONAL_PARAMETER_NODE
|
4945
5708
|
* Flags:
|
4946
5709
|
* PM_PARAMETER_FLAGS_REPEATED_PARAMETER
|
@@ -4975,6 +5738,11 @@ typedef struct pm_optional_parameter_node {
|
|
4975
5738
|
/**
|
4976
5739
|
* OrNode
|
4977
5740
|
*
|
5741
|
+
* Represents the use of the `||` operator or the `or` keyword.
|
5742
|
+
*
|
5743
|
+
* left or right
|
5744
|
+
* ^^^^^^^^^^^^^
|
5745
|
+
*
|
4978
5746
|
* Type: PM_OR_NODE
|
4979
5747
|
*
|
4980
5748
|
* @extends pm_node_t
|
@@ -5023,6 +5791,12 @@ typedef struct pm_or_node {
|
|
5023
5791
|
/**
|
5024
5792
|
* ParametersNode
|
5025
5793
|
*
|
5794
|
+
* Represents the list of parameters on a method, block, or lambda definition.
|
5795
|
+
*
|
5796
|
+
* def a(b, c, d)
|
5797
|
+
* ^^^^^^^
|
5798
|
+
* end
|
5799
|
+
*
|
5026
5800
|
* Type: PM_PARAMETERS_NODE
|
5027
5801
|
*
|
5028
5802
|
* @extends pm_node_t
|
@@ -5070,6 +5844,11 @@ typedef struct pm_parameters_node {
|
|
5070
5844
|
/**
|
5071
5845
|
* ParenthesesNode
|
5072
5846
|
*
|
5847
|
+
* Represents a parenthesized expression
|
5848
|
+
*
|
5849
|
+
* (10 + 34)
|
5850
|
+
* ^^^^^^^^^
|
5851
|
+
*
|
5073
5852
|
* Type: PM_PARENTHESES_NODE
|
5074
5853
|
*
|
5075
5854
|
* @extends pm_node_t
|
@@ -5097,6 +5876,11 @@ typedef struct pm_parentheses_node {
|
|
5097
5876
|
/**
|
5098
5877
|
* PinnedExpressionNode
|
5099
5878
|
*
|
5879
|
+
* Represents the use of the `^` operator for pinning an expression in a pattern matching expression.
|
5880
|
+
*
|
5881
|
+
* foo in ^(bar)
|
5882
|
+
* ^^^^^^
|
5883
|
+
*
|
5100
5884
|
* Type: PM_PINNED_EXPRESSION_NODE
|
5101
5885
|
*
|
5102
5886
|
* @extends pm_node_t
|
@@ -5129,6 +5913,11 @@ typedef struct pm_pinned_expression_node {
|
|
5129
5913
|
/**
|
5130
5914
|
* PinnedVariableNode
|
5131
5915
|
*
|
5916
|
+
* Represents the use of the `^` operator for pinning a variable in a pattern matching expression.
|
5917
|
+
*
|
5918
|
+
* foo in ^bar
|
5919
|
+
* ^^^^
|
5920
|
+
*
|
5132
5921
|
* Type: PM_PINNED_VARIABLE_NODE
|
5133
5922
|
*
|
5134
5923
|
* @extends pm_node_t
|
@@ -5151,6 +5940,11 @@ typedef struct pm_pinned_variable_node {
|
|
5151
5940
|
/**
|
5152
5941
|
* PostExecutionNode
|
5153
5942
|
*
|
5943
|
+
* Represents the use of the `END` keyword.
|
5944
|
+
*
|
5945
|
+
* END { foo }
|
5946
|
+
* ^^^^^^^^^^^
|
5947
|
+
*
|
5154
5948
|
* Type: PM_POST_EXECUTION_NODE
|
5155
5949
|
*
|
5156
5950
|
* @extends pm_node_t
|
@@ -5183,6 +5977,11 @@ typedef struct pm_post_execution_node {
|
|
5183
5977
|
/**
|
5184
5978
|
* PreExecutionNode
|
5185
5979
|
*
|
5980
|
+
* Represents the use of the `BEGIN` keyword.
|
5981
|
+
*
|
5982
|
+
* BEGIN { foo }
|
5983
|
+
* ^^^^^^^^^^^^^
|
5984
|
+
*
|
5186
5985
|
* Type: PM_PRE_EXECUTION_NODE
|
5187
5986
|
*
|
5188
5987
|
* @extends pm_node_t
|
@@ -5215,6 +6014,8 @@ typedef struct pm_pre_execution_node {
|
|
5215
6014
|
/**
|
5216
6015
|
* ProgramNode
|
5217
6016
|
*
|
6017
|
+
* The top level node of any parse tree.
|
6018
|
+
*
|
5218
6019
|
* Type: PM_PROGRAM_NODE
|
5219
6020
|
*
|
5220
6021
|
* @extends pm_node_t
|
@@ -5237,6 +6038,14 @@ typedef struct pm_program_node {
|
|
5237
6038
|
/**
|
5238
6039
|
* RangeNode
|
5239
6040
|
*
|
6041
|
+
* Represents the use of the `..` or `...` operators.
|
6042
|
+
*
|
6043
|
+
* 1..2
|
6044
|
+
* ^^^^
|
6045
|
+
*
|
6046
|
+
* c if a =~ /left/ ... b =~ /right/
|
6047
|
+
* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
6048
|
+
*
|
5240
6049
|
* Type: PM_RANGE_NODE
|
5241
6050
|
* Flags:
|
5242
6051
|
* PM_RANGE_FLAGS_EXCLUDE_END
|
@@ -5285,6 +6094,11 @@ typedef struct pm_range_node {
|
|
5285
6094
|
/**
|
5286
6095
|
* RationalNode
|
5287
6096
|
*
|
6097
|
+
* Represents a rational number literal.
|
6098
|
+
*
|
6099
|
+
* 1.0r
|
6100
|
+
* ^^^^
|
6101
|
+
*
|
5288
6102
|
* Type: PM_RATIONAL_NODE
|
5289
6103
|
* Flags:
|
5290
6104
|
* PM_INTEGER_BASE_FLAGS_BINARY
|
@@ -5320,6 +6134,11 @@ typedef struct pm_rational_node {
|
|
5320
6134
|
/**
|
5321
6135
|
* RedoNode
|
5322
6136
|
*
|
6137
|
+
* Represents the use of the `redo` keyword.
|
6138
|
+
*
|
6139
|
+
* redo
|
6140
|
+
* ^^^^
|
6141
|
+
*
|
5323
6142
|
* Type: PM_REDO_NODE
|
5324
6143
|
*
|
5325
6144
|
* @extends pm_node_t
|
@@ -5332,6 +6151,11 @@ typedef struct pm_redo_node {
|
|
5332
6151
|
/**
|
5333
6152
|
* RegularExpressionNode
|
5334
6153
|
*
|
6154
|
+
* Represents a regular expression literal with no interpolation.
|
6155
|
+
*
|
6156
|
+
* /foo/i
|
6157
|
+
* ^^^^^^
|
6158
|
+
*
|
5335
6159
|
* Type: PM_REGULAR_EXPRESSION_NODE
|
5336
6160
|
* Flags:
|
5337
6161
|
* PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
|
@@ -5376,6 +6200,12 @@ typedef struct pm_regular_expression_node {
|
|
5376
6200
|
/**
|
5377
6201
|
* RequiredKeywordParameterNode
|
5378
6202
|
*
|
6203
|
+
* Represents a required keyword parameter to a method, block, or lambda definition.
|
6204
|
+
*
|
6205
|
+
* def a(b: )
|
6206
|
+
* ^^
|
6207
|
+
* end
|
6208
|
+
*
|
5379
6209
|
* Type: PM_REQUIRED_KEYWORD_PARAMETER_NODE
|
5380
6210
|
* Flags:
|
5381
6211
|
* PM_PARAMETER_FLAGS_REPEATED_PARAMETER
|
@@ -5400,6 +6230,12 @@ typedef struct pm_required_keyword_parameter_node {
|
|
5400
6230
|
/**
|
5401
6231
|
* RequiredParameterNode
|
5402
6232
|
*
|
6233
|
+
* Represents a required parameter to a method, block, or lambda definition.
|
6234
|
+
*
|
6235
|
+
* def a(b)
|
6236
|
+
* ^
|
6237
|
+
* end
|
6238
|
+
*
|
5403
6239
|
* Type: PM_REQUIRED_PARAMETER_NODE
|
5404
6240
|
* Flags:
|
5405
6241
|
* PM_PARAMETER_FLAGS_REPEATED_PARAMETER
|
@@ -5419,6 +6255,11 @@ typedef struct pm_required_parameter_node {
|
|
5419
6255
|
/**
|
5420
6256
|
* RescueModifierNode
|
5421
6257
|
*
|
6258
|
+
* Represents an expression modified with a rescue.
|
6259
|
+
*
|
6260
|
+
* foo rescue nil
|
6261
|
+
* ^^^^^^^^^^^^^^
|
6262
|
+
*
|
5422
6263
|
* Type: PM_RESCUE_MODIFIER_NODE
|
5423
6264
|
*
|
5424
6265
|
* @extends pm_node_t
|
@@ -5446,6 +6287,16 @@ typedef struct pm_rescue_modifier_node {
|
|
5446
6287
|
/**
|
5447
6288
|
* RescueNode
|
5448
6289
|
*
|
6290
|
+
* Represents a rescue statement.
|
6291
|
+
*
|
6292
|
+
* begin
|
6293
|
+
* rescue Foo, *splat, Bar => ex
|
6294
|
+
* foo
|
6295
|
+
* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
6296
|
+
* end
|
6297
|
+
*
|
6298
|
+
* `Foo, *splat, Bar` are in the `exceptions` field. `ex` is in the `exception` field.
|
6299
|
+
*
|
5449
6300
|
* Type: PM_RESCUE_NODE
|
5450
6301
|
*
|
5451
6302
|
* @extends pm_node_t
|
@@ -5480,14 +6331,20 @@ typedef struct pm_rescue_node {
|
|
5480
6331
|
struct pm_statements_node *statements;
|
5481
6332
|
|
5482
6333
|
/**
|
5483
|
-
* RescueNode#
|
6334
|
+
* RescueNode#subsequent
|
5484
6335
|
*/
|
5485
|
-
struct pm_rescue_node *
|
6336
|
+
struct pm_rescue_node *subsequent;
|
5486
6337
|
} pm_rescue_node_t;
|
5487
6338
|
|
5488
6339
|
/**
|
5489
6340
|
* RestParameterNode
|
5490
6341
|
*
|
6342
|
+
* Represents a rest parameter to a method, block, or lambda definition.
|
6343
|
+
*
|
6344
|
+
* def a(*b)
|
6345
|
+
* ^^
|
6346
|
+
* end
|
6347
|
+
*
|
5491
6348
|
* Type: PM_REST_PARAMETER_NODE
|
5492
6349
|
* Flags:
|
5493
6350
|
* PM_PARAMETER_FLAGS_REPEATED_PARAMETER
|
@@ -5517,6 +6374,11 @@ typedef struct pm_rest_parameter_node {
|
|
5517
6374
|
/**
|
5518
6375
|
* RetryNode
|
5519
6376
|
*
|
6377
|
+
* Represents the use of the `retry` keyword.
|
6378
|
+
*
|
6379
|
+
* retry
|
6380
|
+
* ^^^^^
|
6381
|
+
*
|
5520
6382
|
* Type: PM_RETRY_NODE
|
5521
6383
|
*
|
5522
6384
|
* @extends pm_node_t
|
@@ -5529,9 +6391,12 @@ typedef struct pm_retry_node {
|
|
5529
6391
|
/**
|
5530
6392
|
* ReturnNode
|
5531
6393
|
*
|
6394
|
+
* Represents the use of the `return` keyword.
|
6395
|
+
*
|
6396
|
+
* return 1
|
6397
|
+
* ^^^^^^^^
|
6398
|
+
*
|
5532
6399
|
* Type: PM_RETURN_NODE
|
5533
|
-
* Flags:
|
5534
|
-
* PM_RETURN_NODE_FLAGS_REDUNDANT
|
5535
6400
|
*
|
5536
6401
|
* @extends pm_node_t
|
5537
6402
|
*/
|
@@ -5553,6 +6418,11 @@ typedef struct pm_return_node {
|
|
5553
6418
|
/**
|
5554
6419
|
* SelfNode
|
5555
6420
|
*
|
6421
|
+
* Represents the `self` keyword.
|
6422
|
+
*
|
6423
|
+
* self
|
6424
|
+
* ^^^^
|
6425
|
+
*
|
5556
6426
|
* Type: PM_SELF_NODE
|
5557
6427
|
*
|
5558
6428
|
* @extends pm_node_t
|
@@ -5565,6 +6435,12 @@ typedef struct pm_self_node {
|
|
5565
6435
|
/**
|
5566
6436
|
* ShareableConstantNode
|
5567
6437
|
*
|
6438
|
+
* This node wraps a constant write to indicate that when the value is written, it should have its shareability state modified.
|
6439
|
+
*
|
6440
|
+
* # shareable_constant_value: literal
|
6441
|
+
* C = { a: 1 }
|
6442
|
+
* ^^^^^^^^^^^^
|
6443
|
+
*
|
5568
6444
|
* Type: PM_SHAREABLE_CONSTANT_NODE
|
5569
6445
|
* Flags:
|
5570
6446
|
* PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL
|
@@ -5588,6 +6464,11 @@ typedef struct pm_shareable_constant_node {
|
|
5588
6464
|
/**
|
5589
6465
|
* SingletonClassNode
|
5590
6466
|
*
|
6467
|
+
* Represents a singleton class declaration involving the `class` keyword.
|
6468
|
+
*
|
6469
|
+
* class << self end
|
6470
|
+
* ^^^^^^^^^^^^^^^^^
|
6471
|
+
*
|
5591
6472
|
* Type: PM_SINGLETON_CLASS_NODE
|
5592
6473
|
*
|
5593
6474
|
* @extends pm_node_t
|
@@ -5630,6 +6511,11 @@ typedef struct pm_singleton_class_node {
|
|
5630
6511
|
/**
|
5631
6512
|
* SourceEncodingNode
|
5632
6513
|
*
|
6514
|
+
* Represents the use of the `__ENCODING__` keyword.
|
6515
|
+
*
|
6516
|
+
* __ENCODING__
|
6517
|
+
* ^^^^^^^^^^^^
|
6518
|
+
*
|
5633
6519
|
* Type: PM_SOURCE_ENCODING_NODE
|
5634
6520
|
*
|
5635
6521
|
* @extends pm_node_t
|
@@ -5642,6 +6528,11 @@ typedef struct pm_source_encoding_node {
|
|
5642
6528
|
/**
|
5643
6529
|
* SourceFileNode
|
5644
6530
|
*
|
6531
|
+
* Represents the use of the `__FILE__` keyword.
|
6532
|
+
*
|
6533
|
+
* __FILE__
|
6534
|
+
* ^^^^^^^^
|
6535
|
+
*
|
5645
6536
|
* Type: PM_SOURCE_FILE_NODE
|
5646
6537
|
* Flags:
|
5647
6538
|
* PM_STRING_FLAGS_FORCED_UTF8_ENCODING
|
@@ -5666,6 +6557,11 @@ typedef struct pm_source_file_node {
|
|
5666
6557
|
/**
|
5667
6558
|
* SourceLineNode
|
5668
6559
|
*
|
6560
|
+
* Represents the use of the `__LINE__` keyword.
|
6561
|
+
*
|
6562
|
+
* __LINE__
|
6563
|
+
* ^^^^^^^^
|
6564
|
+
*
|
5669
6565
|
* Type: PM_SOURCE_LINE_NODE
|
5670
6566
|
*
|
5671
6567
|
* @extends pm_node_t
|
@@ -5678,6 +6574,11 @@ typedef struct pm_source_line_node {
|
|
5678
6574
|
/**
|
5679
6575
|
* SplatNode
|
5680
6576
|
*
|
6577
|
+
* Represents the use of the splat operator.
|
6578
|
+
*
|
6579
|
+
* [*a]
|
6580
|
+
* ^^
|
6581
|
+
*
|
5681
6582
|
* Type: PM_SPLAT_NODE
|
5682
6583
|
*
|
5683
6584
|
* @extends pm_node_t
|
@@ -5700,6 +6601,11 @@ typedef struct pm_splat_node {
|
|
5700
6601
|
/**
|
5701
6602
|
* StatementsNode
|
5702
6603
|
*
|
6604
|
+
* Represents a set of statements contained within some scope.
|
6605
|
+
*
|
6606
|
+
* foo; bar; baz
|
6607
|
+
* ^^^^^^^^^^^^^
|
6608
|
+
*
|
5703
6609
|
* Type: PM_STATEMENTS_NODE
|
5704
6610
|
*
|
5705
6611
|
* @extends pm_node_t
|
@@ -5717,6 +6623,17 @@ typedef struct pm_statements_node {
|
|
5717
6623
|
/**
|
5718
6624
|
* StringNode
|
5719
6625
|
*
|
6626
|
+
* Represents a string literal, a string contained within a `%w` list, or plain string content within an interpolated string.
|
6627
|
+
*
|
6628
|
+
* "foo"
|
6629
|
+
* ^^^^^
|
6630
|
+
*
|
6631
|
+
* %w[foo]
|
6632
|
+
* ^^^
|
6633
|
+
*
|
6634
|
+
* "foo #{bar} baz"
|
6635
|
+
* ^^^^ ^^^^
|
6636
|
+
*
|
5720
6637
|
* Type: PM_STRING_NODE
|
5721
6638
|
* Flags:
|
5722
6639
|
* PM_STRING_FLAGS_FORCED_UTF8_ENCODING
|
@@ -5754,6 +6671,14 @@ typedef struct pm_string_node {
|
|
5754
6671
|
/**
|
5755
6672
|
* SuperNode
|
5756
6673
|
*
|
6674
|
+
* Represents the use of the `super` keyword with parentheses or arguments.
|
6675
|
+
*
|
6676
|
+
* super()
|
6677
|
+
* ^^^^^^^
|
6678
|
+
*
|
6679
|
+
* super foo, bar
|
6680
|
+
* ^^^^^^^^^^^^^^
|
6681
|
+
*
|
5757
6682
|
* Type: PM_SUPER_NODE
|
5758
6683
|
*
|
5759
6684
|
* @extends pm_node_t
|
@@ -5791,6 +6716,14 @@ typedef struct pm_super_node {
|
|
5791
6716
|
/**
|
5792
6717
|
* SymbolNode
|
5793
6718
|
*
|
6719
|
+
* Represents a symbol literal or a symbol contained within a `%i` list.
|
6720
|
+
*
|
6721
|
+
* :foo
|
6722
|
+
* ^^^^
|
6723
|
+
*
|
6724
|
+
* %i[foo]
|
6725
|
+
* ^^^
|
6726
|
+
*
|
5794
6727
|
* Type: PM_SYMBOL_NODE
|
5795
6728
|
* Flags:
|
5796
6729
|
* PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING
|
@@ -5827,6 +6760,11 @@ typedef struct pm_symbol_node {
|
|
5827
6760
|
/**
|
5828
6761
|
* TrueNode
|
5829
6762
|
*
|
6763
|
+
* Represents the use of the literal `true` keyword.
|
6764
|
+
*
|
6765
|
+
* true
|
6766
|
+
* ^^^^
|
6767
|
+
*
|
5830
6768
|
* Type: PM_TRUE_NODE
|
5831
6769
|
*
|
5832
6770
|
* @extends pm_node_t
|
@@ -5839,6 +6777,11 @@ typedef struct pm_true_node {
|
|
5839
6777
|
/**
|
5840
6778
|
* UndefNode
|
5841
6779
|
*
|
6780
|
+
* Represents the use of the `undef` keyword.
|
6781
|
+
*
|
6782
|
+
* undef :foo, :bar, :baz
|
6783
|
+
* ^^^^^^^^^^^^^^^^^^^^^^
|
6784
|
+
*
|
5842
6785
|
* Type: PM_UNDEF_NODE
|
5843
6786
|
*
|
5844
6787
|
* @extends pm_node_t
|
@@ -5861,6 +6804,14 @@ typedef struct pm_undef_node {
|
|
5861
6804
|
/**
|
5862
6805
|
* UnlessNode
|
5863
6806
|
*
|
6807
|
+
* Represents the use of the `unless` keyword, either in the block form or the modifier form.
|
6808
|
+
*
|
6809
|
+
* bar unless foo
|
6810
|
+
* ^^^^^^^^^^^^^^
|
6811
|
+
*
|
6812
|
+
* unless foo then bar end
|
6813
|
+
* ^^^^^^^^^^^^^^^^^^^^^^^
|
6814
|
+
*
|
5864
6815
|
* Type: PM_UNLESS_NODE
|
5865
6816
|
*
|
5866
6817
|
* @extends pm_node_t
|
@@ -5917,14 +6868,14 @@ typedef struct pm_unless_node {
|
|
5917
6868
|
struct pm_statements_node *statements;
|
5918
6869
|
|
5919
6870
|
/**
|
5920
|
-
* UnlessNode#
|
6871
|
+
* UnlessNode#else_clause
|
5921
6872
|
*
|
5922
6873
|
* The else clause of the unless expression, if present.
|
5923
6874
|
*
|
5924
6875
|
* unless cond then bar else baz end
|
5925
6876
|
* ^^^^^^^^
|
5926
6877
|
*/
|
5927
|
-
struct pm_else_node *
|
6878
|
+
struct pm_else_node *else_clause;
|
5928
6879
|
|
5929
6880
|
/**
|
5930
6881
|
* UnlessNode#end_keyword_loc
|
@@ -5940,6 +6891,14 @@ typedef struct pm_unless_node {
|
|
5940
6891
|
/**
|
5941
6892
|
* UntilNode
|
5942
6893
|
*
|
6894
|
+
* Represents the use of the `until` keyword, either in the block form or the modifier form.
|
6895
|
+
*
|
6896
|
+
* bar until foo
|
6897
|
+
* ^^^^^^^^^^^^^
|
6898
|
+
*
|
6899
|
+
* until foo do bar end
|
6900
|
+
* ^^^^^^^^^^^^^^^^^^^^
|
6901
|
+
*
|
5943
6902
|
* Type: PM_UNTIL_NODE
|
5944
6903
|
* Flags:
|
5945
6904
|
* PM_LOOP_FLAGS_BEGIN_MODIFIER
|
@@ -5974,6 +6933,13 @@ typedef struct pm_until_node {
|
|
5974
6933
|
/**
|
5975
6934
|
* WhenNode
|
5976
6935
|
*
|
6936
|
+
* Represents the use of the `when` keyword within a case statement.
|
6937
|
+
*
|
6938
|
+
* case true
|
6939
|
+
* when true
|
6940
|
+
* ^^^^^^^^^
|
6941
|
+
* end
|
6942
|
+
*
|
5977
6943
|
* Type: PM_WHEN_NODE
|
5978
6944
|
*
|
5979
6945
|
* @extends pm_node_t
|
@@ -6006,6 +6972,14 @@ typedef struct pm_when_node {
|
|
6006
6972
|
/**
|
6007
6973
|
* WhileNode
|
6008
6974
|
*
|
6975
|
+
* Represents the use of the `while` keyword, either in the block form or the modifier form.
|
6976
|
+
*
|
6977
|
+
* bar while foo
|
6978
|
+
* ^^^^^^^^^^^^^
|
6979
|
+
*
|
6980
|
+
* while foo do bar end
|
6981
|
+
* ^^^^^^^^^^^^^^^^^^^^
|
6982
|
+
*
|
6009
6983
|
* Type: PM_WHILE_NODE
|
6010
6984
|
* Flags:
|
6011
6985
|
* PM_LOOP_FLAGS_BEGIN_MODIFIER
|
@@ -6040,6 +7014,11 @@ typedef struct pm_while_node {
|
|
6040
7014
|
/**
|
6041
7015
|
* XStringNode
|
6042
7016
|
*
|
7017
|
+
* Represents an xstring literal with no interpolation.
|
7018
|
+
*
|
7019
|
+
* `foo`
|
7020
|
+
* ^^^^^
|
7021
|
+
*
|
6043
7022
|
* Type: PM_X_STRING_NODE
|
6044
7023
|
* Flags:
|
6045
7024
|
* PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING
|
@@ -6075,6 +7054,11 @@ typedef struct pm_x_string_node {
|
|
6075
7054
|
/**
|
6076
7055
|
* YieldNode
|
6077
7056
|
*
|
7057
|
+
* Represents the use of the `yield` keyword.
|
7058
|
+
*
|
7059
|
+
* yield 1
|
7060
|
+
* ^^^^^^^
|
7061
|
+
*
|
6078
7062
|
* Type: PM_YIELD_NODE
|
6079
7063
|
*
|
6080
7064
|
* @extends pm_node_t
|
@@ -6109,10 +7093,13 @@ typedef struct pm_yield_node {
|
|
6109
7093
|
*/
|
6110
7094
|
typedef enum pm_arguments_node_flags {
|
6111
7095
|
/** if arguments contain keywords */
|
6112
|
-
PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS =
|
7096
|
+
PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS = 4,
|
6113
7097
|
|
6114
7098
|
/** if arguments contain keyword splat */
|
6115
|
-
PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT =
|
7099
|
+
PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT = 8,
|
7100
|
+
|
7101
|
+
/** if arguments contain splat */
|
7102
|
+
PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT = 16,
|
6116
7103
|
} pm_arguments_node_flags_t;
|
6117
7104
|
|
6118
7105
|
/**
|
@@ -6120,7 +7107,7 @@ typedef enum pm_arguments_node_flags {
|
|
6120
7107
|
*/
|
6121
7108
|
typedef enum pm_array_node_flags {
|
6122
7109
|
/** if array contains splat nodes */
|
6123
|
-
PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT =
|
7110
|
+
PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT = 4,
|
6124
7111
|
} pm_array_node_flags_t;
|
6125
7112
|
|
6126
7113
|
/**
|
@@ -6128,16 +7115,16 @@ typedef enum pm_array_node_flags {
|
|
6128
7115
|
*/
|
6129
7116
|
typedef enum pm_call_node_flags {
|
6130
7117
|
/** &. operator */
|
6131
|
-
PM_CALL_NODE_FLAGS_SAFE_NAVIGATION =
|
7118
|
+
PM_CALL_NODE_FLAGS_SAFE_NAVIGATION = 4,
|
6132
7119
|
|
6133
7120
|
/** a call that could have been a local variable */
|
6134
|
-
PM_CALL_NODE_FLAGS_VARIABLE_CALL =
|
7121
|
+
PM_CALL_NODE_FLAGS_VARIABLE_CALL = 8,
|
6135
7122
|
|
6136
7123
|
/** a call that is an attribute write, so the value being written should be returned */
|
6137
|
-
PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE =
|
7124
|
+
PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE = 16,
|
6138
7125
|
|
6139
7126
|
/** a call that ignores method visibility */
|
6140
|
-
PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY =
|
7127
|
+
PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY = 32,
|
6141
7128
|
} pm_call_node_flags_t;
|
6142
7129
|
|
6143
7130
|
/**
|
@@ -6145,10 +7132,10 @@ typedef enum pm_call_node_flags {
|
|
6145
7132
|
*/
|
6146
7133
|
typedef enum pm_encoding_flags {
|
6147
7134
|
/** internal bytes forced the encoding to UTF-8 */
|
6148
|
-
PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING =
|
7135
|
+
PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING = 4,
|
6149
7136
|
|
6150
7137
|
/** internal bytes forced the encoding to binary */
|
6151
|
-
PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING =
|
7138
|
+
PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING = 8,
|
6152
7139
|
} pm_encoding_flags_t;
|
6153
7140
|
|
6154
7141
|
/**
|
@@ -6156,16 +7143,16 @@ typedef enum pm_encoding_flags {
|
|
6156
7143
|
*/
|
6157
7144
|
typedef enum pm_integer_base_flags {
|
6158
7145
|
/** 0b prefix */
|
6159
|
-
PM_INTEGER_BASE_FLAGS_BINARY =
|
7146
|
+
PM_INTEGER_BASE_FLAGS_BINARY = 4,
|
6160
7147
|
|
6161
7148
|
/** 0d or no prefix */
|
6162
|
-
PM_INTEGER_BASE_FLAGS_DECIMAL =
|
7149
|
+
PM_INTEGER_BASE_FLAGS_DECIMAL = 8,
|
6163
7150
|
|
6164
7151
|
/** 0o or 0 prefix */
|
6165
|
-
PM_INTEGER_BASE_FLAGS_OCTAL =
|
7152
|
+
PM_INTEGER_BASE_FLAGS_OCTAL = 16,
|
6166
7153
|
|
6167
7154
|
/** 0x prefix */
|
6168
|
-
PM_INTEGER_BASE_FLAGS_HEXADECIMAL =
|
7155
|
+
PM_INTEGER_BASE_FLAGS_HEXADECIMAL = 32,
|
6169
7156
|
} pm_integer_base_flags_t;
|
6170
7157
|
|
6171
7158
|
/**
|
@@ -6173,10 +7160,10 @@ typedef enum pm_integer_base_flags {
|
|
6173
7160
|
*/
|
6174
7161
|
typedef enum pm_interpolated_string_node_flags {
|
6175
7162
|
/** frozen by virtue of a `frozen_string_literal: true` comment or `--enable-frozen-string-literal`; only for adjacent string literals like `'a' 'b'` */
|
6176
|
-
PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN =
|
7163
|
+
PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN = 4,
|
6177
7164
|
|
6178
7165
|
/** mutable by virtue of a `frozen_string_literal: false` comment or `--disable-frozen-string-literal`; only for adjacent string literals like `'a' 'b'` */
|
6179
|
-
PM_INTERPOLATED_STRING_NODE_FLAGS_MUTABLE =
|
7166
|
+
PM_INTERPOLATED_STRING_NODE_FLAGS_MUTABLE = 8,
|
6180
7167
|
} pm_interpolated_string_node_flags_t;
|
6181
7168
|
|
6182
7169
|
/**
|
@@ -6184,7 +7171,7 @@ typedef enum pm_interpolated_string_node_flags {
|
|
6184
7171
|
*/
|
6185
7172
|
typedef enum pm_keyword_hash_node_flags {
|
6186
7173
|
/** a keyword hash which only has `AssocNode` elements all with symbol keys, which means the elements can be treated as keyword arguments */
|
6187
|
-
PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS =
|
7174
|
+
PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS = 4,
|
6188
7175
|
} pm_keyword_hash_node_flags_t;
|
6189
7176
|
|
6190
7177
|
/**
|
@@ -6192,7 +7179,7 @@ typedef enum pm_keyword_hash_node_flags {
|
|
6192
7179
|
*/
|
6193
7180
|
typedef enum pm_loop_flags {
|
6194
7181
|
/** a loop after a begin statement, so the body is executed first before the condition */
|
6195
|
-
PM_LOOP_FLAGS_BEGIN_MODIFIER =
|
7182
|
+
PM_LOOP_FLAGS_BEGIN_MODIFIER = 4,
|
6196
7183
|
} pm_loop_flags_t;
|
6197
7184
|
|
6198
7185
|
/**
|
@@ -6200,7 +7187,7 @@ typedef enum pm_loop_flags {
|
|
6200
7187
|
*/
|
6201
7188
|
typedef enum pm_parameter_flags {
|
6202
7189
|
/** a parameter name that has been repeated in the method signature */
|
6203
|
-
PM_PARAMETER_FLAGS_REPEATED_PARAMETER =
|
7190
|
+
PM_PARAMETER_FLAGS_REPEATED_PARAMETER = 4,
|
6204
7191
|
} pm_parameter_flags_t;
|
6205
7192
|
|
6206
7193
|
/**
|
@@ -6208,7 +7195,7 @@ typedef enum pm_parameter_flags {
|
|
6208
7195
|
*/
|
6209
7196
|
typedef enum pm_range_flags {
|
6210
7197
|
/** ... operator */
|
6211
|
-
PM_RANGE_FLAGS_EXCLUDE_END =
|
7198
|
+
PM_RANGE_FLAGS_EXCLUDE_END = 4,
|
6212
7199
|
} pm_range_flags_t;
|
6213
7200
|
|
6214
7201
|
/**
|
@@ -6216,59 +7203,51 @@ typedef enum pm_range_flags {
|
|
6216
7203
|
*/
|
6217
7204
|
typedef enum pm_regular_expression_flags {
|
6218
7205
|
/** i - ignores the case of characters when matching */
|
6219
|
-
PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE =
|
7206
|
+
PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE = 4,
|
6220
7207
|
|
6221
7208
|
/** x - ignores whitespace and allows comments in regular expressions */
|
6222
|
-
PM_REGULAR_EXPRESSION_FLAGS_EXTENDED =
|
7209
|
+
PM_REGULAR_EXPRESSION_FLAGS_EXTENDED = 8,
|
6223
7210
|
|
6224
7211
|
/** m - allows $ to match the end of lines within strings */
|
6225
|
-
PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE =
|
7212
|
+
PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE = 16,
|
6226
7213
|
|
6227
7214
|
/** o - only interpolates values into the regular expression once */
|
6228
|
-
PM_REGULAR_EXPRESSION_FLAGS_ONCE =
|
7215
|
+
PM_REGULAR_EXPRESSION_FLAGS_ONCE = 32,
|
6229
7216
|
|
6230
7217
|
/** e - forces the EUC-JP encoding */
|
6231
|
-
PM_REGULAR_EXPRESSION_FLAGS_EUC_JP =
|
7218
|
+
PM_REGULAR_EXPRESSION_FLAGS_EUC_JP = 64,
|
6232
7219
|
|
6233
7220
|
/** n - forces the ASCII-8BIT encoding */
|
6234
|
-
PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT =
|
7221
|
+
PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT = 128,
|
6235
7222
|
|
6236
7223
|
/** s - forces the Windows-31J encoding */
|
6237
|
-
PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J =
|
7224
|
+
PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J = 256,
|
6238
7225
|
|
6239
7226
|
/** u - forces the UTF-8 encoding */
|
6240
|
-
PM_REGULAR_EXPRESSION_FLAGS_UTF_8 =
|
7227
|
+
PM_REGULAR_EXPRESSION_FLAGS_UTF_8 = 512,
|
6241
7228
|
|
6242
7229
|
/** internal bytes forced the encoding to UTF-8 */
|
6243
|
-
PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING =
|
7230
|
+
PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING = 1024,
|
6244
7231
|
|
6245
7232
|
/** internal bytes forced the encoding to binary */
|
6246
|
-
PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING =
|
7233
|
+
PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING = 2048,
|
6247
7234
|
|
6248
7235
|
/** internal bytes forced the encoding to US-ASCII */
|
6249
|
-
PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING =
|
7236
|
+
PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING = 4096,
|
6250
7237
|
} pm_regular_expression_flags_t;
|
6251
7238
|
|
6252
|
-
/**
|
6253
|
-
* Flags for return nodes.
|
6254
|
-
*/
|
6255
|
-
typedef enum pm_return_node_flags {
|
6256
|
-
/** a return statement that is redundant because it is the last statement in a method */
|
6257
|
-
PM_RETURN_NODE_FLAGS_REDUNDANT = 1,
|
6258
|
-
} pm_return_node_flags_t;
|
6259
|
-
|
6260
7239
|
/**
|
6261
7240
|
* Flags for shareable constant nodes.
|
6262
7241
|
*/
|
6263
7242
|
typedef enum pm_shareable_constant_node_flags {
|
6264
7243
|
/** constant writes that should be modified with shareable constant value literal */
|
6265
|
-
PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL =
|
7244
|
+
PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL = 4,
|
6266
7245
|
|
6267
7246
|
/** constant writes that should be modified with shareable constant value experimental everything */
|
6268
|
-
PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_EVERYTHING =
|
7247
|
+
PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_EVERYTHING = 8,
|
6269
7248
|
|
6270
7249
|
/** constant writes that should be modified with shareable constant value experimental copy */
|
6271
|
-
PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_COPY =
|
7250
|
+
PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_COPY = 16,
|
6272
7251
|
} pm_shareable_constant_node_flags_t;
|
6273
7252
|
|
6274
7253
|
/**
|
@@ -6276,16 +7255,16 @@ typedef enum pm_shareable_constant_node_flags {
|
|
6276
7255
|
*/
|
6277
7256
|
typedef enum pm_string_flags {
|
6278
7257
|
/** internal bytes forced the encoding to UTF-8 */
|
6279
|
-
PM_STRING_FLAGS_FORCED_UTF8_ENCODING =
|
7258
|
+
PM_STRING_FLAGS_FORCED_UTF8_ENCODING = 4,
|
6280
7259
|
|
6281
7260
|
/** internal bytes forced the encoding to binary */
|
6282
|
-
PM_STRING_FLAGS_FORCED_BINARY_ENCODING =
|
7261
|
+
PM_STRING_FLAGS_FORCED_BINARY_ENCODING = 8,
|
6283
7262
|
|
6284
7263
|
/** frozen by virtue of a `frozen_string_literal: true` comment or `--enable-frozen-string-literal` */
|
6285
|
-
PM_STRING_FLAGS_FROZEN =
|
7264
|
+
PM_STRING_FLAGS_FROZEN = 16,
|
6286
7265
|
|
6287
7266
|
/** mutable by virtue of a `frozen_string_literal: false` comment or `--disable-frozen-string-literal` */
|
6288
|
-
PM_STRING_FLAGS_MUTABLE =
|
7267
|
+
PM_STRING_FLAGS_MUTABLE = 32,
|
6289
7268
|
} pm_string_flags_t;
|
6290
7269
|
|
6291
7270
|
/**
|
@@ -6293,13 +7272,13 @@ typedef enum pm_string_flags {
|
|
6293
7272
|
*/
|
6294
7273
|
typedef enum pm_symbol_flags {
|
6295
7274
|
/** internal bytes forced the encoding to UTF-8 */
|
6296
|
-
PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING =
|
7275
|
+
PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING = 4,
|
6297
7276
|
|
6298
7277
|
/** internal bytes forced the encoding to binary */
|
6299
|
-
PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING =
|
7278
|
+
PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING = 8,
|
6300
7279
|
|
6301
7280
|
/** internal bytes forced the encoding to US-ASCII */
|
6302
|
-
PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING =
|
7281
|
+
PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING = 16,
|
6303
7282
|
} pm_symbol_flags_t;
|
6304
7283
|
|
6305
7284
|
/**
|