prism 0.19.0 → 0.20.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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -1
  3. data/Makefile +5 -0
  4. data/README.md +8 -6
  5. data/config.yml +236 -38
  6. data/docs/build_system.md +19 -2
  7. data/docs/cruby_compilation.md +27 -0
  8. data/docs/parser_translation.md +34 -0
  9. data/docs/parsing_rules.md +19 -0
  10. data/docs/releasing.md +3 -3
  11. data/docs/ruby_api.md +1 -1
  12. data/docs/serialization.md +17 -5
  13. data/ext/prism/api_node.c +101 -81
  14. data/ext/prism/extension.c +74 -11
  15. data/ext/prism/extension.h +1 -1
  16. data/include/prism/ast.h +1699 -504
  17. data/include/prism/defines.h +8 -0
  18. data/include/prism/diagnostic.h +39 -2
  19. data/include/prism/encoding.h +10 -0
  20. data/include/prism/options.h +40 -14
  21. data/include/prism/parser.h +33 -17
  22. data/include/prism/util/pm_buffer.h +9 -0
  23. data/include/prism/util/pm_constant_pool.h +7 -0
  24. data/include/prism/util/pm_newline_list.h +0 -11
  25. data/include/prism/version.h +2 -2
  26. data/include/prism.h +19 -2
  27. data/lib/prism/debug.rb +11 -5
  28. data/lib/prism/dot_visitor.rb +36 -14
  29. data/lib/prism/dsl.rb +22 -22
  30. data/lib/prism/ffi.rb +2 -2
  31. data/lib/prism/node.rb +1020 -737
  32. data/lib/prism/node_ext.rb +2 -2
  33. data/lib/prism/parse_result.rb +17 -9
  34. data/lib/prism/serialize.rb +53 -29
  35. data/lib/prism/translation/parser/compiler.rb +1831 -0
  36. data/lib/prism/translation/parser/lexer.rb +335 -0
  37. data/lib/prism/translation/parser/rubocop.rb +37 -0
  38. data/lib/prism/translation/parser.rb +163 -0
  39. data/lib/prism/translation.rb +11 -0
  40. data/lib/prism.rb +1 -0
  41. data/prism.gemspec +12 -5
  42. data/rbi/prism.rbi +150 -88
  43. data/rbi/prism_static.rbi +15 -3
  44. data/sig/prism.rbs +996 -961
  45. data/sig/prism_static.rbs +123 -46
  46. data/src/diagnostic.c +259 -219
  47. data/src/encoding.c +4 -8
  48. data/src/node.c +2 -6
  49. data/src/options.c +24 -5
  50. data/src/prettyprint.c +174 -42
  51. data/src/prism.c +1136 -328
  52. data/src/serialize.c +12 -9
  53. data/src/token_type.c +353 -4
  54. data/src/util/pm_buffer.c +11 -0
  55. data/src/util/pm_constant_pool.c +12 -11
  56. data/src/util/pm_newline_list.c +2 -14
  57. metadata +10 -3
  58. data/docs/building.md +0 -29
data/include/prism/ast.h CHANGED
@@ -1089,13 +1089,19 @@ typedef struct pm_alias_global_variable_node {
1089
1089
  /** The embedded base node. */
1090
1090
  pm_node_t base;
1091
1091
 
1092
- /** AliasGlobalVariableNode#new_name */
1092
+ /**
1093
+ * AliasGlobalVariableNode#new_name
1094
+ */
1093
1095
  struct pm_node *new_name;
1094
1096
 
1095
- /** AliasGlobalVariableNode#old_name */
1097
+ /**
1098
+ * AliasGlobalVariableNode#old_name
1099
+ */
1096
1100
  struct pm_node *old_name;
1097
1101
 
1098
- /** AliasGlobalVariableNode#keyword_loc */
1102
+ /**
1103
+ * AliasGlobalVariableNode#keyword_loc
1104
+ */
1099
1105
  pm_location_t keyword_loc;
1100
1106
  } pm_alias_global_variable_node_t;
1101
1107
 
@@ -1110,13 +1116,19 @@ typedef struct pm_alias_method_node {
1110
1116
  /** The embedded base node. */
1111
1117
  pm_node_t base;
1112
1118
 
1113
- /** AliasMethodNode#new_name */
1119
+ /**
1120
+ * AliasMethodNode#new_name
1121
+ */
1114
1122
  struct pm_node *new_name;
1115
1123
 
1116
- /** AliasMethodNode#old_name */
1124
+ /**
1125
+ * AliasMethodNode#old_name
1126
+ */
1117
1127
  struct pm_node *old_name;
1118
1128
 
1119
- /** AliasMethodNode#keyword_loc */
1129
+ /**
1130
+ * AliasMethodNode#keyword_loc
1131
+ */
1120
1132
  pm_location_t keyword_loc;
1121
1133
  } pm_alias_method_node_t;
1122
1134
 
@@ -1131,13 +1143,19 @@ typedef struct pm_alternation_pattern_node {
1131
1143
  /** The embedded base node. */
1132
1144
  pm_node_t base;
1133
1145
 
1134
- /** AlternationPatternNode#left */
1146
+ /**
1147
+ * AlternationPatternNode#left
1148
+ */
1135
1149
  struct pm_node *left;
1136
1150
 
1137
- /** AlternationPatternNode#right */
1151
+ /**
1152
+ * AlternationPatternNode#right
1153
+ */
1138
1154
  struct pm_node *right;
1139
1155
 
1140
- /** AlternationPatternNode#operator_loc */
1156
+ /**
1157
+ * AlternationPatternNode#operator_loc
1158
+ */
1141
1159
  pm_location_t operator_loc;
1142
1160
  } pm_alternation_pattern_node_t;
1143
1161
 
@@ -1152,13 +1170,40 @@ typedef struct pm_and_node {
1152
1170
  /** The embedded base node. */
1153
1171
  pm_node_t base;
1154
1172
 
1155
- /** AndNode#left */
1173
+ /**
1174
+ * AndNode#left
1175
+ *
1176
+ * Represents the left side of the expression. It can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression).
1177
+ *
1178
+ * left and right
1179
+ * ^^^^
1180
+ *
1181
+ * 1 && 2
1182
+ * ^
1183
+ */
1156
1184
  struct pm_node *left;
1157
1185
 
1158
- /** AndNode#right */
1186
+ /**
1187
+ * AndNode#right
1188
+ *
1189
+ * Represents the right side of the expression. It can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression).
1190
+ *
1191
+ * left && right
1192
+ * ^^^^^
1193
+ *
1194
+ * 1 and 2
1195
+ * ^
1196
+ */
1159
1197
  struct pm_node *right;
1160
1198
 
1161
- /** AndNode#operator_loc */
1199
+ /**
1200
+ * AndNode#operator_loc
1201
+ *
1202
+ * The location of the `and` keyword or the `&&` operator.
1203
+ *
1204
+ * left and right
1205
+ * ^^^
1206
+ */
1162
1207
  pm_location_t operator_loc;
1163
1208
  } pm_and_node_t;
1164
1209
 
@@ -1175,7 +1220,9 @@ typedef struct pm_arguments_node {
1175
1220
  /** The embedded base node. */
1176
1221
  pm_node_t base;
1177
1222
 
1178
- /** ArgumentsNode#arguments */
1223
+ /**
1224
+ * ArgumentsNode#arguments
1225
+ */
1179
1226
  struct pm_node_list arguments;
1180
1227
  } pm_arguments_node_t;
1181
1228
 
@@ -1192,13 +1239,19 @@ typedef struct pm_array_node {
1192
1239
  /** The embedded base node. */
1193
1240
  pm_node_t base;
1194
1241
 
1195
- /** ArrayNode#elements */
1242
+ /**
1243
+ * ArrayNode#elements
1244
+ */
1196
1245
  struct pm_node_list elements;
1197
1246
 
1198
- /** ArrayNode#opening_loc */
1247
+ /**
1248
+ * ArrayNode#opening_loc
1249
+ */
1199
1250
  pm_location_t opening_loc;
1200
1251
 
1201
- /** ArrayNode#closing_loc */
1252
+ /**
1253
+ * ArrayNode#closing_loc
1254
+ */
1202
1255
  pm_location_t closing_loc;
1203
1256
  } pm_array_node_t;
1204
1257
 
@@ -1213,22 +1266,34 @@ typedef struct pm_array_pattern_node {
1213
1266
  /** The embedded base node. */
1214
1267
  pm_node_t base;
1215
1268
 
1216
- /** ArrayPatternNode#constant */
1269
+ /**
1270
+ * ArrayPatternNode#constant
1271
+ */
1217
1272
  struct pm_node *constant;
1218
1273
 
1219
- /** ArrayPatternNode#requireds */
1274
+ /**
1275
+ * ArrayPatternNode#requireds
1276
+ */
1220
1277
  struct pm_node_list requireds;
1221
1278
 
1222
- /** ArrayPatternNode#rest */
1279
+ /**
1280
+ * ArrayPatternNode#rest
1281
+ */
1223
1282
  struct pm_node *rest;
1224
1283
 
1225
- /** ArrayPatternNode#posts */
1284
+ /**
1285
+ * ArrayPatternNode#posts
1286
+ */
1226
1287
  struct pm_node_list posts;
1227
1288
 
1228
- /** ArrayPatternNode#opening_loc */
1289
+ /**
1290
+ * ArrayPatternNode#opening_loc
1291
+ */
1229
1292
  pm_location_t opening_loc;
1230
1293
 
1231
- /** ArrayPatternNode#closing_loc */
1294
+ /**
1295
+ * ArrayPatternNode#closing_loc
1296
+ */
1232
1297
  pm_location_t closing_loc;
1233
1298
  } pm_array_pattern_node_t;
1234
1299
 
@@ -1243,13 +1308,43 @@ typedef struct pm_assoc_node {
1243
1308
  /** The embedded base node. */
1244
1309
  pm_node_t base;
1245
1310
 
1246
- /** AssocNode#key */
1311
+ /**
1312
+ * AssocNode#key
1313
+ *
1314
+ * The key of the association. This can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression).
1315
+ *
1316
+ * { a: b }
1317
+ * ^
1318
+ *
1319
+ * { foo => bar }
1320
+ * ^^^
1321
+ *
1322
+ * { def a; end => 1 }
1323
+ * ^^^^^^^^^^
1324
+ */
1247
1325
  struct pm_node *key;
1248
1326
 
1249
- /** AssocNode#value */
1327
+ /**
1328
+ * AssocNode#value
1329
+ *
1330
+ * The value of the association, if present. This can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression).
1331
+ *
1332
+ * { foo => bar }
1333
+ * ^^^
1334
+ *
1335
+ * { x: 1 }
1336
+ * ^
1337
+ */
1250
1338
  struct pm_node *value;
1251
1339
 
1252
- /** AssocNode#operator_loc */
1340
+ /**
1341
+ * AssocNode#operator_loc
1342
+ *
1343
+ * The location of the `=>` operator, if present.
1344
+ *
1345
+ * { foo => bar }
1346
+ * ^^
1347
+ */
1253
1348
  pm_location_t operator_loc;
1254
1349
  } pm_assoc_node_t;
1255
1350
 
@@ -1264,10 +1359,24 @@ typedef struct pm_assoc_splat_node {
1264
1359
  /** The embedded base node. */
1265
1360
  pm_node_t base;
1266
1361
 
1267
- /** AssocSplatNode#value */
1362
+ /**
1363
+ * AssocSplatNode#value
1364
+ *
1365
+ * The value to be splatted, if present. Will be missing when keyword rest argument forwarding is used.
1366
+ *
1367
+ * { **foo }
1368
+ * ^^^
1369
+ */
1268
1370
  struct pm_node *value;
1269
1371
 
1270
- /** AssocSplatNode#operator_loc */
1372
+ /**
1373
+ * AssocSplatNode#operator_loc
1374
+ *
1375
+ * The location of the `**` operator.
1376
+ *
1377
+ * { **x }
1378
+ * ^^
1379
+ */
1271
1380
  pm_location_t operator_loc;
1272
1381
  } pm_assoc_splat_node_t;
1273
1382
 
@@ -1282,7 +1391,15 @@ typedef struct pm_back_reference_read_node {
1282
1391
  /** The embedded base node. */
1283
1392
  pm_node_t base;
1284
1393
 
1285
- /** BackReferenceReadNode#name */
1394
+ /**
1395
+ * BackReferenceReadNode#name
1396
+ *
1397
+ * The name of the back-reference variable, including the leading `$`.
1398
+ *
1399
+ * $& # name `:$&`
1400
+ *
1401
+ * $+ # name `:$+`
1402
+ */
1286
1403
  pm_constant_id_t name;
1287
1404
  } pm_back_reference_read_node_t;
1288
1405
 
@@ -1297,22 +1414,34 @@ typedef struct pm_begin_node {
1297
1414
  /** The embedded base node. */
1298
1415
  pm_node_t base;
1299
1416
 
1300
- /** BeginNode#begin_keyword_loc */
1417
+ /**
1418
+ * BeginNode#begin_keyword_loc
1419
+ */
1301
1420
  pm_location_t begin_keyword_loc;
1302
1421
 
1303
- /** BeginNode#statements */
1422
+ /**
1423
+ * BeginNode#statements
1424
+ */
1304
1425
  struct pm_statements_node *statements;
1305
1426
 
1306
- /** BeginNode#rescue_clause */
1427
+ /**
1428
+ * BeginNode#rescue_clause
1429
+ */
1307
1430
  struct pm_rescue_node *rescue_clause;
1308
1431
 
1309
- /** BeginNode#else_clause */
1432
+ /**
1433
+ * BeginNode#else_clause
1434
+ */
1310
1435
  struct pm_else_node *else_clause;
1311
1436
 
1312
- /** BeginNode#ensure_clause */
1437
+ /**
1438
+ * BeginNode#ensure_clause
1439
+ */
1313
1440
  struct pm_ensure_node *ensure_clause;
1314
1441
 
1315
- /** BeginNode#end_keyword_loc */
1442
+ /**
1443
+ * BeginNode#end_keyword_loc
1444
+ */
1316
1445
  pm_location_t end_keyword_loc;
1317
1446
  } pm_begin_node_t;
1318
1447
 
@@ -1327,10 +1456,14 @@ typedef struct pm_block_argument_node {
1327
1456
  /** The embedded base node. */
1328
1457
  pm_node_t base;
1329
1458
 
1330
- /** BlockArgumentNode#expression */
1459
+ /**
1460
+ * BlockArgumentNode#expression
1461
+ */
1331
1462
  struct pm_node *expression;
1332
1463
 
1333
- /** BlockArgumentNode#operator_loc */
1464
+ /**
1465
+ * BlockArgumentNode#operator_loc
1466
+ */
1334
1467
  pm_location_t operator_loc;
1335
1468
  } pm_block_argument_node_t;
1336
1469
 
@@ -1338,6 +1471,8 @@ typedef struct pm_block_argument_node {
1338
1471
  * BlockLocalVariableNode
1339
1472
  *
1340
1473
  * Type: PM_BLOCK_LOCAL_VARIABLE_NODE
1474
+ * Flags:
1475
+ * PM_PARAMETER_FLAGS_REPEATED_PARAMETER
1341
1476
  *
1342
1477
  * @extends pm_node_t
1343
1478
  */
@@ -1345,7 +1480,9 @@ typedef struct pm_block_local_variable_node {
1345
1480
  /** The embedded base node. */
1346
1481
  pm_node_t base;
1347
1482
 
1348
- /** BlockLocalVariableNode#name */
1483
+ /**
1484
+ * BlockLocalVariableNode#name
1485
+ */
1349
1486
  pm_constant_id_t name;
1350
1487
  } pm_block_local_variable_node_t;
1351
1488
 
@@ -1360,22 +1497,29 @@ typedef struct pm_block_node {
1360
1497
  /** The embedded base node. */
1361
1498
  pm_node_t base;
1362
1499
 
1363
- /** BlockNode#locals */
1500
+ /**
1501
+ * BlockNode#locals
1502
+ */
1364
1503
  pm_constant_id_list_t locals;
1365
1504
 
1366
- /** BlockNode#locals_body_index */
1367
- uint32_t locals_body_index;
1368
-
1369
- /** BlockNode#parameters */
1505
+ /**
1506
+ * BlockNode#parameters
1507
+ */
1370
1508
  struct pm_node *parameters;
1371
1509
 
1372
- /** BlockNode#body */
1510
+ /**
1511
+ * BlockNode#body
1512
+ */
1373
1513
  struct pm_node *body;
1374
1514
 
1375
- /** BlockNode#opening_loc */
1515
+ /**
1516
+ * BlockNode#opening_loc
1517
+ */
1376
1518
  pm_location_t opening_loc;
1377
1519
 
1378
- /** BlockNode#closing_loc */
1520
+ /**
1521
+ * BlockNode#closing_loc
1522
+ */
1379
1523
  pm_location_t closing_loc;
1380
1524
  } pm_block_node_t;
1381
1525
 
@@ -1383,6 +1527,8 @@ typedef struct pm_block_node {
1383
1527
  * BlockParameterNode
1384
1528
  *
1385
1529
  * Type: PM_BLOCK_PARAMETER_NODE
1530
+ * Flags:
1531
+ * PM_PARAMETER_FLAGS_REPEATED_PARAMETER
1386
1532
  *
1387
1533
  * @extends pm_node_t
1388
1534
  */
@@ -1390,13 +1536,19 @@ typedef struct pm_block_parameter_node {
1390
1536
  /** The embedded base node. */
1391
1537
  pm_node_t base;
1392
1538
 
1393
- /** BlockParameterNode#name */
1539
+ /**
1540
+ * BlockParameterNode#name
1541
+ */
1394
1542
  pm_constant_id_t name;
1395
1543
 
1396
- /** BlockParameterNode#name_loc */
1544
+ /**
1545
+ * BlockParameterNode#name_loc
1546
+ */
1397
1547
  pm_location_t name_loc;
1398
1548
 
1399
- /** BlockParameterNode#operator_loc */
1549
+ /**
1550
+ * BlockParameterNode#operator_loc
1551
+ */
1400
1552
  pm_location_t operator_loc;
1401
1553
  } pm_block_parameter_node_t;
1402
1554
 
@@ -1411,16 +1563,24 @@ typedef struct pm_block_parameters_node {
1411
1563
  /** The embedded base node. */
1412
1564
  pm_node_t base;
1413
1565
 
1414
- /** BlockParametersNode#parameters */
1566
+ /**
1567
+ * BlockParametersNode#parameters
1568
+ */
1415
1569
  struct pm_parameters_node *parameters;
1416
1570
 
1417
- /** BlockParametersNode#locals */
1571
+ /**
1572
+ * BlockParametersNode#locals
1573
+ */
1418
1574
  struct pm_node_list locals;
1419
1575
 
1420
- /** BlockParametersNode#opening_loc */
1576
+ /**
1577
+ * BlockParametersNode#opening_loc
1578
+ */
1421
1579
  pm_location_t opening_loc;
1422
1580
 
1423
- /** BlockParametersNode#closing_loc */
1581
+ /**
1582
+ * BlockParametersNode#closing_loc
1583
+ */
1424
1584
  pm_location_t closing_loc;
1425
1585
  } pm_block_parameters_node_t;
1426
1586
 
@@ -1435,10 +1595,14 @@ typedef struct pm_break_node {
1435
1595
  /** The embedded base node. */
1436
1596
  pm_node_t base;
1437
1597
 
1438
- /** BreakNode#arguments */
1598
+ /**
1599
+ * BreakNode#arguments
1600
+ */
1439
1601
  struct pm_arguments_node *arguments;
1440
1602
 
1441
- /** BreakNode#keyword_loc */
1603
+ /**
1604
+ * BreakNode#keyword_loc
1605
+ */
1442
1606
  pm_location_t keyword_loc;
1443
1607
  } pm_break_node_t;
1444
1608
 
@@ -1450,6 +1614,7 @@ typedef struct pm_break_node {
1450
1614
  * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1451
1615
  * PM_CALL_NODE_FLAGS_VARIABLE_CALL
1452
1616
  * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
1617
+ * PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY
1453
1618
  *
1454
1619
  * @extends pm_node_t
1455
1620
  */
@@ -1457,25 +1622,39 @@ typedef struct pm_call_and_write_node {
1457
1622
  /** The embedded base node. */
1458
1623
  pm_node_t base;
1459
1624
 
1460
- /** CallAndWriteNode#receiver */
1625
+ /**
1626
+ * CallAndWriteNode#receiver
1627
+ */
1461
1628
  struct pm_node *receiver;
1462
1629
 
1463
- /** CallAndWriteNode#call_operator_loc */
1630
+ /**
1631
+ * CallAndWriteNode#call_operator_loc
1632
+ */
1464
1633
  pm_location_t call_operator_loc;
1465
1634
 
1466
- /** CallAndWriteNode#message_loc */
1635
+ /**
1636
+ * CallAndWriteNode#message_loc
1637
+ */
1467
1638
  pm_location_t message_loc;
1468
1639
 
1469
- /** CallAndWriteNode#read_name */
1640
+ /**
1641
+ * CallAndWriteNode#read_name
1642
+ */
1470
1643
  pm_constant_id_t read_name;
1471
1644
 
1472
- /** CallAndWriteNode#write_name */
1645
+ /**
1646
+ * CallAndWriteNode#write_name
1647
+ */
1473
1648
  pm_constant_id_t write_name;
1474
1649
 
1475
- /** CallAndWriteNode#operator_loc */
1650
+ /**
1651
+ * CallAndWriteNode#operator_loc
1652
+ */
1476
1653
  pm_location_t operator_loc;
1477
1654
 
1478
- /** CallAndWriteNode#value */
1655
+ /**
1656
+ * CallAndWriteNode#value
1657
+ */
1479
1658
  struct pm_node *value;
1480
1659
  } pm_call_and_write_node_t;
1481
1660
 
@@ -1487,6 +1666,7 @@ typedef struct pm_call_and_write_node {
1487
1666
  * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1488
1667
  * PM_CALL_NODE_FLAGS_VARIABLE_CALL
1489
1668
  * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
1669
+ * PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY
1490
1670
  *
1491
1671
  * @extends pm_node_t
1492
1672
  */
@@ -1494,28 +1674,55 @@ typedef struct pm_call_node {
1494
1674
  /** The embedded base node. */
1495
1675
  pm_node_t base;
1496
1676
 
1497
- /** CallNode#receiver */
1677
+ /**
1678
+ * CallNode#receiver
1679
+ *
1680
+ * The object that the method is being called on. This can be either `nil` or any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression).
1681
+ *
1682
+ * foo.bar
1683
+ * ^^^
1684
+ *
1685
+ * +foo
1686
+ * ^^^
1687
+ *
1688
+ * foo + bar
1689
+ * ^^^
1690
+ */
1498
1691
  struct pm_node *receiver;
1499
1692
 
1500
- /** CallNode#call_operator_loc */
1693
+ /**
1694
+ * CallNode#call_operator_loc
1695
+ */
1501
1696
  pm_location_t call_operator_loc;
1502
1697
 
1503
- /** CallNode#name */
1698
+ /**
1699
+ * CallNode#name
1700
+ */
1504
1701
  pm_constant_id_t name;
1505
1702
 
1506
- /** CallNode#message_loc */
1703
+ /**
1704
+ * CallNode#message_loc
1705
+ */
1507
1706
  pm_location_t message_loc;
1508
1707
 
1509
- /** CallNode#opening_loc */
1708
+ /**
1709
+ * CallNode#opening_loc
1710
+ */
1510
1711
  pm_location_t opening_loc;
1511
1712
 
1512
- /** CallNode#arguments */
1713
+ /**
1714
+ * CallNode#arguments
1715
+ */
1513
1716
  struct pm_arguments_node *arguments;
1514
1717
 
1515
- /** CallNode#closing_loc */
1718
+ /**
1719
+ * CallNode#closing_loc
1720
+ */
1516
1721
  pm_location_t closing_loc;
1517
1722
 
1518
- /** CallNode#block */
1723
+ /**
1724
+ * CallNode#block
1725
+ */
1519
1726
  struct pm_node *block;
1520
1727
  } pm_call_node_t;
1521
1728
 
@@ -1527,6 +1734,7 @@ typedef struct pm_call_node {
1527
1734
  * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1528
1735
  * PM_CALL_NODE_FLAGS_VARIABLE_CALL
1529
1736
  * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
1737
+ * PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY
1530
1738
  *
1531
1739
  * @extends pm_node_t
1532
1740
  */
@@ -1534,28 +1742,44 @@ typedef struct pm_call_operator_write_node {
1534
1742
  /** The embedded base node. */
1535
1743
  pm_node_t base;
1536
1744
 
1537
- /** CallOperatorWriteNode#receiver */
1745
+ /**
1746
+ * CallOperatorWriteNode#receiver
1747
+ */
1538
1748
  struct pm_node *receiver;
1539
1749
 
1540
- /** CallOperatorWriteNode#call_operator_loc */
1750
+ /**
1751
+ * CallOperatorWriteNode#call_operator_loc
1752
+ */
1541
1753
  pm_location_t call_operator_loc;
1542
1754
 
1543
- /** CallOperatorWriteNode#message_loc */
1755
+ /**
1756
+ * CallOperatorWriteNode#message_loc
1757
+ */
1544
1758
  pm_location_t message_loc;
1545
1759
 
1546
- /** CallOperatorWriteNode#read_name */
1760
+ /**
1761
+ * CallOperatorWriteNode#read_name
1762
+ */
1547
1763
  pm_constant_id_t read_name;
1548
1764
 
1549
- /** CallOperatorWriteNode#write_name */
1765
+ /**
1766
+ * CallOperatorWriteNode#write_name
1767
+ */
1550
1768
  pm_constant_id_t write_name;
1551
1769
 
1552
- /** CallOperatorWriteNode#operator */
1770
+ /**
1771
+ * CallOperatorWriteNode#operator
1772
+ */
1553
1773
  pm_constant_id_t operator;
1554
1774
 
1555
- /** CallOperatorWriteNode#operator_loc */
1775
+ /**
1776
+ * CallOperatorWriteNode#operator_loc
1777
+ */
1556
1778
  pm_location_t operator_loc;
1557
1779
 
1558
- /** CallOperatorWriteNode#value */
1780
+ /**
1781
+ * CallOperatorWriteNode#value
1782
+ */
1559
1783
  struct pm_node *value;
1560
1784
  } pm_call_operator_write_node_t;
1561
1785
 
@@ -1567,6 +1791,7 @@ typedef struct pm_call_operator_write_node {
1567
1791
  * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1568
1792
  * PM_CALL_NODE_FLAGS_VARIABLE_CALL
1569
1793
  * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
1794
+ * PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY
1570
1795
  *
1571
1796
  * @extends pm_node_t
1572
1797
  */
@@ -1574,25 +1799,39 @@ typedef struct pm_call_or_write_node {
1574
1799
  /** The embedded base node. */
1575
1800
  pm_node_t base;
1576
1801
 
1577
- /** CallOrWriteNode#receiver */
1802
+ /**
1803
+ * CallOrWriteNode#receiver
1804
+ */
1578
1805
  struct pm_node *receiver;
1579
1806
 
1580
- /** CallOrWriteNode#call_operator_loc */
1807
+ /**
1808
+ * CallOrWriteNode#call_operator_loc
1809
+ */
1581
1810
  pm_location_t call_operator_loc;
1582
1811
 
1583
- /** CallOrWriteNode#message_loc */
1812
+ /**
1813
+ * CallOrWriteNode#message_loc
1814
+ */
1584
1815
  pm_location_t message_loc;
1585
1816
 
1586
- /** CallOrWriteNode#read_name */
1817
+ /**
1818
+ * CallOrWriteNode#read_name
1819
+ */
1587
1820
  pm_constant_id_t read_name;
1588
1821
 
1589
- /** CallOrWriteNode#write_name */
1822
+ /**
1823
+ * CallOrWriteNode#write_name
1824
+ */
1590
1825
  pm_constant_id_t write_name;
1591
1826
 
1592
- /** CallOrWriteNode#operator_loc */
1827
+ /**
1828
+ * CallOrWriteNode#operator_loc
1829
+ */
1593
1830
  pm_location_t operator_loc;
1594
1831
 
1595
- /** CallOrWriteNode#value */
1832
+ /**
1833
+ * CallOrWriteNode#value
1834
+ */
1596
1835
  struct pm_node *value;
1597
1836
  } pm_call_or_write_node_t;
1598
1837
 
@@ -1604,6 +1843,7 @@ typedef struct pm_call_or_write_node {
1604
1843
  * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1605
1844
  * PM_CALL_NODE_FLAGS_VARIABLE_CALL
1606
1845
  * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
1846
+ * PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY
1607
1847
  *
1608
1848
  * @extends pm_node_t
1609
1849
  */
@@ -1611,16 +1851,24 @@ typedef struct pm_call_target_node {
1611
1851
  /** The embedded base node. */
1612
1852
  pm_node_t base;
1613
1853
 
1614
- /** CallTargetNode#receiver */
1854
+ /**
1855
+ * CallTargetNode#receiver
1856
+ */
1615
1857
  struct pm_node *receiver;
1616
1858
 
1617
- /** CallTargetNode#call_operator_loc */
1859
+ /**
1860
+ * CallTargetNode#call_operator_loc
1861
+ */
1618
1862
  pm_location_t call_operator_loc;
1619
1863
 
1620
- /** CallTargetNode#name */
1864
+ /**
1865
+ * CallTargetNode#name
1866
+ */
1621
1867
  pm_constant_id_t name;
1622
1868
 
1623
- /** CallTargetNode#message_loc */
1869
+ /**
1870
+ * CallTargetNode#message_loc
1871
+ */
1624
1872
  pm_location_t message_loc;
1625
1873
  } pm_call_target_node_t;
1626
1874
 
@@ -1635,13 +1883,19 @@ typedef struct pm_capture_pattern_node {
1635
1883
  /** The embedded base node. */
1636
1884
  pm_node_t base;
1637
1885
 
1638
- /** CapturePatternNode#value */
1886
+ /**
1887
+ * CapturePatternNode#value
1888
+ */
1639
1889
  struct pm_node *value;
1640
1890
 
1641
- /** CapturePatternNode#target */
1891
+ /**
1892
+ * CapturePatternNode#target
1893
+ */
1642
1894
  struct pm_node *target;
1643
1895
 
1644
- /** CapturePatternNode#operator_loc */
1896
+ /**
1897
+ * CapturePatternNode#operator_loc
1898
+ */
1645
1899
  pm_location_t operator_loc;
1646
1900
  } pm_capture_pattern_node_t;
1647
1901
 
@@ -1656,19 +1910,29 @@ typedef struct pm_case_match_node {
1656
1910
  /** The embedded base node. */
1657
1911
  pm_node_t base;
1658
1912
 
1659
- /** CaseMatchNode#predicate */
1913
+ /**
1914
+ * CaseMatchNode#predicate
1915
+ */
1660
1916
  struct pm_node *predicate;
1661
1917
 
1662
- /** CaseMatchNode#conditions */
1918
+ /**
1919
+ * CaseMatchNode#conditions
1920
+ */
1663
1921
  struct pm_node_list conditions;
1664
1922
 
1665
- /** CaseMatchNode#consequent */
1923
+ /**
1924
+ * CaseMatchNode#consequent
1925
+ */
1666
1926
  struct pm_else_node *consequent;
1667
1927
 
1668
- /** CaseMatchNode#case_keyword_loc */
1928
+ /**
1929
+ * CaseMatchNode#case_keyword_loc
1930
+ */
1669
1931
  pm_location_t case_keyword_loc;
1670
1932
 
1671
- /** CaseMatchNode#end_keyword_loc */
1933
+ /**
1934
+ * CaseMatchNode#end_keyword_loc
1935
+ */
1672
1936
  pm_location_t end_keyword_loc;
1673
1937
  } pm_case_match_node_t;
1674
1938
 
@@ -1683,19 +1947,29 @@ typedef struct pm_case_node {
1683
1947
  /** The embedded base node. */
1684
1948
  pm_node_t base;
1685
1949
 
1686
- /** CaseNode#predicate */
1950
+ /**
1951
+ * CaseNode#predicate
1952
+ */
1687
1953
  struct pm_node *predicate;
1688
1954
 
1689
- /** CaseNode#conditions */
1955
+ /**
1956
+ * CaseNode#conditions
1957
+ */
1690
1958
  struct pm_node_list conditions;
1691
1959
 
1692
- /** CaseNode#consequent */
1960
+ /**
1961
+ * CaseNode#consequent
1962
+ */
1693
1963
  struct pm_else_node *consequent;
1694
1964
 
1695
- /** CaseNode#case_keyword_loc */
1965
+ /**
1966
+ * CaseNode#case_keyword_loc
1967
+ */
1696
1968
  pm_location_t case_keyword_loc;
1697
1969
 
1698
- /** CaseNode#end_keyword_loc */
1970
+ /**
1971
+ * CaseNode#end_keyword_loc
1972
+ */
1699
1973
  pm_location_t end_keyword_loc;
1700
1974
  } pm_case_node_t;
1701
1975
 
@@ -1710,28 +1984,44 @@ typedef struct pm_class_node {
1710
1984
  /** The embedded base node. */
1711
1985
  pm_node_t base;
1712
1986
 
1713
- /** ClassNode#locals */
1987
+ /**
1988
+ * ClassNode#locals
1989
+ */
1714
1990
  pm_constant_id_list_t locals;
1715
1991
 
1716
- /** ClassNode#class_keyword_loc */
1992
+ /**
1993
+ * ClassNode#class_keyword_loc
1994
+ */
1717
1995
  pm_location_t class_keyword_loc;
1718
1996
 
1719
- /** ClassNode#constant_path */
1997
+ /**
1998
+ * ClassNode#constant_path
1999
+ */
1720
2000
  struct pm_node *constant_path;
1721
2001
 
1722
- /** ClassNode#inheritance_operator_loc */
2002
+ /**
2003
+ * ClassNode#inheritance_operator_loc
2004
+ */
1723
2005
  pm_location_t inheritance_operator_loc;
1724
2006
 
1725
- /** ClassNode#superclass */
2007
+ /**
2008
+ * ClassNode#superclass
2009
+ */
1726
2010
  struct pm_node *superclass;
1727
2011
 
1728
- /** ClassNode#body */
2012
+ /**
2013
+ * ClassNode#body
2014
+ */
1729
2015
  struct pm_node *body;
1730
2016
 
1731
- /** ClassNode#end_keyword_loc */
2017
+ /**
2018
+ * ClassNode#end_keyword_loc
2019
+ */
1732
2020
  pm_location_t end_keyword_loc;
1733
2021
 
1734
- /** ClassNode#name */
2022
+ /**
2023
+ * ClassNode#name
2024
+ */
1735
2025
  pm_constant_id_t name;
1736
2026
  } pm_class_node_t;
1737
2027
 
@@ -1746,16 +2036,24 @@ typedef struct pm_class_variable_and_write_node {
1746
2036
  /** The embedded base node. */
1747
2037
  pm_node_t base;
1748
2038
 
1749
- /** ClassVariableAndWriteNode#name */
2039
+ /**
2040
+ * ClassVariableAndWriteNode#name
2041
+ */
1750
2042
  pm_constant_id_t name;
1751
2043
 
1752
- /** ClassVariableAndWriteNode#name_loc */
2044
+ /**
2045
+ * ClassVariableAndWriteNode#name_loc
2046
+ */
1753
2047
  pm_location_t name_loc;
1754
2048
 
1755
- /** ClassVariableAndWriteNode#operator_loc */
2049
+ /**
2050
+ * ClassVariableAndWriteNode#operator_loc
2051
+ */
1756
2052
  pm_location_t operator_loc;
1757
2053
 
1758
- /** ClassVariableAndWriteNode#value */
2054
+ /**
2055
+ * ClassVariableAndWriteNode#value
2056
+ */
1759
2057
  struct pm_node *value;
1760
2058
  } pm_class_variable_and_write_node_t;
1761
2059
 
@@ -1770,19 +2068,29 @@ typedef struct pm_class_variable_operator_write_node {
1770
2068
  /** The embedded base node. */
1771
2069
  pm_node_t base;
1772
2070
 
1773
- /** ClassVariableOperatorWriteNode#name */
2071
+ /**
2072
+ * ClassVariableOperatorWriteNode#name
2073
+ */
1774
2074
  pm_constant_id_t name;
1775
2075
 
1776
- /** ClassVariableOperatorWriteNode#name_loc */
2076
+ /**
2077
+ * ClassVariableOperatorWriteNode#name_loc
2078
+ */
1777
2079
  pm_location_t name_loc;
1778
2080
 
1779
- /** ClassVariableOperatorWriteNode#operator_loc */
2081
+ /**
2082
+ * ClassVariableOperatorWriteNode#operator_loc
2083
+ */
1780
2084
  pm_location_t operator_loc;
1781
2085
 
1782
- /** ClassVariableOperatorWriteNode#value */
2086
+ /**
2087
+ * ClassVariableOperatorWriteNode#value
2088
+ */
1783
2089
  struct pm_node *value;
1784
2090
 
1785
- /** ClassVariableOperatorWriteNode#operator */
2091
+ /**
2092
+ * ClassVariableOperatorWriteNode#operator
2093
+ */
1786
2094
  pm_constant_id_t operator;
1787
2095
  } pm_class_variable_operator_write_node_t;
1788
2096
 
@@ -1797,16 +2105,24 @@ typedef struct pm_class_variable_or_write_node {
1797
2105
  /** The embedded base node. */
1798
2106
  pm_node_t base;
1799
2107
 
1800
- /** ClassVariableOrWriteNode#name */
2108
+ /**
2109
+ * ClassVariableOrWriteNode#name
2110
+ */
1801
2111
  pm_constant_id_t name;
1802
2112
 
1803
- /** ClassVariableOrWriteNode#name_loc */
2113
+ /**
2114
+ * ClassVariableOrWriteNode#name_loc
2115
+ */
1804
2116
  pm_location_t name_loc;
1805
2117
 
1806
- /** ClassVariableOrWriteNode#operator_loc */
2118
+ /**
2119
+ * ClassVariableOrWriteNode#operator_loc
2120
+ */
1807
2121
  pm_location_t operator_loc;
1808
2122
 
1809
- /** ClassVariableOrWriteNode#value */
2123
+ /**
2124
+ * ClassVariableOrWriteNode#value
2125
+ */
1810
2126
  struct pm_node *value;
1811
2127
  } pm_class_variable_or_write_node_t;
1812
2128
 
@@ -1821,7 +2137,15 @@ typedef struct pm_class_variable_read_node {
1821
2137
  /** The embedded base node. */
1822
2138
  pm_node_t base;
1823
2139
 
1824
- /** ClassVariableReadNode#name */
2140
+ /**
2141
+ * ClassVariableReadNode#name
2142
+ *
2143
+ * The name of the class variable, which is a `@@` followed by an [identifier](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#identifiers).
2144
+ *
2145
+ * @@abc # name `:@@abc`
2146
+ *
2147
+ * @@_test # name `:@@_test`
2148
+ */
1825
2149
  pm_constant_id_t name;
1826
2150
  } pm_class_variable_read_node_t;
1827
2151
 
@@ -1836,7 +2160,9 @@ typedef struct pm_class_variable_target_node {
1836
2160
  /** The embedded base node. */
1837
2161
  pm_node_t base;
1838
2162
 
1839
- /** ClassVariableTargetNode#name */
2163
+ /**
2164
+ * ClassVariableTargetNode#name
2165
+ */
1840
2166
  pm_constant_id_t name;
1841
2167
  } pm_class_variable_target_node_t;
1842
2168
 
@@ -1851,16 +2177,24 @@ typedef struct pm_class_variable_write_node {
1851
2177
  /** The embedded base node. */
1852
2178
  pm_node_t base;
1853
2179
 
1854
- /** ClassVariableWriteNode#name */
2180
+ /**
2181
+ * ClassVariableWriteNode#name
2182
+ */
1855
2183
  pm_constant_id_t name;
1856
2184
 
1857
- /** ClassVariableWriteNode#name_loc */
2185
+ /**
2186
+ * ClassVariableWriteNode#name_loc
2187
+ */
1858
2188
  pm_location_t name_loc;
1859
2189
 
1860
- /** ClassVariableWriteNode#value */
2190
+ /**
2191
+ * ClassVariableWriteNode#value
2192
+ */
1861
2193
  struct pm_node *value;
1862
2194
 
1863
- /** ClassVariableWriteNode#operator_loc */
2195
+ /**
2196
+ * ClassVariableWriteNode#operator_loc
2197
+ */
1864
2198
  pm_location_t operator_loc;
1865
2199
  } pm_class_variable_write_node_t;
1866
2200
 
@@ -1875,16 +2209,24 @@ typedef struct pm_constant_and_write_node {
1875
2209
  /** The embedded base node. */
1876
2210
  pm_node_t base;
1877
2211
 
1878
- /** ConstantAndWriteNode#name */
2212
+ /**
2213
+ * ConstantAndWriteNode#name
2214
+ */
1879
2215
  pm_constant_id_t name;
1880
2216
 
1881
- /** ConstantAndWriteNode#name_loc */
2217
+ /**
2218
+ * ConstantAndWriteNode#name_loc
2219
+ */
1882
2220
  pm_location_t name_loc;
1883
2221
 
1884
- /** ConstantAndWriteNode#operator_loc */
2222
+ /**
2223
+ * ConstantAndWriteNode#operator_loc
2224
+ */
1885
2225
  pm_location_t operator_loc;
1886
2226
 
1887
- /** ConstantAndWriteNode#value */
2227
+ /**
2228
+ * ConstantAndWriteNode#value
2229
+ */
1888
2230
  struct pm_node *value;
1889
2231
  } pm_constant_and_write_node_t;
1890
2232
 
@@ -1899,19 +2241,29 @@ typedef struct pm_constant_operator_write_node {
1899
2241
  /** The embedded base node. */
1900
2242
  pm_node_t base;
1901
2243
 
1902
- /** ConstantOperatorWriteNode#name */
2244
+ /**
2245
+ * ConstantOperatorWriteNode#name
2246
+ */
1903
2247
  pm_constant_id_t name;
1904
2248
 
1905
- /** ConstantOperatorWriteNode#name_loc */
2249
+ /**
2250
+ * ConstantOperatorWriteNode#name_loc
2251
+ */
1906
2252
  pm_location_t name_loc;
1907
2253
 
1908
- /** ConstantOperatorWriteNode#operator_loc */
2254
+ /**
2255
+ * ConstantOperatorWriteNode#operator_loc
2256
+ */
1909
2257
  pm_location_t operator_loc;
1910
2258
 
1911
- /** ConstantOperatorWriteNode#value */
2259
+ /**
2260
+ * ConstantOperatorWriteNode#value
2261
+ */
1912
2262
  struct pm_node *value;
1913
2263
 
1914
- /** ConstantOperatorWriteNode#operator */
2264
+ /**
2265
+ * ConstantOperatorWriteNode#operator
2266
+ */
1915
2267
  pm_constant_id_t operator;
1916
2268
  } pm_constant_operator_write_node_t;
1917
2269
 
@@ -1926,16 +2278,24 @@ typedef struct pm_constant_or_write_node {
1926
2278
  /** The embedded base node. */
1927
2279
  pm_node_t base;
1928
2280
 
1929
- /** ConstantOrWriteNode#name */
2281
+ /**
2282
+ * ConstantOrWriteNode#name
2283
+ */
1930
2284
  pm_constant_id_t name;
1931
2285
 
1932
- /** ConstantOrWriteNode#name_loc */
2286
+ /**
2287
+ * ConstantOrWriteNode#name_loc
2288
+ */
1933
2289
  pm_location_t name_loc;
1934
2290
 
1935
- /** ConstantOrWriteNode#operator_loc */
2291
+ /**
2292
+ * ConstantOrWriteNode#operator_loc
2293
+ */
1936
2294
  pm_location_t operator_loc;
1937
2295
 
1938
- /** ConstantOrWriteNode#value */
2296
+ /**
2297
+ * ConstantOrWriteNode#value
2298
+ */
1939
2299
  struct pm_node *value;
1940
2300
  } pm_constant_or_write_node_t;
1941
2301
 
@@ -1950,13 +2310,19 @@ typedef struct pm_constant_path_and_write_node {
1950
2310
  /** The embedded base node. */
1951
2311
  pm_node_t base;
1952
2312
 
1953
- /** ConstantPathAndWriteNode#target */
2313
+ /**
2314
+ * ConstantPathAndWriteNode#target
2315
+ */
1954
2316
  struct pm_constant_path_node *target;
1955
2317
 
1956
- /** ConstantPathAndWriteNode#operator_loc */
2318
+ /**
2319
+ * ConstantPathAndWriteNode#operator_loc
2320
+ */
1957
2321
  pm_location_t operator_loc;
1958
2322
 
1959
- /** ConstantPathAndWriteNode#value */
2323
+ /**
2324
+ * ConstantPathAndWriteNode#value
2325
+ */
1960
2326
  struct pm_node *value;
1961
2327
  } pm_constant_path_and_write_node_t;
1962
2328
 
@@ -1971,13 +2337,19 @@ typedef struct pm_constant_path_node {
1971
2337
  /** The embedded base node. */
1972
2338
  pm_node_t base;
1973
2339
 
1974
- /** ConstantPathNode#parent */
2340
+ /**
2341
+ * ConstantPathNode#parent
2342
+ */
1975
2343
  struct pm_node *parent;
1976
2344
 
1977
- /** ConstantPathNode#child */
2345
+ /**
2346
+ * ConstantPathNode#child
2347
+ */
1978
2348
  struct pm_node *child;
1979
2349
 
1980
- /** ConstantPathNode#delimiter_loc */
2350
+ /**
2351
+ * ConstantPathNode#delimiter_loc
2352
+ */
1981
2353
  pm_location_t delimiter_loc;
1982
2354
  } pm_constant_path_node_t;
1983
2355
 
@@ -1992,16 +2364,24 @@ typedef struct pm_constant_path_operator_write_node {
1992
2364
  /** The embedded base node. */
1993
2365
  pm_node_t base;
1994
2366
 
1995
- /** ConstantPathOperatorWriteNode#target */
2367
+ /**
2368
+ * ConstantPathOperatorWriteNode#target
2369
+ */
1996
2370
  struct pm_constant_path_node *target;
1997
2371
 
1998
- /** ConstantPathOperatorWriteNode#operator_loc */
2372
+ /**
2373
+ * ConstantPathOperatorWriteNode#operator_loc
2374
+ */
1999
2375
  pm_location_t operator_loc;
2000
2376
 
2001
- /** ConstantPathOperatorWriteNode#value */
2377
+ /**
2378
+ * ConstantPathOperatorWriteNode#value
2379
+ */
2002
2380
  struct pm_node *value;
2003
2381
 
2004
- /** ConstantPathOperatorWriteNode#operator */
2382
+ /**
2383
+ * ConstantPathOperatorWriteNode#operator
2384
+ */
2005
2385
  pm_constant_id_t operator;
2006
2386
  } pm_constant_path_operator_write_node_t;
2007
2387
 
@@ -2016,13 +2396,19 @@ typedef struct pm_constant_path_or_write_node {
2016
2396
  /** The embedded base node. */
2017
2397
  pm_node_t base;
2018
2398
 
2019
- /** ConstantPathOrWriteNode#target */
2399
+ /**
2400
+ * ConstantPathOrWriteNode#target
2401
+ */
2020
2402
  struct pm_constant_path_node *target;
2021
2403
 
2022
- /** ConstantPathOrWriteNode#operator_loc */
2404
+ /**
2405
+ * ConstantPathOrWriteNode#operator_loc
2406
+ */
2023
2407
  pm_location_t operator_loc;
2024
2408
 
2025
- /** ConstantPathOrWriteNode#value */
2409
+ /**
2410
+ * ConstantPathOrWriteNode#value
2411
+ */
2026
2412
  struct pm_node *value;
2027
2413
  } pm_constant_path_or_write_node_t;
2028
2414
 
@@ -2037,13 +2423,19 @@ typedef struct pm_constant_path_target_node {
2037
2423
  /** The embedded base node. */
2038
2424
  pm_node_t base;
2039
2425
 
2040
- /** ConstantPathTargetNode#parent */
2426
+ /**
2427
+ * ConstantPathTargetNode#parent
2428
+ */
2041
2429
  struct pm_node *parent;
2042
2430
 
2043
- /** ConstantPathTargetNode#child */
2431
+ /**
2432
+ * ConstantPathTargetNode#child
2433
+ */
2044
2434
  struct pm_node *child;
2045
2435
 
2046
- /** ConstantPathTargetNode#delimiter_loc */
2436
+ /**
2437
+ * ConstantPathTargetNode#delimiter_loc
2438
+ */
2047
2439
  pm_location_t delimiter_loc;
2048
2440
  } pm_constant_path_target_node_t;
2049
2441
 
@@ -2058,13 +2450,19 @@ typedef struct pm_constant_path_write_node {
2058
2450
  /** The embedded base node. */
2059
2451
  pm_node_t base;
2060
2452
 
2061
- /** ConstantPathWriteNode#target */
2453
+ /**
2454
+ * ConstantPathWriteNode#target
2455
+ */
2062
2456
  struct pm_constant_path_node *target;
2063
2457
 
2064
- /** ConstantPathWriteNode#operator_loc */
2458
+ /**
2459
+ * ConstantPathWriteNode#operator_loc
2460
+ */
2065
2461
  pm_location_t operator_loc;
2066
2462
 
2067
- /** ConstantPathWriteNode#value */
2463
+ /**
2464
+ * ConstantPathWriteNode#value
2465
+ */
2068
2466
  struct pm_node *value;
2069
2467
  } pm_constant_path_write_node_t;
2070
2468
 
@@ -2079,7 +2477,15 @@ typedef struct pm_constant_read_node {
2079
2477
  /** The embedded base node. */
2080
2478
  pm_node_t base;
2081
2479
 
2082
- /** ConstantReadNode#name */
2480
+ /**
2481
+ * ConstantReadNode#name
2482
+ *
2483
+ * The name of the [constant](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#constants).
2484
+ *
2485
+ * X # name `:X`
2486
+ *
2487
+ * SOME_CONSTANT # name `:SOME_CONSTANT`
2488
+ */
2083
2489
  pm_constant_id_t name;
2084
2490
  } pm_constant_read_node_t;
2085
2491
 
@@ -2094,7 +2500,9 @@ typedef struct pm_constant_target_node {
2094
2500
  /** The embedded base node. */
2095
2501
  pm_node_t base;
2096
2502
 
2097
- /** ConstantTargetNode#name */
2503
+ /**
2504
+ * ConstantTargetNode#name
2505
+ */
2098
2506
  pm_constant_id_t name;
2099
2507
  } pm_constant_target_node_t;
2100
2508
 
@@ -2109,16 +2517,24 @@ typedef struct pm_constant_write_node {
2109
2517
  /** The embedded base node. */
2110
2518
  pm_node_t base;
2111
2519
 
2112
- /** ConstantWriteNode#name */
2520
+ /**
2521
+ * ConstantWriteNode#name
2522
+ */
2113
2523
  pm_constant_id_t name;
2114
2524
 
2115
- /** ConstantWriteNode#name_loc */
2525
+ /**
2526
+ * ConstantWriteNode#name_loc
2527
+ */
2116
2528
  pm_location_t name_loc;
2117
2529
 
2118
- /** ConstantWriteNode#value */
2530
+ /**
2531
+ * ConstantWriteNode#value
2532
+ */
2119
2533
  struct pm_node *value;
2120
2534
 
2121
- /** ConstantWriteNode#operator_loc */
2535
+ /**
2536
+ * ConstantWriteNode#operator_loc
2537
+ */
2122
2538
  pm_location_t operator_loc;
2123
2539
  } pm_constant_write_node_t;
2124
2540
 
@@ -2133,43 +2549,64 @@ typedef struct pm_def_node {
2133
2549
  /** The embedded base node. */
2134
2550
  pm_node_t base;
2135
2551
 
2136
- /** DefNode#name */
2552
+ /**
2553
+ * DefNode#name
2554
+ */
2137
2555
  pm_constant_id_t name;
2138
2556
 
2139
- /** DefNode#name_loc */
2557
+ /**
2558
+ * DefNode#name_loc
2559
+ */
2140
2560
  pm_location_t name_loc;
2141
2561
 
2142
- /** DefNode#receiver */
2562
+ /**
2563
+ * DefNode#receiver
2564
+ */
2143
2565
  struct pm_node *receiver;
2144
2566
 
2145
- /** DefNode#parameters */
2567
+ /**
2568
+ * DefNode#parameters
2569
+ */
2146
2570
  struct pm_parameters_node *parameters;
2147
2571
 
2148
- /** DefNode#body */
2572
+ /**
2573
+ * DefNode#body
2574
+ */
2149
2575
  struct pm_node *body;
2150
2576
 
2151
- /** DefNode#locals */
2577
+ /**
2578
+ * DefNode#locals
2579
+ */
2152
2580
  pm_constant_id_list_t locals;
2153
2581
 
2154
- /** DefNode#locals_body_index */
2155
- uint32_t locals_body_index;
2156
-
2157
- /** DefNode#def_keyword_loc */
2582
+ /**
2583
+ * DefNode#def_keyword_loc
2584
+ */
2158
2585
  pm_location_t def_keyword_loc;
2159
2586
 
2160
- /** DefNode#operator_loc */
2587
+ /**
2588
+ * DefNode#operator_loc
2589
+ */
2161
2590
  pm_location_t operator_loc;
2162
2591
 
2163
- /** DefNode#lparen_loc */
2592
+ /**
2593
+ * DefNode#lparen_loc
2594
+ */
2164
2595
  pm_location_t lparen_loc;
2165
2596
 
2166
- /** DefNode#rparen_loc */
2597
+ /**
2598
+ * DefNode#rparen_loc
2599
+ */
2167
2600
  pm_location_t rparen_loc;
2168
2601
 
2169
- /** DefNode#equal_loc */
2602
+ /**
2603
+ * DefNode#equal_loc
2604
+ */
2170
2605
  pm_location_t equal_loc;
2171
2606
 
2172
- /** DefNode#end_keyword_loc */
2607
+ /**
2608
+ * DefNode#end_keyword_loc
2609
+ */
2173
2610
  pm_location_t end_keyword_loc;
2174
2611
  } pm_def_node_t;
2175
2612
 
@@ -2184,16 +2621,24 @@ typedef struct pm_defined_node {
2184
2621
  /** The embedded base node. */
2185
2622
  pm_node_t base;
2186
2623
 
2187
- /** DefinedNode#lparen_loc */
2624
+ /**
2625
+ * DefinedNode#lparen_loc
2626
+ */
2188
2627
  pm_location_t lparen_loc;
2189
2628
 
2190
- /** DefinedNode#value */
2629
+ /**
2630
+ * DefinedNode#value
2631
+ */
2191
2632
  struct pm_node *value;
2192
2633
 
2193
- /** DefinedNode#rparen_loc */
2634
+ /**
2635
+ * DefinedNode#rparen_loc
2636
+ */
2194
2637
  pm_location_t rparen_loc;
2195
2638
 
2196
- /** DefinedNode#keyword_loc */
2639
+ /**
2640
+ * DefinedNode#keyword_loc
2641
+ */
2197
2642
  pm_location_t keyword_loc;
2198
2643
  } pm_defined_node_t;
2199
2644
 
@@ -2208,13 +2653,19 @@ typedef struct pm_else_node {
2208
2653
  /** The embedded base node. */
2209
2654
  pm_node_t base;
2210
2655
 
2211
- /** ElseNode#else_keyword_loc */
2656
+ /**
2657
+ * ElseNode#else_keyword_loc
2658
+ */
2212
2659
  pm_location_t else_keyword_loc;
2213
2660
 
2214
- /** ElseNode#statements */
2661
+ /**
2662
+ * ElseNode#statements
2663
+ */
2215
2664
  struct pm_statements_node *statements;
2216
2665
 
2217
- /** ElseNode#end_keyword_loc */
2666
+ /**
2667
+ * ElseNode#end_keyword_loc
2668
+ */
2218
2669
  pm_location_t end_keyword_loc;
2219
2670
  } pm_else_node_t;
2220
2671
 
@@ -2229,13 +2680,19 @@ typedef struct pm_embedded_statements_node {
2229
2680
  /** The embedded base node. */
2230
2681
  pm_node_t base;
2231
2682
 
2232
- /** EmbeddedStatementsNode#opening_loc */
2683
+ /**
2684
+ * EmbeddedStatementsNode#opening_loc
2685
+ */
2233
2686
  pm_location_t opening_loc;
2234
2687
 
2235
- /** EmbeddedStatementsNode#statements */
2688
+ /**
2689
+ * EmbeddedStatementsNode#statements
2690
+ */
2236
2691
  struct pm_statements_node *statements;
2237
2692
 
2238
- /** EmbeddedStatementsNode#closing_loc */
2693
+ /**
2694
+ * EmbeddedStatementsNode#closing_loc
2695
+ */
2239
2696
  pm_location_t closing_loc;
2240
2697
  } pm_embedded_statements_node_t;
2241
2698
 
@@ -2250,10 +2707,14 @@ typedef struct pm_embedded_variable_node {
2250
2707
  /** The embedded base node. */
2251
2708
  pm_node_t base;
2252
2709
 
2253
- /** EmbeddedVariableNode#operator_loc */
2710
+ /**
2711
+ * EmbeddedVariableNode#operator_loc
2712
+ */
2254
2713
  pm_location_t operator_loc;
2255
2714
 
2256
- /** EmbeddedVariableNode#variable */
2715
+ /**
2716
+ * EmbeddedVariableNode#variable
2717
+ */
2257
2718
  struct pm_node *variable;
2258
2719
  } pm_embedded_variable_node_t;
2259
2720
 
@@ -2268,13 +2729,19 @@ typedef struct pm_ensure_node {
2268
2729
  /** The embedded base node. */
2269
2730
  pm_node_t base;
2270
2731
 
2271
- /** EnsureNode#ensure_keyword_loc */
2732
+ /**
2733
+ * EnsureNode#ensure_keyword_loc
2734
+ */
2272
2735
  pm_location_t ensure_keyword_loc;
2273
2736
 
2274
- /** EnsureNode#statements */
2737
+ /**
2738
+ * EnsureNode#statements
2739
+ */
2275
2740
  struct pm_statements_node *statements;
2276
2741
 
2277
- /** EnsureNode#end_keyword_loc */
2742
+ /**
2743
+ * EnsureNode#end_keyword_loc
2744
+ */
2278
2745
  pm_location_t end_keyword_loc;
2279
2746
  } pm_ensure_node_t;
2280
2747
 
@@ -2301,22 +2768,34 @@ typedef struct pm_find_pattern_node {
2301
2768
  /** The embedded base node. */
2302
2769
  pm_node_t base;
2303
2770
 
2304
- /** FindPatternNode#constant */
2771
+ /**
2772
+ * FindPatternNode#constant
2773
+ */
2305
2774
  struct pm_node *constant;
2306
2775
 
2307
- /** FindPatternNode#left */
2776
+ /**
2777
+ * FindPatternNode#left
2778
+ */
2308
2779
  struct pm_node *left;
2309
2780
 
2310
- /** FindPatternNode#requireds */
2781
+ /**
2782
+ * FindPatternNode#requireds
2783
+ */
2311
2784
  struct pm_node_list requireds;
2312
2785
 
2313
- /** FindPatternNode#right */
2786
+ /**
2787
+ * FindPatternNode#right
2788
+ */
2314
2789
  struct pm_node *right;
2315
2790
 
2316
- /** FindPatternNode#opening_loc */
2791
+ /**
2792
+ * FindPatternNode#opening_loc
2793
+ */
2317
2794
  pm_location_t opening_loc;
2318
2795
 
2319
- /** FindPatternNode#closing_loc */
2796
+ /**
2797
+ * FindPatternNode#closing_loc
2798
+ */
2320
2799
  pm_location_t closing_loc;
2321
2800
  } pm_find_pattern_node_t;
2322
2801
 
@@ -2333,13 +2812,19 @@ typedef struct pm_flip_flop_node {
2333
2812
  /** The embedded base node. */
2334
2813
  pm_node_t base;
2335
2814
 
2336
- /** FlipFlopNode#left */
2815
+ /**
2816
+ * FlipFlopNode#left
2817
+ */
2337
2818
  struct pm_node *left;
2338
2819
 
2339
- /** FlipFlopNode#right */
2820
+ /**
2821
+ * FlipFlopNode#right
2822
+ */
2340
2823
  struct pm_node *right;
2341
2824
 
2342
- /** FlipFlopNode#operator_loc */
2825
+ /**
2826
+ * FlipFlopNode#operator_loc
2827
+ */
2343
2828
  pm_location_t operator_loc;
2344
2829
  } pm_flip_flop_node_t;
2345
2830
 
@@ -2366,25 +2851,39 @@ typedef struct pm_for_node {
2366
2851
  /** The embedded base node. */
2367
2852
  pm_node_t base;
2368
2853
 
2369
- /** ForNode#index */
2854
+ /**
2855
+ * ForNode#index
2856
+ */
2370
2857
  struct pm_node *index;
2371
2858
 
2372
- /** ForNode#collection */
2859
+ /**
2860
+ * ForNode#collection
2861
+ */
2373
2862
  struct pm_node *collection;
2374
2863
 
2375
- /** ForNode#statements */
2864
+ /**
2865
+ * ForNode#statements
2866
+ */
2376
2867
  struct pm_statements_node *statements;
2377
2868
 
2378
- /** ForNode#for_keyword_loc */
2869
+ /**
2870
+ * ForNode#for_keyword_loc
2871
+ */
2379
2872
  pm_location_t for_keyword_loc;
2380
2873
 
2381
- /** ForNode#in_keyword_loc */
2874
+ /**
2875
+ * ForNode#in_keyword_loc
2876
+ */
2382
2877
  pm_location_t in_keyword_loc;
2383
2878
 
2384
- /** ForNode#do_keyword_loc */
2879
+ /**
2880
+ * ForNode#do_keyword_loc
2881
+ */
2385
2882
  pm_location_t do_keyword_loc;
2386
2883
 
2387
- /** ForNode#end_keyword_loc */
2884
+ /**
2885
+ * ForNode#end_keyword_loc
2886
+ */
2388
2887
  pm_location_t end_keyword_loc;
2389
2888
  } pm_for_node_t;
2390
2889
 
@@ -2423,7 +2922,9 @@ typedef struct pm_forwarding_super_node {
2423
2922
  /** The embedded base node. */
2424
2923
  pm_node_t base;
2425
2924
 
2426
- /** ForwardingSuperNode#block */
2925
+ /**
2926
+ * ForwardingSuperNode#block
2927
+ */
2427
2928
  struct pm_block_node *block;
2428
2929
  } pm_forwarding_super_node_t;
2429
2930
 
@@ -2438,16 +2939,24 @@ typedef struct pm_global_variable_and_write_node {
2438
2939
  /** The embedded base node. */
2439
2940
  pm_node_t base;
2440
2941
 
2441
- /** GlobalVariableAndWriteNode#name */
2942
+ /**
2943
+ * GlobalVariableAndWriteNode#name
2944
+ */
2442
2945
  pm_constant_id_t name;
2443
2946
 
2444
- /** GlobalVariableAndWriteNode#name_loc */
2947
+ /**
2948
+ * GlobalVariableAndWriteNode#name_loc
2949
+ */
2445
2950
  pm_location_t name_loc;
2446
2951
 
2447
- /** GlobalVariableAndWriteNode#operator_loc */
2952
+ /**
2953
+ * GlobalVariableAndWriteNode#operator_loc
2954
+ */
2448
2955
  pm_location_t operator_loc;
2449
2956
 
2450
- /** GlobalVariableAndWriteNode#value */
2957
+ /**
2958
+ * GlobalVariableAndWriteNode#value
2959
+ */
2451
2960
  struct pm_node *value;
2452
2961
  } pm_global_variable_and_write_node_t;
2453
2962
 
@@ -2462,19 +2971,29 @@ typedef struct pm_global_variable_operator_write_node {
2462
2971
  /** The embedded base node. */
2463
2972
  pm_node_t base;
2464
2973
 
2465
- /** GlobalVariableOperatorWriteNode#name */
2974
+ /**
2975
+ * GlobalVariableOperatorWriteNode#name
2976
+ */
2466
2977
  pm_constant_id_t name;
2467
2978
 
2468
- /** GlobalVariableOperatorWriteNode#name_loc */
2979
+ /**
2980
+ * GlobalVariableOperatorWriteNode#name_loc
2981
+ */
2469
2982
  pm_location_t name_loc;
2470
2983
 
2471
- /** GlobalVariableOperatorWriteNode#operator_loc */
2984
+ /**
2985
+ * GlobalVariableOperatorWriteNode#operator_loc
2986
+ */
2472
2987
  pm_location_t operator_loc;
2473
2988
 
2474
- /** GlobalVariableOperatorWriteNode#value */
2989
+ /**
2990
+ * GlobalVariableOperatorWriteNode#value
2991
+ */
2475
2992
  struct pm_node *value;
2476
2993
 
2477
- /** GlobalVariableOperatorWriteNode#operator */
2994
+ /**
2995
+ * GlobalVariableOperatorWriteNode#operator
2996
+ */
2478
2997
  pm_constant_id_t operator;
2479
2998
  } pm_global_variable_operator_write_node_t;
2480
2999
 
@@ -2489,16 +3008,24 @@ typedef struct pm_global_variable_or_write_node {
2489
3008
  /** The embedded base node. */
2490
3009
  pm_node_t base;
2491
3010
 
2492
- /** GlobalVariableOrWriteNode#name */
3011
+ /**
3012
+ * GlobalVariableOrWriteNode#name
3013
+ */
2493
3014
  pm_constant_id_t name;
2494
3015
 
2495
- /** GlobalVariableOrWriteNode#name_loc */
3016
+ /**
3017
+ * GlobalVariableOrWriteNode#name_loc
3018
+ */
2496
3019
  pm_location_t name_loc;
2497
3020
 
2498
- /** GlobalVariableOrWriteNode#operator_loc */
3021
+ /**
3022
+ * GlobalVariableOrWriteNode#operator_loc
3023
+ */
2499
3024
  pm_location_t operator_loc;
2500
3025
 
2501
- /** GlobalVariableOrWriteNode#value */
3026
+ /**
3027
+ * GlobalVariableOrWriteNode#value
3028
+ */
2502
3029
  struct pm_node *value;
2503
3030
  } pm_global_variable_or_write_node_t;
2504
3031
 
@@ -2513,7 +3040,15 @@ typedef struct pm_global_variable_read_node {
2513
3040
  /** The embedded base node. */
2514
3041
  pm_node_t base;
2515
3042
 
2516
- /** GlobalVariableReadNode#name */
3043
+ /**
3044
+ * GlobalVariableReadNode#name
3045
+ *
3046
+ * The name of the global variable, which is a `$` followed by an [identifier](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#identifier). Alternatively, it can be one of the special global variables designated by a symbol.
3047
+ *
3048
+ * $foo # name `:$foo`
3049
+ *
3050
+ * $_Test # name `:$_Test`
3051
+ */
2517
3052
  pm_constant_id_t name;
2518
3053
  } pm_global_variable_read_node_t;
2519
3054
 
@@ -2528,7 +3063,9 @@ typedef struct pm_global_variable_target_node {
2528
3063
  /** The embedded base node. */
2529
3064
  pm_node_t base;
2530
3065
 
2531
- /** GlobalVariableTargetNode#name */
3066
+ /**
3067
+ * GlobalVariableTargetNode#name
3068
+ */
2532
3069
  pm_constant_id_t name;
2533
3070
  } pm_global_variable_target_node_t;
2534
3071
 
@@ -2543,16 +3080,24 @@ typedef struct pm_global_variable_write_node {
2543
3080
  /** The embedded base node. */
2544
3081
  pm_node_t base;
2545
3082
 
2546
- /** GlobalVariableWriteNode#name */
3083
+ /**
3084
+ * GlobalVariableWriteNode#name
3085
+ */
2547
3086
  pm_constant_id_t name;
2548
3087
 
2549
- /** GlobalVariableWriteNode#name_loc */
3088
+ /**
3089
+ * GlobalVariableWriteNode#name_loc
3090
+ */
2550
3091
  pm_location_t name_loc;
2551
3092
 
2552
- /** GlobalVariableWriteNode#value */
3093
+ /**
3094
+ * GlobalVariableWriteNode#value
3095
+ */
2553
3096
  struct pm_node *value;
2554
3097
 
2555
- /** GlobalVariableWriteNode#operator_loc */
3098
+ /**
3099
+ * GlobalVariableWriteNode#operator_loc
3100
+ */
2556
3101
  pm_location_t operator_loc;
2557
3102
  } pm_global_variable_write_node_t;
2558
3103
 
@@ -2567,13 +3112,37 @@ typedef struct pm_hash_node {
2567
3112
  /** The embedded base node. */
2568
3113
  pm_node_t base;
2569
3114
 
2570
- /** HashNode#opening_loc */
3115
+ /**
3116
+ * HashNode#opening_loc
3117
+ *
3118
+ * The location of the opening brace.
3119
+ *
3120
+ * { a => b }
3121
+ * ^
3122
+ */
2571
3123
  pm_location_t opening_loc;
2572
3124
 
2573
- /** HashNode#elements */
3125
+ /**
3126
+ * HashNode#elements
3127
+ *
3128
+ * The elements of the hash. These can be either `AssocNode`s or `AssocSplatNode`s.
3129
+ *
3130
+ * { a: b }
3131
+ * ^^^^
3132
+ *
3133
+ * { **foo }
3134
+ * ^^^^^
3135
+ */
2574
3136
  struct pm_node_list elements;
2575
3137
 
2576
- /** HashNode#closing_loc */
3138
+ /**
3139
+ * HashNode#closing_loc
3140
+ *
3141
+ * The location of the closing brace.
3142
+ *
3143
+ * { a => b }
3144
+ * ^
3145
+ */
2577
3146
  pm_location_t closing_loc;
2578
3147
  } pm_hash_node_t;
2579
3148
 
@@ -2588,19 +3157,29 @@ typedef struct pm_hash_pattern_node {
2588
3157
  /** The embedded base node. */
2589
3158
  pm_node_t base;
2590
3159
 
2591
- /** HashPatternNode#constant */
3160
+ /**
3161
+ * HashPatternNode#constant
3162
+ */
2592
3163
  struct pm_node *constant;
2593
3164
 
2594
- /** HashPatternNode#elements */
3165
+ /**
3166
+ * HashPatternNode#elements
3167
+ */
2595
3168
  struct pm_node_list elements;
2596
3169
 
2597
- /** HashPatternNode#rest */
3170
+ /**
3171
+ * HashPatternNode#rest
3172
+ */
2598
3173
  struct pm_node *rest;
2599
3174
 
2600
- /** HashPatternNode#opening_loc */
3175
+ /**
3176
+ * HashPatternNode#opening_loc
3177
+ */
2601
3178
  pm_location_t opening_loc;
2602
3179
 
2603
- /** HashPatternNode#closing_loc */
3180
+ /**
3181
+ * HashPatternNode#closing_loc
3182
+ */
2604
3183
  pm_location_t closing_loc;
2605
3184
  } pm_hash_pattern_node_t;
2606
3185
 
@@ -2615,22 +3194,34 @@ typedef struct pm_if_node {
2615
3194
  /** The embedded base node. */
2616
3195
  pm_node_t base;
2617
3196
 
2618
- /** IfNode#if_keyword_loc */
3197
+ /**
3198
+ * IfNode#if_keyword_loc
3199
+ */
2619
3200
  pm_location_t if_keyword_loc;
2620
3201
 
2621
- /** IfNode#predicate */
3202
+ /**
3203
+ * IfNode#predicate
3204
+ */
2622
3205
  struct pm_node *predicate;
2623
3206
 
2624
- /** IfNode#then_keyword_loc */
3207
+ /**
3208
+ * IfNode#then_keyword_loc
3209
+ */
2625
3210
  pm_location_t then_keyword_loc;
2626
3211
 
2627
- /** IfNode#statements */
3212
+ /**
3213
+ * IfNode#statements
3214
+ */
2628
3215
  struct pm_statements_node *statements;
2629
3216
 
2630
- /** IfNode#consequent */
3217
+ /**
3218
+ * IfNode#consequent
3219
+ */
2631
3220
  struct pm_node *consequent;
2632
3221
 
2633
- /** IfNode#end_keyword_loc */
3222
+ /**
3223
+ * IfNode#end_keyword_loc
3224
+ */
2634
3225
  pm_location_t end_keyword_loc;
2635
3226
  } pm_if_node_t;
2636
3227
 
@@ -2645,7 +3236,9 @@ typedef struct pm_imaginary_node {
2645
3236
  /** The embedded base node. */
2646
3237
  pm_node_t base;
2647
3238
 
2648
- /** ImaginaryNode#numeric */
3239
+ /**
3240
+ * ImaginaryNode#numeric
3241
+ */
2649
3242
  struct pm_node *numeric;
2650
3243
  } pm_imaginary_node_t;
2651
3244
 
@@ -2660,7 +3253,9 @@ typedef struct pm_implicit_node {
2660
3253
  /** The embedded base node. */
2661
3254
  pm_node_t base;
2662
3255
 
2663
- /** ImplicitNode#value */
3256
+ /**
3257
+ * ImplicitNode#value
3258
+ */
2664
3259
  struct pm_node *value;
2665
3260
  } pm_implicit_node_t;
2666
3261
 
@@ -2687,16 +3282,24 @@ typedef struct pm_in_node {
2687
3282
  /** The embedded base node. */
2688
3283
  pm_node_t base;
2689
3284
 
2690
- /** InNode#pattern */
3285
+ /**
3286
+ * InNode#pattern
3287
+ */
2691
3288
  struct pm_node *pattern;
2692
3289
 
2693
- /** InNode#statements */
3290
+ /**
3291
+ * InNode#statements
3292
+ */
2694
3293
  struct pm_statements_node *statements;
2695
3294
 
2696
- /** InNode#in_loc */
3295
+ /**
3296
+ * InNode#in_loc
3297
+ */
2697
3298
  pm_location_t in_loc;
2698
3299
 
2699
- /** InNode#then_loc */
3300
+ /**
3301
+ * InNode#then_loc
3302
+ */
2700
3303
  pm_location_t then_loc;
2701
3304
  } pm_in_node_t;
2702
3305
 
@@ -2708,6 +3311,7 @@ typedef struct pm_in_node {
2708
3311
  * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
2709
3312
  * PM_CALL_NODE_FLAGS_VARIABLE_CALL
2710
3313
  * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
3314
+ * PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY
2711
3315
  *
2712
3316
  * @extends pm_node_t
2713
3317
  */
@@ -2715,28 +3319,44 @@ typedef struct pm_index_and_write_node {
2715
3319
  /** The embedded base node. */
2716
3320
  pm_node_t base;
2717
3321
 
2718
- /** IndexAndWriteNode#receiver */
3322
+ /**
3323
+ * IndexAndWriteNode#receiver
3324
+ */
2719
3325
  struct pm_node *receiver;
2720
3326
 
2721
- /** IndexAndWriteNode#call_operator_loc */
3327
+ /**
3328
+ * IndexAndWriteNode#call_operator_loc
3329
+ */
2722
3330
  pm_location_t call_operator_loc;
2723
3331
 
2724
- /** IndexAndWriteNode#opening_loc */
3332
+ /**
3333
+ * IndexAndWriteNode#opening_loc
3334
+ */
2725
3335
  pm_location_t opening_loc;
2726
3336
 
2727
- /** IndexAndWriteNode#arguments */
3337
+ /**
3338
+ * IndexAndWriteNode#arguments
3339
+ */
2728
3340
  struct pm_arguments_node *arguments;
2729
3341
 
2730
- /** IndexAndWriteNode#closing_loc */
3342
+ /**
3343
+ * IndexAndWriteNode#closing_loc
3344
+ */
2731
3345
  pm_location_t closing_loc;
2732
3346
 
2733
- /** IndexAndWriteNode#block */
3347
+ /**
3348
+ * IndexAndWriteNode#block
3349
+ */
2734
3350
  struct pm_node *block;
2735
3351
 
2736
- /** IndexAndWriteNode#operator_loc */
3352
+ /**
3353
+ * IndexAndWriteNode#operator_loc
3354
+ */
2737
3355
  pm_location_t operator_loc;
2738
3356
 
2739
- /** IndexAndWriteNode#value */
3357
+ /**
3358
+ * IndexAndWriteNode#value
3359
+ */
2740
3360
  struct pm_node *value;
2741
3361
  } pm_index_and_write_node_t;
2742
3362
 
@@ -2748,6 +3368,7 @@ typedef struct pm_index_and_write_node {
2748
3368
  * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
2749
3369
  * PM_CALL_NODE_FLAGS_VARIABLE_CALL
2750
3370
  * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
3371
+ * PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY
2751
3372
  *
2752
3373
  * @extends pm_node_t
2753
3374
  */
@@ -2755,31 +3376,49 @@ typedef struct pm_index_operator_write_node {
2755
3376
  /** The embedded base node. */
2756
3377
  pm_node_t base;
2757
3378
 
2758
- /** IndexOperatorWriteNode#receiver */
3379
+ /**
3380
+ * IndexOperatorWriteNode#receiver
3381
+ */
2759
3382
  struct pm_node *receiver;
2760
3383
 
2761
- /** IndexOperatorWriteNode#call_operator_loc */
3384
+ /**
3385
+ * IndexOperatorWriteNode#call_operator_loc
3386
+ */
2762
3387
  pm_location_t call_operator_loc;
2763
3388
 
2764
- /** IndexOperatorWriteNode#opening_loc */
3389
+ /**
3390
+ * IndexOperatorWriteNode#opening_loc
3391
+ */
2765
3392
  pm_location_t opening_loc;
2766
3393
 
2767
- /** IndexOperatorWriteNode#arguments */
3394
+ /**
3395
+ * IndexOperatorWriteNode#arguments
3396
+ */
2768
3397
  struct pm_arguments_node *arguments;
2769
3398
 
2770
- /** IndexOperatorWriteNode#closing_loc */
3399
+ /**
3400
+ * IndexOperatorWriteNode#closing_loc
3401
+ */
2771
3402
  pm_location_t closing_loc;
2772
3403
 
2773
- /** IndexOperatorWriteNode#block */
3404
+ /**
3405
+ * IndexOperatorWriteNode#block
3406
+ */
2774
3407
  struct pm_node *block;
2775
3408
 
2776
- /** IndexOperatorWriteNode#operator */
3409
+ /**
3410
+ * IndexOperatorWriteNode#operator
3411
+ */
2777
3412
  pm_constant_id_t operator;
2778
3413
 
2779
- /** IndexOperatorWriteNode#operator_loc */
3414
+ /**
3415
+ * IndexOperatorWriteNode#operator_loc
3416
+ */
2780
3417
  pm_location_t operator_loc;
2781
3418
 
2782
- /** IndexOperatorWriteNode#value */
3419
+ /**
3420
+ * IndexOperatorWriteNode#value
3421
+ */
2783
3422
  struct pm_node *value;
2784
3423
  } pm_index_operator_write_node_t;
2785
3424
 
@@ -2791,6 +3430,7 @@ typedef struct pm_index_operator_write_node {
2791
3430
  * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
2792
3431
  * PM_CALL_NODE_FLAGS_VARIABLE_CALL
2793
3432
  * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
3433
+ * PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY
2794
3434
  *
2795
3435
  * @extends pm_node_t
2796
3436
  */
@@ -2798,28 +3438,44 @@ typedef struct pm_index_or_write_node {
2798
3438
  /** The embedded base node. */
2799
3439
  pm_node_t base;
2800
3440
 
2801
- /** IndexOrWriteNode#receiver */
3441
+ /**
3442
+ * IndexOrWriteNode#receiver
3443
+ */
2802
3444
  struct pm_node *receiver;
2803
3445
 
2804
- /** IndexOrWriteNode#call_operator_loc */
3446
+ /**
3447
+ * IndexOrWriteNode#call_operator_loc
3448
+ */
2805
3449
  pm_location_t call_operator_loc;
2806
3450
 
2807
- /** IndexOrWriteNode#opening_loc */
3451
+ /**
3452
+ * IndexOrWriteNode#opening_loc
3453
+ */
2808
3454
  pm_location_t opening_loc;
2809
3455
 
2810
- /** IndexOrWriteNode#arguments */
3456
+ /**
3457
+ * IndexOrWriteNode#arguments
3458
+ */
2811
3459
  struct pm_arguments_node *arguments;
2812
3460
 
2813
- /** IndexOrWriteNode#closing_loc */
3461
+ /**
3462
+ * IndexOrWriteNode#closing_loc
3463
+ */
2814
3464
  pm_location_t closing_loc;
2815
3465
 
2816
- /** IndexOrWriteNode#block */
3466
+ /**
3467
+ * IndexOrWriteNode#block
3468
+ */
2817
3469
  struct pm_node *block;
2818
3470
 
2819
- /** IndexOrWriteNode#operator_loc */
3471
+ /**
3472
+ * IndexOrWriteNode#operator_loc
3473
+ */
2820
3474
  pm_location_t operator_loc;
2821
3475
 
2822
- /** IndexOrWriteNode#value */
3476
+ /**
3477
+ * IndexOrWriteNode#value
3478
+ */
2823
3479
  struct pm_node *value;
2824
3480
  } pm_index_or_write_node_t;
2825
3481
 
@@ -2831,6 +3487,7 @@ typedef struct pm_index_or_write_node {
2831
3487
  * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
2832
3488
  * PM_CALL_NODE_FLAGS_VARIABLE_CALL
2833
3489
  * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
3490
+ * PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY
2834
3491
  *
2835
3492
  * @extends pm_node_t
2836
3493
  */
@@ -2838,19 +3495,29 @@ typedef struct pm_index_target_node {
2838
3495
  /** The embedded base node. */
2839
3496
  pm_node_t base;
2840
3497
 
2841
- /** IndexTargetNode#receiver */
3498
+ /**
3499
+ * IndexTargetNode#receiver
3500
+ */
2842
3501
  struct pm_node *receiver;
2843
3502
 
2844
- /** IndexTargetNode#opening_loc */
3503
+ /**
3504
+ * IndexTargetNode#opening_loc
3505
+ */
2845
3506
  pm_location_t opening_loc;
2846
3507
 
2847
- /** IndexTargetNode#arguments */
3508
+ /**
3509
+ * IndexTargetNode#arguments
3510
+ */
2848
3511
  struct pm_arguments_node *arguments;
2849
3512
 
2850
- /** IndexTargetNode#closing_loc */
3513
+ /**
3514
+ * IndexTargetNode#closing_loc
3515
+ */
2851
3516
  pm_location_t closing_loc;
2852
3517
 
2853
- /** IndexTargetNode#block */
3518
+ /**
3519
+ * IndexTargetNode#block
3520
+ */
2854
3521
  struct pm_node *block;
2855
3522
  } pm_index_target_node_t;
2856
3523
 
@@ -2865,16 +3532,24 @@ typedef struct pm_instance_variable_and_write_node {
2865
3532
  /** The embedded base node. */
2866
3533
  pm_node_t base;
2867
3534
 
2868
- /** InstanceVariableAndWriteNode#name */
3535
+ /**
3536
+ * InstanceVariableAndWriteNode#name
3537
+ */
2869
3538
  pm_constant_id_t name;
2870
3539
 
2871
- /** InstanceVariableAndWriteNode#name_loc */
3540
+ /**
3541
+ * InstanceVariableAndWriteNode#name_loc
3542
+ */
2872
3543
  pm_location_t name_loc;
2873
3544
 
2874
- /** InstanceVariableAndWriteNode#operator_loc */
3545
+ /**
3546
+ * InstanceVariableAndWriteNode#operator_loc
3547
+ */
2875
3548
  pm_location_t operator_loc;
2876
3549
 
2877
- /** InstanceVariableAndWriteNode#value */
3550
+ /**
3551
+ * InstanceVariableAndWriteNode#value
3552
+ */
2878
3553
  struct pm_node *value;
2879
3554
  } pm_instance_variable_and_write_node_t;
2880
3555
 
@@ -2889,19 +3564,29 @@ typedef struct pm_instance_variable_operator_write_node {
2889
3564
  /** The embedded base node. */
2890
3565
  pm_node_t base;
2891
3566
 
2892
- /** InstanceVariableOperatorWriteNode#name */
3567
+ /**
3568
+ * InstanceVariableOperatorWriteNode#name
3569
+ */
2893
3570
  pm_constant_id_t name;
2894
3571
 
2895
- /** InstanceVariableOperatorWriteNode#name_loc */
3572
+ /**
3573
+ * InstanceVariableOperatorWriteNode#name_loc
3574
+ */
2896
3575
  pm_location_t name_loc;
2897
3576
 
2898
- /** InstanceVariableOperatorWriteNode#operator_loc */
3577
+ /**
3578
+ * InstanceVariableOperatorWriteNode#operator_loc
3579
+ */
2899
3580
  pm_location_t operator_loc;
2900
3581
 
2901
- /** InstanceVariableOperatorWriteNode#value */
3582
+ /**
3583
+ * InstanceVariableOperatorWriteNode#value
3584
+ */
2902
3585
  struct pm_node *value;
2903
3586
 
2904
- /** InstanceVariableOperatorWriteNode#operator */
3587
+ /**
3588
+ * InstanceVariableOperatorWriteNode#operator
3589
+ */
2905
3590
  pm_constant_id_t operator;
2906
3591
  } pm_instance_variable_operator_write_node_t;
2907
3592
 
@@ -2916,16 +3601,24 @@ typedef struct pm_instance_variable_or_write_node {
2916
3601
  /** The embedded base node. */
2917
3602
  pm_node_t base;
2918
3603
 
2919
- /** InstanceVariableOrWriteNode#name */
3604
+ /**
3605
+ * InstanceVariableOrWriteNode#name
3606
+ */
2920
3607
  pm_constant_id_t name;
2921
3608
 
2922
- /** InstanceVariableOrWriteNode#name_loc */
3609
+ /**
3610
+ * InstanceVariableOrWriteNode#name_loc
3611
+ */
2923
3612
  pm_location_t name_loc;
2924
3613
 
2925
- /** InstanceVariableOrWriteNode#operator_loc */
3614
+ /**
3615
+ * InstanceVariableOrWriteNode#operator_loc
3616
+ */
2926
3617
  pm_location_t operator_loc;
2927
3618
 
2928
- /** InstanceVariableOrWriteNode#value */
3619
+ /**
3620
+ * InstanceVariableOrWriteNode#value
3621
+ */
2929
3622
  struct pm_node *value;
2930
3623
  } pm_instance_variable_or_write_node_t;
2931
3624
 
@@ -2940,7 +3633,15 @@ typedef struct pm_instance_variable_read_node {
2940
3633
  /** The embedded base node. */
2941
3634
  pm_node_t base;
2942
3635
 
2943
- /** InstanceVariableReadNode#name */
3636
+ /**
3637
+ * InstanceVariableReadNode#name
3638
+ *
3639
+ * The name of the instance variable, which is a `@` followed by an [identifier](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#identifiers).
3640
+ *
3641
+ * @x # name `:@x`
3642
+ *
3643
+ * @_test # name `:@_test`
3644
+ */
2944
3645
  pm_constant_id_t name;
2945
3646
  } pm_instance_variable_read_node_t;
2946
3647
 
@@ -2955,7 +3656,9 @@ typedef struct pm_instance_variable_target_node {
2955
3656
  /** The embedded base node. */
2956
3657
  pm_node_t base;
2957
3658
 
2958
- /** InstanceVariableTargetNode#name */
3659
+ /**
3660
+ * InstanceVariableTargetNode#name
3661
+ */
2959
3662
  pm_constant_id_t name;
2960
3663
  } pm_instance_variable_target_node_t;
2961
3664
 
@@ -2970,16 +3673,24 @@ typedef struct pm_instance_variable_write_node {
2970
3673
  /** The embedded base node. */
2971
3674
  pm_node_t base;
2972
3675
 
2973
- /** InstanceVariableWriteNode#name */
3676
+ /**
3677
+ * InstanceVariableWriteNode#name
3678
+ */
2974
3679
  pm_constant_id_t name;
2975
3680
 
2976
- /** InstanceVariableWriteNode#name_loc */
3681
+ /**
3682
+ * InstanceVariableWriteNode#name_loc
3683
+ */
2977
3684
  pm_location_t name_loc;
2978
3685
 
2979
- /** InstanceVariableWriteNode#value */
3686
+ /**
3687
+ * InstanceVariableWriteNode#value
3688
+ */
2980
3689
  struct pm_node *value;
2981
3690
 
2982
- /** InstanceVariableWriteNode#operator_loc */
3691
+ /**
3692
+ * InstanceVariableWriteNode#operator_loc
3693
+ */
2983
3694
  pm_location_t operator_loc;
2984
3695
  } pm_instance_variable_write_node_t;
2985
3696
 
@@ -3023,13 +3734,19 @@ typedef struct pm_interpolated_match_last_line_node {
3023
3734
  /** The embedded base node. */
3024
3735
  pm_node_t base;
3025
3736
 
3026
- /** InterpolatedMatchLastLineNode#opening_loc */
3737
+ /**
3738
+ * InterpolatedMatchLastLineNode#opening_loc
3739
+ */
3027
3740
  pm_location_t opening_loc;
3028
3741
 
3029
- /** InterpolatedMatchLastLineNode#parts */
3742
+ /**
3743
+ * InterpolatedMatchLastLineNode#parts
3744
+ */
3030
3745
  struct pm_node_list parts;
3031
3746
 
3032
- /** InterpolatedMatchLastLineNode#closing_loc */
3747
+ /**
3748
+ * InterpolatedMatchLastLineNode#closing_loc
3749
+ */
3033
3750
  pm_location_t closing_loc;
3034
3751
  } pm_interpolated_match_last_line_node_t;
3035
3752
 
@@ -3056,13 +3773,19 @@ typedef struct pm_interpolated_regular_expression_node {
3056
3773
  /** The embedded base node. */
3057
3774
  pm_node_t base;
3058
3775
 
3059
- /** InterpolatedRegularExpressionNode#opening_loc */
3776
+ /**
3777
+ * InterpolatedRegularExpressionNode#opening_loc
3778
+ */
3060
3779
  pm_location_t opening_loc;
3061
3780
 
3062
- /** InterpolatedRegularExpressionNode#parts */
3781
+ /**
3782
+ * InterpolatedRegularExpressionNode#parts
3783
+ */
3063
3784
  struct pm_node_list parts;
3064
3785
 
3065
- /** InterpolatedRegularExpressionNode#closing_loc */
3786
+ /**
3787
+ * InterpolatedRegularExpressionNode#closing_loc
3788
+ */
3066
3789
  pm_location_t closing_loc;
3067
3790
  } pm_interpolated_regular_expression_node_t;
3068
3791
 
@@ -3077,13 +3800,19 @@ typedef struct pm_interpolated_string_node {
3077
3800
  /** The embedded base node. */
3078
3801
  pm_node_t base;
3079
3802
 
3080
- /** InterpolatedStringNode#opening_loc */
3803
+ /**
3804
+ * InterpolatedStringNode#opening_loc
3805
+ */
3081
3806
  pm_location_t opening_loc;
3082
3807
 
3083
- /** InterpolatedStringNode#parts */
3808
+ /**
3809
+ * InterpolatedStringNode#parts
3810
+ */
3084
3811
  struct pm_node_list parts;
3085
3812
 
3086
- /** InterpolatedStringNode#closing_loc */
3813
+ /**
3814
+ * InterpolatedStringNode#closing_loc
3815
+ */
3087
3816
  pm_location_t closing_loc;
3088
3817
  } pm_interpolated_string_node_t;
3089
3818
 
@@ -3098,13 +3827,19 @@ typedef struct pm_interpolated_symbol_node {
3098
3827
  /** The embedded base node. */
3099
3828
  pm_node_t base;
3100
3829
 
3101
- /** InterpolatedSymbolNode#opening_loc */
3830
+ /**
3831
+ * InterpolatedSymbolNode#opening_loc
3832
+ */
3102
3833
  pm_location_t opening_loc;
3103
3834
 
3104
- /** InterpolatedSymbolNode#parts */
3835
+ /**
3836
+ * InterpolatedSymbolNode#parts
3837
+ */
3105
3838
  struct pm_node_list parts;
3106
3839
 
3107
- /** InterpolatedSymbolNode#closing_loc */
3840
+ /**
3841
+ * InterpolatedSymbolNode#closing_loc
3842
+ */
3108
3843
  pm_location_t closing_loc;
3109
3844
  } pm_interpolated_symbol_node_t;
3110
3845
 
@@ -3119,13 +3854,19 @@ typedef struct pm_interpolated_x_string_node {
3119
3854
  /** The embedded base node. */
3120
3855
  pm_node_t base;
3121
3856
 
3122
- /** InterpolatedXStringNode#opening_loc */
3857
+ /**
3858
+ * InterpolatedXStringNode#opening_loc
3859
+ */
3123
3860
  pm_location_t opening_loc;
3124
3861
 
3125
- /** InterpolatedXStringNode#parts */
3862
+ /**
3863
+ * InterpolatedXStringNode#parts
3864
+ */
3126
3865
  struct pm_node_list parts;
3127
3866
 
3128
- /** InterpolatedXStringNode#closing_loc */
3867
+ /**
3868
+ * InterpolatedXStringNode#closing_loc
3869
+ */
3129
3870
  pm_location_t closing_loc;
3130
3871
  } pm_interpolated_x_string_node_t;
3131
3872
 
@@ -3134,7 +3875,7 @@ typedef struct pm_interpolated_x_string_node {
3134
3875
  *
3135
3876
  * Type: PM_KEYWORD_HASH_NODE
3136
3877
  * Flags:
3137
- * PM_KEYWORD_HASH_NODE_FLAGS_STATIC_KEYS
3878
+ * PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS
3138
3879
  *
3139
3880
  * @extends pm_node_t
3140
3881
  */
@@ -3142,7 +3883,9 @@ typedef struct pm_keyword_hash_node {
3142
3883
  /** The embedded base node. */
3143
3884
  pm_node_t base;
3144
3885
 
3145
- /** KeywordHashNode#elements */
3886
+ /**
3887
+ * KeywordHashNode#elements
3888
+ */
3146
3889
  struct pm_node_list elements;
3147
3890
  } pm_keyword_hash_node_t;
3148
3891
 
@@ -3150,6 +3893,8 @@ typedef struct pm_keyword_hash_node {
3150
3893
  * KeywordRestParameterNode
3151
3894
  *
3152
3895
  * Type: PM_KEYWORD_REST_PARAMETER_NODE
3896
+ * Flags:
3897
+ * PM_PARAMETER_FLAGS_REPEATED_PARAMETER
3153
3898
  *
3154
3899
  * @extends pm_node_t
3155
3900
  */
@@ -3157,13 +3902,19 @@ typedef struct pm_keyword_rest_parameter_node {
3157
3902
  /** The embedded base node. */
3158
3903
  pm_node_t base;
3159
3904
 
3160
- /** KeywordRestParameterNode#name */
3905
+ /**
3906
+ * KeywordRestParameterNode#name
3907
+ */
3161
3908
  pm_constant_id_t name;
3162
3909
 
3163
- /** KeywordRestParameterNode#name_loc */
3910
+ /**
3911
+ * KeywordRestParameterNode#name_loc
3912
+ */
3164
3913
  pm_location_t name_loc;
3165
3914
 
3166
- /** KeywordRestParameterNode#operator_loc */
3915
+ /**
3916
+ * KeywordRestParameterNode#operator_loc
3917
+ */
3167
3918
  pm_location_t operator_loc;
3168
3919
  } pm_keyword_rest_parameter_node_t;
3169
3920
 
@@ -3178,25 +3929,34 @@ typedef struct pm_lambda_node {
3178
3929
  /** The embedded base node. */
3179
3930
  pm_node_t base;
3180
3931
 
3181
- /** LambdaNode#locals */
3932
+ /**
3933
+ * LambdaNode#locals
3934
+ */
3182
3935
  pm_constant_id_list_t locals;
3183
3936
 
3184
- /** LambdaNode#locals_body_index */
3185
- uint32_t locals_body_index;
3186
-
3187
- /** LambdaNode#operator_loc */
3937
+ /**
3938
+ * LambdaNode#operator_loc
3939
+ */
3188
3940
  pm_location_t operator_loc;
3189
3941
 
3190
- /** LambdaNode#opening_loc */
3942
+ /**
3943
+ * LambdaNode#opening_loc
3944
+ */
3191
3945
  pm_location_t opening_loc;
3192
3946
 
3193
- /** LambdaNode#closing_loc */
3947
+ /**
3948
+ * LambdaNode#closing_loc
3949
+ */
3194
3950
  pm_location_t closing_loc;
3195
3951
 
3196
- /** LambdaNode#parameters */
3952
+ /**
3953
+ * LambdaNode#parameters
3954
+ */
3197
3955
  struct pm_node *parameters;
3198
3956
 
3199
- /** LambdaNode#body */
3957
+ /**
3958
+ * LambdaNode#body
3959
+ */
3200
3960
  struct pm_node *body;
3201
3961
  } pm_lambda_node_t;
3202
3962
 
@@ -3211,19 +3971,29 @@ typedef struct pm_local_variable_and_write_node {
3211
3971
  /** The embedded base node. */
3212
3972
  pm_node_t base;
3213
3973
 
3214
- /** LocalVariableAndWriteNode#name_loc */
3974
+ /**
3975
+ * LocalVariableAndWriteNode#name_loc
3976
+ */
3215
3977
  pm_location_t name_loc;
3216
3978
 
3217
- /** LocalVariableAndWriteNode#operator_loc */
3979
+ /**
3980
+ * LocalVariableAndWriteNode#operator_loc
3981
+ */
3218
3982
  pm_location_t operator_loc;
3219
3983
 
3220
- /** LocalVariableAndWriteNode#value */
3984
+ /**
3985
+ * LocalVariableAndWriteNode#value
3986
+ */
3221
3987
  struct pm_node *value;
3222
3988
 
3223
- /** LocalVariableAndWriteNode#name */
3989
+ /**
3990
+ * LocalVariableAndWriteNode#name
3991
+ */
3224
3992
  pm_constant_id_t name;
3225
3993
 
3226
- /** LocalVariableAndWriteNode#depth */
3994
+ /**
3995
+ * LocalVariableAndWriteNode#depth
3996
+ */
3227
3997
  uint32_t depth;
3228
3998
  } pm_local_variable_and_write_node_t;
3229
3999
 
@@ -3238,22 +4008,34 @@ typedef struct pm_local_variable_operator_write_node {
3238
4008
  /** The embedded base node. */
3239
4009
  pm_node_t base;
3240
4010
 
3241
- /** LocalVariableOperatorWriteNode#name_loc */
4011
+ /**
4012
+ * LocalVariableOperatorWriteNode#name_loc
4013
+ */
3242
4014
  pm_location_t name_loc;
3243
4015
 
3244
- /** LocalVariableOperatorWriteNode#operator_loc */
4016
+ /**
4017
+ * LocalVariableOperatorWriteNode#operator_loc
4018
+ */
3245
4019
  pm_location_t operator_loc;
3246
4020
 
3247
- /** LocalVariableOperatorWriteNode#value */
4021
+ /**
4022
+ * LocalVariableOperatorWriteNode#value
4023
+ */
3248
4024
  struct pm_node *value;
3249
4025
 
3250
- /** LocalVariableOperatorWriteNode#name */
4026
+ /**
4027
+ * LocalVariableOperatorWriteNode#name
4028
+ */
3251
4029
  pm_constant_id_t name;
3252
4030
 
3253
- /** LocalVariableOperatorWriteNode#operator */
4031
+ /**
4032
+ * LocalVariableOperatorWriteNode#operator
4033
+ */
3254
4034
  pm_constant_id_t operator;
3255
4035
 
3256
- /** LocalVariableOperatorWriteNode#depth */
4036
+ /**
4037
+ * LocalVariableOperatorWriteNode#depth
4038
+ */
3257
4039
  uint32_t depth;
3258
4040
  } pm_local_variable_operator_write_node_t;
3259
4041
 
@@ -3268,19 +4050,29 @@ typedef struct pm_local_variable_or_write_node {
3268
4050
  /** The embedded base node. */
3269
4051
  pm_node_t base;
3270
4052
 
3271
- /** LocalVariableOrWriteNode#name_loc */
4053
+ /**
4054
+ * LocalVariableOrWriteNode#name_loc
4055
+ */
3272
4056
  pm_location_t name_loc;
3273
4057
 
3274
- /** LocalVariableOrWriteNode#operator_loc */
4058
+ /**
4059
+ * LocalVariableOrWriteNode#operator_loc
4060
+ */
3275
4061
  pm_location_t operator_loc;
3276
4062
 
3277
- /** LocalVariableOrWriteNode#value */
4063
+ /**
4064
+ * LocalVariableOrWriteNode#value
4065
+ */
3278
4066
  struct pm_node *value;
3279
4067
 
3280
- /** LocalVariableOrWriteNode#name */
4068
+ /**
4069
+ * LocalVariableOrWriteNode#name
4070
+ */
3281
4071
  pm_constant_id_t name;
3282
4072
 
3283
- /** LocalVariableOrWriteNode#depth */
4073
+ /**
4074
+ * LocalVariableOrWriteNode#depth
4075
+ */
3284
4076
  uint32_t depth;
3285
4077
  } pm_local_variable_or_write_node_t;
3286
4078
 
@@ -3295,10 +4087,36 @@ typedef struct pm_local_variable_read_node {
3295
4087
  /** The embedded base node. */
3296
4088
  pm_node_t base;
3297
4089
 
3298
- /** LocalVariableReadNode#name */
4090
+ /**
4091
+ * LocalVariableReadNode#name
4092
+ *
4093
+ * The name of the local variable, which is an [identifier](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#identifiers).
4094
+ *
4095
+ * x # name `:x`
4096
+ *
4097
+ * _Test # name `:_Test`
4098
+ *
4099
+ * Note that this can also be an underscore followed by a number for the default block parameters.
4100
+ *
4101
+ * _1 # name `:_1`
4102
+ *
4103
+ * Finally, for the default `it` block parameter, the name is `0it`. This is to distinguish it from an `it` local variable that is explicitly declared.
4104
+ *
4105
+ * it # name `:0it`
4106
+ */
3299
4107
  pm_constant_id_t name;
3300
4108
 
3301
- /** LocalVariableReadNode#depth */
4109
+ /**
4110
+ * LocalVariableReadNode#depth
4111
+ *
4112
+ * The number of visible scopes that should be searched to find the origin of this local variable.
4113
+ *
4114
+ * foo = 1; foo # depth 0
4115
+ *
4116
+ * bar = 2; tap { bar } # depth 1
4117
+ *
4118
+ * The specific rules for calculating the depth may differ from individual Ruby implementations, as they are not specified by the language. For more information, see [the Prism documentation](https://github.com/ruby/prism/blob/main/docs/local_variable_depth.md).
4119
+ */
3302
4120
  uint32_t depth;
3303
4121
  } pm_local_variable_read_node_t;
3304
4122
 
@@ -3313,10 +4131,14 @@ typedef struct pm_local_variable_target_node {
3313
4131
  /** The embedded base node. */
3314
4132
  pm_node_t base;
3315
4133
 
3316
- /** LocalVariableTargetNode#name */
4134
+ /**
4135
+ * LocalVariableTargetNode#name
4136
+ */
3317
4137
  pm_constant_id_t name;
3318
4138
 
3319
- /** LocalVariableTargetNode#depth */
4139
+ /**
4140
+ * LocalVariableTargetNode#depth
4141
+ */
3320
4142
  uint32_t depth;
3321
4143
  } pm_local_variable_target_node_t;
3322
4144
 
@@ -3331,19 +4153,29 @@ typedef struct pm_local_variable_write_node {
3331
4153
  /** The embedded base node. */
3332
4154
  pm_node_t base;
3333
4155
 
3334
- /** LocalVariableWriteNode#name */
4156
+ /**
4157
+ * LocalVariableWriteNode#name
4158
+ */
3335
4159
  pm_constant_id_t name;
3336
4160
 
3337
- /** LocalVariableWriteNode#depth */
4161
+ /**
4162
+ * LocalVariableWriteNode#depth
4163
+ */
3338
4164
  uint32_t depth;
3339
4165
 
3340
- /** LocalVariableWriteNode#name_loc */
4166
+ /**
4167
+ * LocalVariableWriteNode#name_loc
4168
+ */
3341
4169
  pm_location_t name_loc;
3342
4170
 
3343
- /** LocalVariableWriteNode#value */
4171
+ /**
4172
+ * LocalVariableWriteNode#value
4173
+ */
3344
4174
  struct pm_node *value;
3345
4175
 
3346
- /** LocalVariableWriteNode#operator_loc */
4176
+ /**
4177
+ * LocalVariableWriteNode#operator_loc
4178
+ */
3347
4179
  pm_location_t operator_loc;
3348
4180
  } pm_local_variable_write_node_t;
3349
4181
 
@@ -3370,16 +4202,24 @@ typedef struct pm_match_last_line_node {
3370
4202
  /** The embedded base node. */
3371
4203
  pm_node_t base;
3372
4204
 
3373
- /** MatchLastLineNode#opening_loc */
4205
+ /**
4206
+ * MatchLastLineNode#opening_loc
4207
+ */
3374
4208
  pm_location_t opening_loc;
3375
4209
 
3376
- /** MatchLastLineNode#content_loc */
4210
+ /**
4211
+ * MatchLastLineNode#content_loc
4212
+ */
3377
4213
  pm_location_t content_loc;
3378
4214
 
3379
- /** MatchLastLineNode#closing_loc */
4215
+ /**
4216
+ * MatchLastLineNode#closing_loc
4217
+ */
3380
4218
  pm_location_t closing_loc;
3381
4219
 
3382
- /** MatchLastLineNode#unescaped */
4220
+ /**
4221
+ * MatchLastLineNode#unescaped
4222
+ */
3383
4223
  pm_string_t unescaped;
3384
4224
  } pm_match_last_line_node_t;
3385
4225
 
@@ -3394,13 +4234,19 @@ typedef struct pm_match_predicate_node {
3394
4234
  /** The embedded base node. */
3395
4235
  pm_node_t base;
3396
4236
 
3397
- /** MatchPredicateNode#value */
4237
+ /**
4238
+ * MatchPredicateNode#value
4239
+ */
3398
4240
  struct pm_node *value;
3399
4241
 
3400
- /** MatchPredicateNode#pattern */
4242
+ /**
4243
+ * MatchPredicateNode#pattern
4244
+ */
3401
4245
  struct pm_node *pattern;
3402
4246
 
3403
- /** MatchPredicateNode#operator_loc */
4247
+ /**
4248
+ * MatchPredicateNode#operator_loc
4249
+ */
3404
4250
  pm_location_t operator_loc;
3405
4251
  } pm_match_predicate_node_t;
3406
4252
 
@@ -3415,13 +4261,19 @@ typedef struct pm_match_required_node {
3415
4261
  /** The embedded base node. */
3416
4262
  pm_node_t base;
3417
4263
 
3418
- /** MatchRequiredNode#value */
4264
+ /**
4265
+ * MatchRequiredNode#value
4266
+ */
3419
4267
  struct pm_node *value;
3420
4268
 
3421
- /** MatchRequiredNode#pattern */
4269
+ /**
4270
+ * MatchRequiredNode#pattern
4271
+ */
3422
4272
  struct pm_node *pattern;
3423
4273
 
3424
- /** MatchRequiredNode#operator_loc */
4274
+ /**
4275
+ * MatchRequiredNode#operator_loc
4276
+ */
3425
4277
  pm_location_t operator_loc;
3426
4278
  } pm_match_required_node_t;
3427
4279
 
@@ -3436,10 +4288,14 @@ typedef struct pm_match_write_node {
3436
4288
  /** The embedded base node. */
3437
4289
  pm_node_t base;
3438
4290
 
3439
- /** MatchWriteNode#call */
4291
+ /**
4292
+ * MatchWriteNode#call
4293
+ */
3440
4294
  struct pm_call_node *call;
3441
4295
 
3442
- /** MatchWriteNode#targets */
4296
+ /**
4297
+ * MatchWriteNode#targets
4298
+ */
3443
4299
  struct pm_node_list targets;
3444
4300
  } pm_match_write_node_t;
3445
4301
 
@@ -3466,22 +4322,34 @@ typedef struct pm_module_node {
3466
4322
  /** The embedded base node. */
3467
4323
  pm_node_t base;
3468
4324
 
3469
- /** ModuleNode#locals */
4325
+ /**
4326
+ * ModuleNode#locals
4327
+ */
3470
4328
  pm_constant_id_list_t locals;
3471
4329
 
3472
- /** ModuleNode#module_keyword_loc */
4330
+ /**
4331
+ * ModuleNode#module_keyword_loc
4332
+ */
3473
4333
  pm_location_t module_keyword_loc;
3474
4334
 
3475
- /** ModuleNode#constant_path */
4335
+ /**
4336
+ * ModuleNode#constant_path
4337
+ */
3476
4338
  struct pm_node *constant_path;
3477
4339
 
3478
- /** ModuleNode#body */
4340
+ /**
4341
+ * ModuleNode#body
4342
+ */
3479
4343
  struct pm_node *body;
3480
4344
 
3481
- /** ModuleNode#end_keyword_loc */
4345
+ /**
4346
+ * ModuleNode#end_keyword_loc
4347
+ */
3482
4348
  pm_location_t end_keyword_loc;
3483
4349
 
3484
- /** ModuleNode#name */
4350
+ /**
4351
+ * ModuleNode#name
4352
+ */
3485
4353
  pm_constant_id_t name;
3486
4354
  } pm_module_node_t;
3487
4355
 
@@ -3496,19 +4364,29 @@ typedef struct pm_multi_target_node {
3496
4364
  /** The embedded base node. */
3497
4365
  pm_node_t base;
3498
4366
 
3499
- /** MultiTargetNode#lefts */
4367
+ /**
4368
+ * MultiTargetNode#lefts
4369
+ */
3500
4370
  struct pm_node_list lefts;
3501
4371
 
3502
- /** MultiTargetNode#rest */
4372
+ /**
4373
+ * MultiTargetNode#rest
4374
+ */
3503
4375
  struct pm_node *rest;
3504
4376
 
3505
- /** MultiTargetNode#rights */
4377
+ /**
4378
+ * MultiTargetNode#rights
4379
+ */
3506
4380
  struct pm_node_list rights;
3507
4381
 
3508
- /** MultiTargetNode#lparen_loc */
4382
+ /**
4383
+ * MultiTargetNode#lparen_loc
4384
+ */
3509
4385
  pm_location_t lparen_loc;
3510
4386
 
3511
- /** MultiTargetNode#rparen_loc */
4387
+ /**
4388
+ * MultiTargetNode#rparen_loc
4389
+ */
3512
4390
  pm_location_t rparen_loc;
3513
4391
  } pm_multi_target_node_t;
3514
4392
 
@@ -3523,25 +4401,39 @@ typedef struct pm_multi_write_node {
3523
4401
  /** The embedded base node. */
3524
4402
  pm_node_t base;
3525
4403
 
3526
- /** MultiWriteNode#lefts */
4404
+ /**
4405
+ * MultiWriteNode#lefts
4406
+ */
3527
4407
  struct pm_node_list lefts;
3528
4408
 
3529
- /** MultiWriteNode#rest */
4409
+ /**
4410
+ * MultiWriteNode#rest
4411
+ */
3530
4412
  struct pm_node *rest;
3531
4413
 
3532
- /** MultiWriteNode#rights */
4414
+ /**
4415
+ * MultiWriteNode#rights
4416
+ */
3533
4417
  struct pm_node_list rights;
3534
4418
 
3535
- /** MultiWriteNode#lparen_loc */
4419
+ /**
4420
+ * MultiWriteNode#lparen_loc
4421
+ */
3536
4422
  pm_location_t lparen_loc;
3537
4423
 
3538
- /** MultiWriteNode#rparen_loc */
4424
+ /**
4425
+ * MultiWriteNode#rparen_loc
4426
+ */
3539
4427
  pm_location_t rparen_loc;
3540
4428
 
3541
- /** MultiWriteNode#operator_loc */
4429
+ /**
4430
+ * MultiWriteNode#operator_loc
4431
+ */
3542
4432
  pm_location_t operator_loc;
3543
4433
 
3544
- /** MultiWriteNode#value */
4434
+ /**
4435
+ * MultiWriteNode#value
4436
+ */
3545
4437
  struct pm_node *value;
3546
4438
  } pm_multi_write_node_t;
3547
4439
 
@@ -3556,10 +4448,14 @@ typedef struct pm_next_node {
3556
4448
  /** The embedded base node. */
3557
4449
  pm_node_t base;
3558
4450
 
3559
- /** NextNode#arguments */
4451
+ /**
4452
+ * NextNode#arguments
4453
+ */
3560
4454
  struct pm_arguments_node *arguments;
3561
4455
 
3562
- /** NextNode#keyword_loc */
4456
+ /**
4457
+ * NextNode#keyword_loc
4458
+ */
3563
4459
  pm_location_t keyword_loc;
3564
4460
  } pm_next_node_t;
3565
4461
 
@@ -3586,10 +4482,14 @@ typedef struct pm_no_keywords_parameter_node {
3586
4482
  /** The embedded base node. */
3587
4483
  pm_node_t base;
3588
4484
 
3589
- /** NoKeywordsParameterNode#operator_loc */
4485
+ /**
4486
+ * NoKeywordsParameterNode#operator_loc
4487
+ */
3590
4488
  pm_location_t operator_loc;
3591
4489
 
3592
- /** NoKeywordsParameterNode#keyword_loc */
4490
+ /**
4491
+ * NoKeywordsParameterNode#keyword_loc
4492
+ */
3593
4493
  pm_location_t keyword_loc;
3594
4494
  } pm_no_keywords_parameter_node_t;
3595
4495
 
@@ -3604,7 +4504,9 @@ typedef struct pm_numbered_parameters_node {
3604
4504
  /** The embedded base node. */
3605
4505
  pm_node_t base;
3606
4506
 
3607
- /** NumberedParametersNode#maximum */
4507
+ /**
4508
+ * NumberedParametersNode#maximum
4509
+ */
3608
4510
  uint8_t maximum;
3609
4511
  } pm_numbered_parameters_node_t;
3610
4512
 
@@ -3619,7 +4521,17 @@ typedef struct pm_numbered_reference_read_node {
3619
4521
  /** The embedded base node. */
3620
4522
  pm_node_t base;
3621
4523
 
3622
- /** NumberedReferenceReadNode#number */
4524
+ /**
4525
+ * NumberedReferenceReadNode#number
4526
+ *
4527
+ * The (1-indexed, from the left) number of the capture group. Numbered references that would overflow a `uint32` result in a `number` of exactly `2**32 - 1`.
4528
+ *
4529
+ * $1 # number `1`
4530
+ *
4531
+ * $5432 # number `5432`
4532
+ *
4533
+ * $4294967296 # number `4294967295`
4534
+ */
3623
4535
  uint32_t number;
3624
4536
  } pm_numbered_reference_read_node_t;
3625
4537
 
@@ -3627,6 +4539,8 @@ typedef struct pm_numbered_reference_read_node {
3627
4539
  * OptionalKeywordParameterNode
3628
4540
  *
3629
4541
  * Type: PM_OPTIONAL_KEYWORD_PARAMETER_NODE
4542
+ * Flags:
4543
+ * PM_PARAMETER_FLAGS_REPEATED_PARAMETER
3630
4544
  *
3631
4545
  * @extends pm_node_t
3632
4546
  */
@@ -3634,13 +4548,19 @@ typedef struct pm_optional_keyword_parameter_node {
3634
4548
  /** The embedded base node. */
3635
4549
  pm_node_t base;
3636
4550
 
3637
- /** OptionalKeywordParameterNode#name */
4551
+ /**
4552
+ * OptionalKeywordParameterNode#name
4553
+ */
3638
4554
  pm_constant_id_t name;
3639
4555
 
3640
- /** OptionalKeywordParameterNode#name_loc */
4556
+ /**
4557
+ * OptionalKeywordParameterNode#name_loc
4558
+ */
3641
4559
  pm_location_t name_loc;
3642
4560
 
3643
- /** OptionalKeywordParameterNode#value */
4561
+ /**
4562
+ * OptionalKeywordParameterNode#value
4563
+ */
3644
4564
  struct pm_node *value;
3645
4565
  } pm_optional_keyword_parameter_node_t;
3646
4566
 
@@ -3648,6 +4568,8 @@ typedef struct pm_optional_keyword_parameter_node {
3648
4568
  * OptionalParameterNode
3649
4569
  *
3650
4570
  * Type: PM_OPTIONAL_PARAMETER_NODE
4571
+ * Flags:
4572
+ * PM_PARAMETER_FLAGS_REPEATED_PARAMETER
3651
4573
  *
3652
4574
  * @extends pm_node_t
3653
4575
  */
@@ -3655,16 +4577,24 @@ typedef struct pm_optional_parameter_node {
3655
4577
  /** The embedded base node. */
3656
4578
  pm_node_t base;
3657
4579
 
3658
- /** OptionalParameterNode#name */
4580
+ /**
4581
+ * OptionalParameterNode#name
4582
+ */
3659
4583
  pm_constant_id_t name;
3660
4584
 
3661
- /** OptionalParameterNode#name_loc */
4585
+ /**
4586
+ * OptionalParameterNode#name_loc
4587
+ */
3662
4588
  pm_location_t name_loc;
3663
4589
 
3664
- /** OptionalParameterNode#operator_loc */
4590
+ /**
4591
+ * OptionalParameterNode#operator_loc
4592
+ */
3665
4593
  pm_location_t operator_loc;
3666
4594
 
3667
- /** OptionalParameterNode#value */
4595
+ /**
4596
+ * OptionalParameterNode#value
4597
+ */
3668
4598
  struct pm_node *value;
3669
4599
  } pm_optional_parameter_node_t;
3670
4600
 
@@ -3679,13 +4609,40 @@ typedef struct pm_or_node {
3679
4609
  /** The embedded base node. */
3680
4610
  pm_node_t base;
3681
4611
 
3682
- /** OrNode#left */
4612
+ /**
4613
+ * OrNode#left
4614
+ *
4615
+ * Represents the left side of the expression. It can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression).
4616
+ *
4617
+ * left or right
4618
+ * ^^^^
4619
+ *
4620
+ * 1 || 2
4621
+ * ^
4622
+ */
3683
4623
  struct pm_node *left;
3684
4624
 
3685
- /** OrNode#right */
4625
+ /**
4626
+ * OrNode#right
4627
+ *
4628
+ * Represents the right side of the expression. It can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression).
4629
+ *
4630
+ * left || right
4631
+ * ^^^^^
4632
+ *
4633
+ * 1 or 2
4634
+ * ^
4635
+ */
3686
4636
  struct pm_node *right;
3687
4637
 
3688
- /** OrNode#operator_loc */
4638
+ /**
4639
+ * OrNode#operator_loc
4640
+ *
4641
+ * The location of the `or` keyword or the `||` operator.
4642
+ *
4643
+ * left or right
4644
+ * ^^
4645
+ */
3689
4646
  pm_location_t operator_loc;
3690
4647
  } pm_or_node_t;
3691
4648
 
@@ -3700,25 +4657,39 @@ typedef struct pm_parameters_node {
3700
4657
  /** The embedded base node. */
3701
4658
  pm_node_t base;
3702
4659
 
3703
- /** ParametersNode#requireds */
4660
+ /**
4661
+ * ParametersNode#requireds
4662
+ */
3704
4663
  struct pm_node_list requireds;
3705
4664
 
3706
- /** ParametersNode#optionals */
4665
+ /**
4666
+ * ParametersNode#optionals
4667
+ */
3707
4668
  struct pm_node_list optionals;
3708
4669
 
3709
- /** ParametersNode#rest */
4670
+ /**
4671
+ * ParametersNode#rest
4672
+ */
3710
4673
  struct pm_node *rest;
3711
4674
 
3712
- /** ParametersNode#posts */
4675
+ /**
4676
+ * ParametersNode#posts
4677
+ */
3713
4678
  struct pm_node_list posts;
3714
4679
 
3715
- /** ParametersNode#keywords */
4680
+ /**
4681
+ * ParametersNode#keywords
4682
+ */
3716
4683
  struct pm_node_list keywords;
3717
4684
 
3718
- /** ParametersNode#keyword_rest */
4685
+ /**
4686
+ * ParametersNode#keyword_rest
4687
+ */
3719
4688
  struct pm_node *keyword_rest;
3720
4689
 
3721
- /** ParametersNode#block */
4690
+ /**
4691
+ * ParametersNode#block
4692
+ */
3722
4693
  struct pm_block_parameter_node *block;
3723
4694
  } pm_parameters_node_t;
3724
4695
 
@@ -3733,13 +4704,19 @@ typedef struct pm_parentheses_node {
3733
4704
  /** The embedded base node. */
3734
4705
  pm_node_t base;
3735
4706
 
3736
- /** ParenthesesNode#body */
4707
+ /**
4708
+ * ParenthesesNode#body
4709
+ */
3737
4710
  struct pm_node *body;
3738
4711
 
3739
- /** ParenthesesNode#opening_loc */
4712
+ /**
4713
+ * ParenthesesNode#opening_loc
4714
+ */
3740
4715
  pm_location_t opening_loc;
3741
4716
 
3742
- /** ParenthesesNode#closing_loc */
4717
+ /**
4718
+ * ParenthesesNode#closing_loc
4719
+ */
3743
4720
  pm_location_t closing_loc;
3744
4721
  } pm_parentheses_node_t;
3745
4722
 
@@ -3754,16 +4731,24 @@ typedef struct pm_pinned_expression_node {
3754
4731
  /** The embedded base node. */
3755
4732
  pm_node_t base;
3756
4733
 
3757
- /** PinnedExpressionNode#expression */
4734
+ /**
4735
+ * PinnedExpressionNode#expression
4736
+ */
3758
4737
  struct pm_node *expression;
3759
4738
 
3760
- /** PinnedExpressionNode#operator_loc */
4739
+ /**
4740
+ * PinnedExpressionNode#operator_loc
4741
+ */
3761
4742
  pm_location_t operator_loc;
3762
4743
 
3763
- /** PinnedExpressionNode#lparen_loc */
4744
+ /**
4745
+ * PinnedExpressionNode#lparen_loc
4746
+ */
3764
4747
  pm_location_t lparen_loc;
3765
4748
 
3766
- /** PinnedExpressionNode#rparen_loc */
4749
+ /**
4750
+ * PinnedExpressionNode#rparen_loc
4751
+ */
3767
4752
  pm_location_t rparen_loc;
3768
4753
  } pm_pinned_expression_node_t;
3769
4754
 
@@ -3778,10 +4763,14 @@ typedef struct pm_pinned_variable_node {
3778
4763
  /** The embedded base node. */
3779
4764
  pm_node_t base;
3780
4765
 
3781
- /** PinnedVariableNode#variable */
4766
+ /**
4767
+ * PinnedVariableNode#variable
4768
+ */
3782
4769
  struct pm_node *variable;
3783
4770
 
3784
- /** PinnedVariableNode#operator_loc */
4771
+ /**
4772
+ * PinnedVariableNode#operator_loc
4773
+ */
3785
4774
  pm_location_t operator_loc;
3786
4775
  } pm_pinned_variable_node_t;
3787
4776
 
@@ -3796,16 +4785,24 @@ typedef struct pm_post_execution_node {
3796
4785
  /** The embedded base node. */
3797
4786
  pm_node_t base;
3798
4787
 
3799
- /** PostExecutionNode#statements */
4788
+ /**
4789
+ * PostExecutionNode#statements
4790
+ */
3800
4791
  struct pm_statements_node *statements;
3801
4792
 
3802
- /** PostExecutionNode#keyword_loc */
4793
+ /**
4794
+ * PostExecutionNode#keyword_loc
4795
+ */
3803
4796
  pm_location_t keyword_loc;
3804
4797
 
3805
- /** PostExecutionNode#opening_loc */
4798
+ /**
4799
+ * PostExecutionNode#opening_loc
4800
+ */
3806
4801
  pm_location_t opening_loc;
3807
4802
 
3808
- /** PostExecutionNode#closing_loc */
4803
+ /**
4804
+ * PostExecutionNode#closing_loc
4805
+ */
3809
4806
  pm_location_t closing_loc;
3810
4807
  } pm_post_execution_node_t;
3811
4808
 
@@ -3820,16 +4817,24 @@ typedef struct pm_pre_execution_node {
3820
4817
  /** The embedded base node. */
3821
4818
  pm_node_t base;
3822
4819
 
3823
- /** PreExecutionNode#statements */
4820
+ /**
4821
+ * PreExecutionNode#statements
4822
+ */
3824
4823
  struct pm_statements_node *statements;
3825
4824
 
3826
- /** PreExecutionNode#keyword_loc */
4825
+ /**
4826
+ * PreExecutionNode#keyword_loc
4827
+ */
3827
4828
  pm_location_t keyword_loc;
3828
4829
 
3829
- /** PreExecutionNode#opening_loc */
4830
+ /**
4831
+ * PreExecutionNode#opening_loc
4832
+ */
3830
4833
  pm_location_t opening_loc;
3831
4834
 
3832
- /** PreExecutionNode#closing_loc */
4835
+ /**
4836
+ * PreExecutionNode#closing_loc
4837
+ */
3833
4838
  pm_location_t closing_loc;
3834
4839
  } pm_pre_execution_node_t;
3835
4840
 
@@ -3844,10 +4849,14 @@ typedef struct pm_program_node {
3844
4849
  /** The embedded base node. */
3845
4850
  pm_node_t base;
3846
4851
 
3847
- /** ProgramNode#locals */
4852
+ /**
4853
+ * ProgramNode#locals
4854
+ */
3848
4855
  pm_constant_id_list_t locals;
3849
4856
 
3850
- /** ProgramNode#statements */
4857
+ /**
4858
+ * ProgramNode#statements
4859
+ */
3851
4860
  struct pm_statements_node *statements;
3852
4861
  } pm_program_node_t;
3853
4862
 
@@ -3864,13 +4873,38 @@ typedef struct pm_range_node {
3864
4873
  /** The embedded base node. */
3865
4874
  pm_node_t base;
3866
4875
 
3867
- /** RangeNode#left */
4876
+ /**
4877
+ * RangeNode#left
4878
+ *
4879
+ * The left-hand side of the range, if present. It can be either `nil` or any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression).
4880
+ *
4881
+ * 1...
4882
+ * ^
4883
+ *
4884
+ * hello...goodbye
4885
+ * ^^^^^
4886
+ */
3868
4887
  struct pm_node *left;
3869
4888
 
3870
- /** RangeNode#right */
4889
+ /**
4890
+ * RangeNode#right
4891
+ *
4892
+ * The right-hand side of the range, if present. It can be either `nil` or any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression).
4893
+ *
4894
+ * ..5
4895
+ * ^
4896
+ *
4897
+ * 1...foo
4898
+ * ^^^
4899
+ * If neither right-hand or left-hand side was included, this will be a MissingNode.
4900
+ */
3871
4901
  struct pm_node *right;
3872
4902
 
3873
- /** RangeNode#operator_loc */
4903
+ /**
4904
+ * RangeNode#operator_loc
4905
+ *
4906
+ * The location of the `..` or `...` operator.
4907
+ */
3874
4908
  pm_location_t operator_loc;
3875
4909
  } pm_range_node_t;
3876
4910
 
@@ -3885,7 +4919,9 @@ typedef struct pm_rational_node {
3885
4919
  /** The embedded base node. */
3886
4920
  pm_node_t base;
3887
4921
 
3888
- /** RationalNode#numeric */
4922
+ /**
4923
+ * RationalNode#numeric
4924
+ */
3889
4925
  struct pm_node *numeric;
3890
4926
  } pm_rational_node_t;
3891
4927
 
@@ -3924,16 +4960,24 @@ typedef struct pm_regular_expression_node {
3924
4960
  /** The embedded base node. */
3925
4961
  pm_node_t base;
3926
4962
 
3927
- /** RegularExpressionNode#opening_loc */
4963
+ /**
4964
+ * RegularExpressionNode#opening_loc
4965
+ */
3928
4966
  pm_location_t opening_loc;
3929
4967
 
3930
- /** RegularExpressionNode#content_loc */
4968
+ /**
4969
+ * RegularExpressionNode#content_loc
4970
+ */
3931
4971
  pm_location_t content_loc;
3932
4972
 
3933
- /** RegularExpressionNode#closing_loc */
4973
+ /**
4974
+ * RegularExpressionNode#closing_loc
4975
+ */
3934
4976
  pm_location_t closing_loc;
3935
4977
 
3936
- /** RegularExpressionNode#unescaped */
4978
+ /**
4979
+ * RegularExpressionNode#unescaped
4980
+ */
3937
4981
  pm_string_t unescaped;
3938
4982
  } pm_regular_expression_node_t;
3939
4983
 
@@ -3941,6 +4985,8 @@ typedef struct pm_regular_expression_node {
3941
4985
  * RequiredKeywordParameterNode
3942
4986
  *
3943
4987
  * Type: PM_REQUIRED_KEYWORD_PARAMETER_NODE
4988
+ * Flags:
4989
+ * PM_PARAMETER_FLAGS_REPEATED_PARAMETER
3944
4990
  *
3945
4991
  * @extends pm_node_t
3946
4992
  */
@@ -3948,10 +4994,14 @@ typedef struct pm_required_keyword_parameter_node {
3948
4994
  /** The embedded base node. */
3949
4995
  pm_node_t base;
3950
4996
 
3951
- /** RequiredKeywordParameterNode#name */
4997
+ /**
4998
+ * RequiredKeywordParameterNode#name
4999
+ */
3952
5000
  pm_constant_id_t name;
3953
5001
 
3954
- /** RequiredKeywordParameterNode#name_loc */
5002
+ /**
5003
+ * RequiredKeywordParameterNode#name_loc
5004
+ */
3955
5005
  pm_location_t name_loc;
3956
5006
  } pm_required_keyword_parameter_node_t;
3957
5007
 
@@ -3959,6 +5009,8 @@ typedef struct pm_required_keyword_parameter_node {
3959
5009
  * RequiredParameterNode
3960
5010
  *
3961
5011
  * Type: PM_REQUIRED_PARAMETER_NODE
5012
+ * Flags:
5013
+ * PM_PARAMETER_FLAGS_REPEATED_PARAMETER
3962
5014
  *
3963
5015
  * @extends pm_node_t
3964
5016
  */
@@ -3966,7 +5018,9 @@ typedef struct pm_required_parameter_node {
3966
5018
  /** The embedded base node. */
3967
5019
  pm_node_t base;
3968
5020
 
3969
- /** RequiredParameterNode#name */
5021
+ /**
5022
+ * RequiredParameterNode#name
5023
+ */
3970
5024
  pm_constant_id_t name;
3971
5025
  } pm_required_parameter_node_t;
3972
5026
 
@@ -3981,13 +5035,19 @@ typedef struct pm_rescue_modifier_node {
3981
5035
  /** The embedded base node. */
3982
5036
  pm_node_t base;
3983
5037
 
3984
- /** RescueModifierNode#expression */
5038
+ /**
5039
+ * RescueModifierNode#expression
5040
+ */
3985
5041
  struct pm_node *expression;
3986
5042
 
3987
- /** RescueModifierNode#keyword_loc */
5043
+ /**
5044
+ * RescueModifierNode#keyword_loc
5045
+ */
3988
5046
  pm_location_t keyword_loc;
3989
5047
 
3990
- /** RescueModifierNode#rescue_expression */
5048
+ /**
5049
+ * RescueModifierNode#rescue_expression
5050
+ */
3991
5051
  struct pm_node *rescue_expression;
3992
5052
  } pm_rescue_modifier_node_t;
3993
5053
 
@@ -4002,22 +5062,34 @@ typedef struct pm_rescue_node {
4002
5062
  /** The embedded base node. */
4003
5063
  pm_node_t base;
4004
5064
 
4005
- /** RescueNode#keyword_loc */
5065
+ /**
5066
+ * RescueNode#keyword_loc
5067
+ */
4006
5068
  pm_location_t keyword_loc;
4007
5069
 
4008
- /** RescueNode#exceptions */
5070
+ /**
5071
+ * RescueNode#exceptions
5072
+ */
4009
5073
  struct pm_node_list exceptions;
4010
5074
 
4011
- /** RescueNode#operator_loc */
5075
+ /**
5076
+ * RescueNode#operator_loc
5077
+ */
4012
5078
  pm_location_t operator_loc;
4013
5079
 
4014
- /** RescueNode#reference */
5080
+ /**
5081
+ * RescueNode#reference
5082
+ */
4015
5083
  struct pm_node *reference;
4016
5084
 
4017
- /** RescueNode#statements */
5085
+ /**
5086
+ * RescueNode#statements
5087
+ */
4018
5088
  struct pm_statements_node *statements;
4019
5089
 
4020
- /** RescueNode#consequent */
5090
+ /**
5091
+ * RescueNode#consequent
5092
+ */
4021
5093
  struct pm_rescue_node *consequent;
4022
5094
  } pm_rescue_node_t;
4023
5095
 
@@ -4025,6 +5097,8 @@ typedef struct pm_rescue_node {
4025
5097
  * RestParameterNode
4026
5098
  *
4027
5099
  * Type: PM_REST_PARAMETER_NODE
5100
+ * Flags:
5101
+ * PM_PARAMETER_FLAGS_REPEATED_PARAMETER
4028
5102
  *
4029
5103
  * @extends pm_node_t
4030
5104
  */
@@ -4032,13 +5106,19 @@ typedef struct pm_rest_parameter_node {
4032
5106
  /** The embedded base node. */
4033
5107
  pm_node_t base;
4034
5108
 
4035
- /** RestParameterNode#name */
5109
+ /**
5110
+ * RestParameterNode#name
5111
+ */
4036
5112
  pm_constant_id_t name;
4037
5113
 
4038
- /** RestParameterNode#name_loc */
5114
+ /**
5115
+ * RestParameterNode#name_loc
5116
+ */
4039
5117
  pm_location_t name_loc;
4040
5118
 
4041
- /** RestParameterNode#operator_loc */
5119
+ /**
5120
+ * RestParameterNode#operator_loc
5121
+ */
4042
5122
  pm_location_t operator_loc;
4043
5123
  } pm_rest_parameter_node_t;
4044
5124
 
@@ -4065,10 +5145,14 @@ typedef struct pm_return_node {
4065
5145
  /** The embedded base node. */
4066
5146
  pm_node_t base;
4067
5147
 
4068
- /** ReturnNode#keyword_loc */
5148
+ /**
5149
+ * ReturnNode#keyword_loc
5150
+ */
4069
5151
  pm_location_t keyword_loc;
4070
5152
 
4071
- /** ReturnNode#arguments */
5153
+ /**
5154
+ * ReturnNode#arguments
5155
+ */
4072
5156
  struct pm_arguments_node *arguments;
4073
5157
  } pm_return_node_t;
4074
5158
 
@@ -4095,22 +5179,34 @@ typedef struct pm_singleton_class_node {
4095
5179
  /** The embedded base node. */
4096
5180
  pm_node_t base;
4097
5181
 
4098
- /** SingletonClassNode#locals */
5182
+ /**
5183
+ * SingletonClassNode#locals
5184
+ */
4099
5185
  pm_constant_id_list_t locals;
4100
5186
 
4101
- /** SingletonClassNode#class_keyword_loc */
5187
+ /**
5188
+ * SingletonClassNode#class_keyword_loc
5189
+ */
4102
5190
  pm_location_t class_keyword_loc;
4103
5191
 
4104
- /** SingletonClassNode#operator_loc */
5192
+ /**
5193
+ * SingletonClassNode#operator_loc
5194
+ */
4105
5195
  pm_location_t operator_loc;
4106
5196
 
4107
- /** SingletonClassNode#expression */
5197
+ /**
5198
+ * SingletonClassNode#expression
5199
+ */
4108
5200
  struct pm_node *expression;
4109
5201
 
4110
- /** SingletonClassNode#body */
5202
+ /**
5203
+ * SingletonClassNode#body
5204
+ */
4111
5205
  struct pm_node *body;
4112
5206
 
4113
- /** SingletonClassNode#end_keyword_loc */
5207
+ /**
5208
+ * SingletonClassNode#end_keyword_loc
5209
+ */
4114
5210
  pm_location_t end_keyword_loc;
4115
5211
  } pm_singleton_class_node_t;
4116
5212
 
@@ -4137,7 +5233,9 @@ typedef struct pm_source_file_node {
4137
5233
  /** The embedded base node. */
4138
5234
  pm_node_t base;
4139
5235
 
4140
- /** SourceFileNode#filepath */
5236
+ /**
5237
+ * SourceFileNode#filepath
5238
+ */
4141
5239
  pm_string_t filepath;
4142
5240
  } pm_source_file_node_t;
4143
5241
 
@@ -4164,10 +5262,14 @@ typedef struct pm_splat_node {
4164
5262
  /** The embedded base node. */
4165
5263
  pm_node_t base;
4166
5264
 
4167
- /** SplatNode#operator_loc */
5265
+ /**
5266
+ * SplatNode#operator_loc
5267
+ */
4168
5268
  pm_location_t operator_loc;
4169
5269
 
4170
- /** SplatNode#expression */
5270
+ /**
5271
+ * SplatNode#expression
5272
+ */
4171
5273
  struct pm_node *expression;
4172
5274
  } pm_splat_node_t;
4173
5275
 
@@ -4182,7 +5284,9 @@ typedef struct pm_statements_node {
4182
5284
  /** The embedded base node. */
4183
5285
  pm_node_t base;
4184
5286
 
4185
- /** StatementsNode#body */
5287
+ /**
5288
+ * StatementsNode#body
5289
+ */
4186
5290
  struct pm_node_list body;
4187
5291
  } pm_statements_node_t;
4188
5292
 
@@ -4201,16 +5305,24 @@ typedef struct pm_string_node {
4201
5305
  /** The embedded base node. */
4202
5306
  pm_node_t base;
4203
5307
 
4204
- /** StringNode#opening_loc */
5308
+ /**
5309
+ * StringNode#opening_loc
5310
+ */
4205
5311
  pm_location_t opening_loc;
4206
5312
 
4207
- /** StringNode#content_loc */
5313
+ /**
5314
+ * StringNode#content_loc
5315
+ */
4208
5316
  pm_location_t content_loc;
4209
5317
 
4210
- /** StringNode#closing_loc */
5318
+ /**
5319
+ * StringNode#closing_loc
5320
+ */
4211
5321
  pm_location_t closing_loc;
4212
5322
 
4213
- /** StringNode#unescaped */
5323
+ /**
5324
+ * StringNode#unescaped
5325
+ */
4214
5326
  pm_string_t unescaped;
4215
5327
  } pm_string_node_t;
4216
5328
 
@@ -4225,19 +5337,29 @@ typedef struct pm_super_node {
4225
5337
  /** The embedded base node. */
4226
5338
  pm_node_t base;
4227
5339
 
4228
- /** SuperNode#keyword_loc */
5340
+ /**
5341
+ * SuperNode#keyword_loc
5342
+ */
4229
5343
  pm_location_t keyword_loc;
4230
5344
 
4231
- /** SuperNode#lparen_loc */
5345
+ /**
5346
+ * SuperNode#lparen_loc
5347
+ */
4232
5348
  pm_location_t lparen_loc;
4233
5349
 
4234
- /** SuperNode#arguments */
5350
+ /**
5351
+ * SuperNode#arguments
5352
+ */
4235
5353
  struct pm_arguments_node *arguments;
4236
5354
 
4237
- /** SuperNode#rparen_loc */
5355
+ /**
5356
+ * SuperNode#rparen_loc
5357
+ */
4238
5358
  pm_location_t rparen_loc;
4239
5359
 
4240
- /** SuperNode#block */
5360
+ /**
5361
+ * SuperNode#block
5362
+ */
4241
5363
  struct pm_node *block;
4242
5364
  } pm_super_node_t;
4243
5365
 
@@ -4256,16 +5378,24 @@ typedef struct pm_symbol_node {
4256
5378
  /** The embedded base node. */
4257
5379
  pm_node_t base;
4258
5380
 
4259
- /** SymbolNode#opening_loc */
5381
+ /**
5382
+ * SymbolNode#opening_loc
5383
+ */
4260
5384
  pm_location_t opening_loc;
4261
5385
 
4262
- /** SymbolNode#value_loc */
5386
+ /**
5387
+ * SymbolNode#value_loc
5388
+ */
4263
5389
  pm_location_t value_loc;
4264
5390
 
4265
- /** SymbolNode#closing_loc */
5391
+ /**
5392
+ * SymbolNode#closing_loc
5393
+ */
4266
5394
  pm_location_t closing_loc;
4267
5395
 
4268
- /** SymbolNode#unescaped */
5396
+ /**
5397
+ * SymbolNode#unescaped
5398
+ */
4269
5399
  pm_string_t unescaped;
4270
5400
  } pm_symbol_node_t;
4271
5401
 
@@ -4292,10 +5422,14 @@ typedef struct pm_undef_node {
4292
5422
  /** The embedded base node. */
4293
5423
  pm_node_t base;
4294
5424
 
4295
- /** UndefNode#names */
5425
+ /**
5426
+ * UndefNode#names
5427
+ */
4296
5428
  struct pm_node_list names;
4297
5429
 
4298
- /** UndefNode#keyword_loc */
5430
+ /**
5431
+ * UndefNode#keyword_loc
5432
+ */
4299
5433
  pm_location_t keyword_loc;
4300
5434
  } pm_undef_node_t;
4301
5435
 
@@ -4310,22 +5444,34 @@ typedef struct pm_unless_node {
4310
5444
  /** The embedded base node. */
4311
5445
  pm_node_t base;
4312
5446
 
4313
- /** UnlessNode#keyword_loc */
5447
+ /**
5448
+ * UnlessNode#keyword_loc
5449
+ */
4314
5450
  pm_location_t keyword_loc;
4315
5451
 
4316
- /** UnlessNode#predicate */
5452
+ /**
5453
+ * UnlessNode#predicate
5454
+ */
4317
5455
  struct pm_node *predicate;
4318
5456
 
4319
- /** UnlessNode#then_keyword_loc */
5457
+ /**
5458
+ * UnlessNode#then_keyword_loc
5459
+ */
4320
5460
  pm_location_t then_keyword_loc;
4321
5461
 
4322
- /** UnlessNode#statements */
5462
+ /**
5463
+ * UnlessNode#statements
5464
+ */
4323
5465
  struct pm_statements_node *statements;
4324
5466
 
4325
- /** UnlessNode#consequent */
5467
+ /**
5468
+ * UnlessNode#consequent
5469
+ */
4326
5470
  struct pm_else_node *consequent;
4327
5471
 
4328
- /** UnlessNode#end_keyword_loc */
5472
+ /**
5473
+ * UnlessNode#end_keyword_loc
5474
+ */
4329
5475
  pm_location_t end_keyword_loc;
4330
5476
  } pm_unless_node_t;
4331
5477
 
@@ -4342,16 +5488,24 @@ typedef struct pm_until_node {
4342
5488
  /** The embedded base node. */
4343
5489
  pm_node_t base;
4344
5490
 
4345
- /** UntilNode#keyword_loc */
5491
+ /**
5492
+ * UntilNode#keyword_loc
5493
+ */
4346
5494
  pm_location_t keyword_loc;
4347
5495
 
4348
- /** UntilNode#closing_loc */
5496
+ /**
5497
+ * UntilNode#closing_loc
5498
+ */
4349
5499
  pm_location_t closing_loc;
4350
5500
 
4351
- /** UntilNode#predicate */
5501
+ /**
5502
+ * UntilNode#predicate
5503
+ */
4352
5504
  struct pm_node *predicate;
4353
5505
 
4354
- /** UntilNode#statements */
5506
+ /**
5507
+ * UntilNode#statements
5508
+ */
4355
5509
  struct pm_statements_node *statements;
4356
5510
  } pm_until_node_t;
4357
5511
 
@@ -4366,13 +5520,19 @@ typedef struct pm_when_node {
4366
5520
  /** The embedded base node. */
4367
5521
  pm_node_t base;
4368
5522
 
4369
- /** WhenNode#keyword_loc */
5523
+ /**
5524
+ * WhenNode#keyword_loc
5525
+ */
4370
5526
  pm_location_t keyword_loc;
4371
5527
 
4372
- /** WhenNode#conditions */
5528
+ /**
5529
+ * WhenNode#conditions
5530
+ */
4373
5531
  struct pm_node_list conditions;
4374
5532
 
4375
- /** WhenNode#statements */
5533
+ /**
5534
+ * WhenNode#statements
5535
+ */
4376
5536
  struct pm_statements_node *statements;
4377
5537
  } pm_when_node_t;
4378
5538
 
@@ -4389,16 +5549,24 @@ typedef struct pm_while_node {
4389
5549
  /** The embedded base node. */
4390
5550
  pm_node_t base;
4391
5551
 
4392
- /** WhileNode#keyword_loc */
5552
+ /**
5553
+ * WhileNode#keyword_loc
5554
+ */
4393
5555
  pm_location_t keyword_loc;
4394
5556
 
4395
- /** WhileNode#closing_loc */
5557
+ /**
5558
+ * WhileNode#closing_loc
5559
+ */
4396
5560
  pm_location_t closing_loc;
4397
5561
 
4398
- /** WhileNode#predicate */
5562
+ /**
5563
+ * WhileNode#predicate
5564
+ */
4399
5565
  struct pm_node *predicate;
4400
5566
 
4401
- /** WhileNode#statements */
5567
+ /**
5568
+ * WhileNode#statements
5569
+ */
4402
5570
  struct pm_statements_node *statements;
4403
5571
  } pm_while_node_t;
4404
5572
 
@@ -4416,16 +5584,24 @@ typedef struct pm_x_string_node {
4416
5584
  /** The embedded base node. */
4417
5585
  pm_node_t base;
4418
5586
 
4419
- /** XStringNode#opening_loc */
5587
+ /**
5588
+ * XStringNode#opening_loc
5589
+ */
4420
5590
  pm_location_t opening_loc;
4421
5591
 
4422
- /** XStringNode#content_loc */
5592
+ /**
5593
+ * XStringNode#content_loc
5594
+ */
4423
5595
  pm_location_t content_loc;
4424
5596
 
4425
- /** XStringNode#closing_loc */
5597
+ /**
5598
+ * XStringNode#closing_loc
5599
+ */
4426
5600
  pm_location_t closing_loc;
4427
5601
 
4428
- /** XStringNode#unescaped */
5602
+ /**
5603
+ * XStringNode#unescaped
5604
+ */
4429
5605
  pm_string_t unescaped;
4430
5606
  } pm_x_string_node_t;
4431
5607
 
@@ -4440,16 +5616,24 @@ typedef struct pm_yield_node {
4440
5616
  /** The embedded base node. */
4441
5617
  pm_node_t base;
4442
5618
 
4443
- /** YieldNode#keyword_loc */
5619
+ /**
5620
+ * YieldNode#keyword_loc
5621
+ */
4444
5622
  pm_location_t keyword_loc;
4445
5623
 
4446
- /** YieldNode#lparen_loc */
5624
+ /**
5625
+ * YieldNode#lparen_loc
5626
+ */
4447
5627
  pm_location_t lparen_loc;
4448
5628
 
4449
- /** YieldNode#arguments */
5629
+ /**
5630
+ * YieldNode#arguments
5631
+ */
4450
5632
  struct pm_arguments_node *arguments;
4451
5633
 
4452
- /** YieldNode#rparen_loc */
5634
+ /**
5635
+ * YieldNode#rparen_loc
5636
+ */
4453
5637
  pm_location_t rparen_loc;
4454
5638
  } pm_yield_node_t;
4455
5639
 
@@ -4481,6 +5665,9 @@ typedef enum pm_call_node_flags {
4481
5665
 
4482
5666
  /** a call that is an attribute write, so the value being written should be returned */
4483
5667
  PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE = 4,
5668
+
5669
+ /** a call that ignores method visibility */
5670
+ PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY = 8,
4484
5671
  } pm_call_node_flags_t;
4485
5672
 
4486
5673
  /**
@@ -4515,8 +5702,8 @@ typedef enum pm_integer_base_flags {
4515
5702
  * Flags for keyword hash nodes.
4516
5703
  */
4517
5704
  typedef enum pm_keyword_hash_node_flags {
4518
- /** a keyword hash which only has `AssocNode` elements all with static literal keys, which means the elements can be treated as keyword arguments */
4519
- PM_KEYWORD_HASH_NODE_FLAGS_STATIC_KEYS = 1,
5705
+ /** a keyword hash which only has `AssocNode` elements all with symbol keys, which means the elements can be treated as keyword arguments */
5706
+ PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS = 1,
4520
5707
  } pm_keyword_hash_node_flags_t;
4521
5708
 
4522
5709
  /**
@@ -4527,6 +5714,14 @@ typedef enum pm_loop_flags {
4527
5714
  PM_LOOP_FLAGS_BEGIN_MODIFIER = 1,
4528
5715
  } pm_loop_flags_t;
4529
5716
 
5717
+ /**
5718
+ * Flags for parameter nodes.
5719
+ */
5720
+ typedef enum pm_parameter_flags {
5721
+ /** a parameter name that has been repeated in the method signature */
5722
+ PM_PARAMETER_FLAGS_REPEATED_PARAMETER = 1,
5723
+ } pm_parameter_flags_t;
5724
+
4530
5725
  /**
4531
5726
  * Flags for range and flip-flop nodes.
4532
5727
  */