prism 0.19.0 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
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
  */