prism 0.13.0 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
data/src/node.c CHANGED
@@ -201,11 +201,6 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
201
201
  if (cast->receiver != NULL) {
202
202
  pm_node_destroy(parser, (pm_node_t *)cast->receiver);
203
203
  }
204
- if (cast->arguments != NULL) {
205
- pm_node_destroy(parser, (pm_node_t *)cast->arguments);
206
- }
207
- pm_string_free(&cast->read_name);
208
- pm_string_free(&cast->write_name);
209
204
  pm_node_destroy(parser, (pm_node_t *)cast->value);
210
205
  break;
211
206
  }
@@ -221,7 +216,6 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
221
216
  if (cast->block != NULL) {
222
217
  pm_node_destroy(parser, (pm_node_t *)cast->block);
223
218
  }
224
- pm_string_free(&cast->name);
225
219
  break;
226
220
  }
227
221
  #line 57 "node.c.erb"
@@ -230,11 +224,6 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
230
224
  if (cast->receiver != NULL) {
231
225
  pm_node_destroy(parser, (pm_node_t *)cast->receiver);
232
226
  }
233
- if (cast->arguments != NULL) {
234
- pm_node_destroy(parser, (pm_node_t *)cast->arguments);
235
- }
236
- pm_string_free(&cast->read_name);
237
- pm_string_free(&cast->write_name);
238
227
  pm_node_destroy(parser, (pm_node_t *)cast->value);
239
228
  break;
240
229
  }
@@ -244,11 +233,6 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
244
233
  if (cast->receiver != NULL) {
245
234
  pm_node_destroy(parser, (pm_node_t *)cast->receiver);
246
235
  }
247
- if (cast->arguments != NULL) {
248
- pm_node_destroy(parser, (pm_node_t *)cast->arguments);
249
- }
250
- pm_string_free(&cast->read_name);
251
- pm_string_free(&cast->write_name);
252
236
  pm_node_destroy(parser, (pm_node_t *)cast->value);
253
237
  break;
254
238
  }
@@ -584,6 +568,51 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
584
568
  }
585
569
  break;
586
570
  }
571
+ #line 57 "node.c.erb"
572
+ case PM_INDEX_AND_WRITE_NODE: {
573
+ pm_index_and_write_node_t *cast = (pm_index_and_write_node_t *) node;
574
+ if (cast->receiver != NULL) {
575
+ pm_node_destroy(parser, (pm_node_t *)cast->receiver);
576
+ }
577
+ if (cast->arguments != NULL) {
578
+ pm_node_destroy(parser, (pm_node_t *)cast->arguments);
579
+ }
580
+ if (cast->block != NULL) {
581
+ pm_node_destroy(parser, (pm_node_t *)cast->block);
582
+ }
583
+ pm_node_destroy(parser, (pm_node_t *)cast->value);
584
+ break;
585
+ }
586
+ #line 57 "node.c.erb"
587
+ case PM_INDEX_OPERATOR_WRITE_NODE: {
588
+ pm_index_operator_write_node_t *cast = (pm_index_operator_write_node_t *) node;
589
+ if (cast->receiver != NULL) {
590
+ pm_node_destroy(parser, (pm_node_t *)cast->receiver);
591
+ }
592
+ if (cast->arguments != NULL) {
593
+ pm_node_destroy(parser, (pm_node_t *)cast->arguments);
594
+ }
595
+ if (cast->block != NULL) {
596
+ pm_node_destroy(parser, (pm_node_t *)cast->block);
597
+ }
598
+ pm_node_destroy(parser, (pm_node_t *)cast->value);
599
+ break;
600
+ }
601
+ #line 57 "node.c.erb"
602
+ case PM_INDEX_OR_WRITE_NODE: {
603
+ pm_index_or_write_node_t *cast = (pm_index_or_write_node_t *) node;
604
+ if (cast->receiver != NULL) {
605
+ pm_node_destroy(parser, (pm_node_t *)cast->receiver);
606
+ }
607
+ if (cast->arguments != NULL) {
608
+ pm_node_destroy(parser, (pm_node_t *)cast->arguments);
609
+ }
610
+ if (cast->block != NULL) {
611
+ pm_node_destroy(parser, (pm_node_t *)cast->block);
612
+ }
613
+ pm_node_destroy(parser, (pm_node_t *)cast->value);
614
+ break;
615
+ }
587
616
  #line 57 "node.c.erb"
588
617
  case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
589
618
  pm_instance_variable_and_write_node_t *cast = (pm_instance_variable_and_write_node_t *) node;
@@ -1260,11 +1289,6 @@ pm_node_memsize_node(pm_node_t *node, pm_memsize_t *memsize) {
1260
1289
  if (cast->receiver != NULL) {
1261
1290
  pm_node_memsize_node((pm_node_t *)cast->receiver, memsize);
1262
1291
  }
1263
- if (cast->arguments != NULL) {
1264
- pm_node_memsize_node((pm_node_t *)cast->arguments, memsize);
1265
- }
1266
- memsize->memsize += pm_string_memsize(&cast->read_name);
1267
- memsize->memsize += pm_string_memsize(&cast->write_name);
1268
1292
  pm_node_memsize_node((pm_node_t *)cast->value, memsize);
1269
1293
  break;
1270
1294
  }
@@ -1281,7 +1305,6 @@ pm_node_memsize_node(pm_node_t *node, pm_memsize_t *memsize) {
1281
1305
  if (cast->block != NULL) {
1282
1306
  pm_node_memsize_node((pm_node_t *)cast->block, memsize);
1283
1307
  }
1284
- memsize->memsize += pm_string_memsize(&cast->name);
1285
1308
  break;
1286
1309
  }
1287
1310
  #line 102 "node.c.erb"
@@ -1291,11 +1314,6 @@ pm_node_memsize_node(pm_node_t *node, pm_memsize_t *memsize) {
1291
1314
  if (cast->receiver != NULL) {
1292
1315
  pm_node_memsize_node((pm_node_t *)cast->receiver, memsize);
1293
1316
  }
1294
- if (cast->arguments != NULL) {
1295
- pm_node_memsize_node((pm_node_t *)cast->arguments, memsize);
1296
- }
1297
- memsize->memsize += pm_string_memsize(&cast->read_name);
1298
- memsize->memsize += pm_string_memsize(&cast->write_name);
1299
1317
  pm_node_memsize_node((pm_node_t *)cast->value, memsize);
1300
1318
  break;
1301
1319
  }
@@ -1306,11 +1324,6 @@ pm_node_memsize_node(pm_node_t *node, pm_memsize_t *memsize) {
1306
1324
  if (cast->receiver != NULL) {
1307
1325
  pm_node_memsize_node((pm_node_t *)cast->receiver, memsize);
1308
1326
  }
1309
- if (cast->arguments != NULL) {
1310
- pm_node_memsize_node((pm_node_t *)cast->arguments, memsize);
1311
- }
1312
- memsize->memsize += pm_string_memsize(&cast->read_name);
1313
- memsize->memsize += pm_string_memsize(&cast->write_name);
1314
1327
  pm_node_memsize_node((pm_node_t *)cast->value, memsize);
1315
1328
  break;
1316
1329
  }
@@ -1715,6 +1728,54 @@ pm_node_memsize_node(pm_node_t *node, pm_memsize_t *memsize) {
1715
1728
  }
1716
1729
  break;
1717
1730
  }
1731
+ #line 102 "node.c.erb"
1732
+ case PM_INDEX_AND_WRITE_NODE: {
1733
+ pm_index_and_write_node_t *cast = (pm_index_and_write_node_t *) node;
1734
+ memsize->memsize += sizeof(*cast);
1735
+ if (cast->receiver != NULL) {
1736
+ pm_node_memsize_node((pm_node_t *)cast->receiver, memsize);
1737
+ }
1738
+ if (cast->arguments != NULL) {
1739
+ pm_node_memsize_node((pm_node_t *)cast->arguments, memsize);
1740
+ }
1741
+ if (cast->block != NULL) {
1742
+ pm_node_memsize_node((pm_node_t *)cast->block, memsize);
1743
+ }
1744
+ pm_node_memsize_node((pm_node_t *)cast->value, memsize);
1745
+ break;
1746
+ }
1747
+ #line 102 "node.c.erb"
1748
+ case PM_INDEX_OPERATOR_WRITE_NODE: {
1749
+ pm_index_operator_write_node_t *cast = (pm_index_operator_write_node_t *) node;
1750
+ memsize->memsize += sizeof(*cast);
1751
+ if (cast->receiver != NULL) {
1752
+ pm_node_memsize_node((pm_node_t *)cast->receiver, memsize);
1753
+ }
1754
+ if (cast->arguments != NULL) {
1755
+ pm_node_memsize_node((pm_node_t *)cast->arguments, memsize);
1756
+ }
1757
+ if (cast->block != NULL) {
1758
+ pm_node_memsize_node((pm_node_t *)cast->block, memsize);
1759
+ }
1760
+ pm_node_memsize_node((pm_node_t *)cast->value, memsize);
1761
+ break;
1762
+ }
1763
+ #line 102 "node.c.erb"
1764
+ case PM_INDEX_OR_WRITE_NODE: {
1765
+ pm_index_or_write_node_t *cast = (pm_index_or_write_node_t *) node;
1766
+ memsize->memsize += sizeof(*cast);
1767
+ if (cast->receiver != NULL) {
1768
+ pm_node_memsize_node((pm_node_t *)cast->receiver, memsize);
1769
+ }
1770
+ if (cast->arguments != NULL) {
1771
+ pm_node_memsize_node((pm_node_t *)cast->arguments, memsize);
1772
+ }
1773
+ if (cast->block != NULL) {
1774
+ pm_node_memsize_node((pm_node_t *)cast->block, memsize);
1775
+ }
1776
+ pm_node_memsize_node((pm_node_t *)cast->value, memsize);
1777
+ break;
1778
+ }
1718
1779
  #line 102 "node.c.erb"
1719
1780
  case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
1720
1781
  pm_instance_variable_and_write_node_t *cast = (pm_instance_variable_and_write_node_t *) node;
@@ -2482,6 +2543,12 @@ pm_node_type_to_str(pm_node_type_t node_type)
2482
2543
  return "PM_IMPLICIT_NODE";
2483
2544
  case PM_IN_NODE:
2484
2545
  return "PM_IN_NODE";
2546
+ case PM_INDEX_AND_WRITE_NODE:
2547
+ return "PM_INDEX_AND_WRITE_NODE";
2548
+ case PM_INDEX_OPERATOR_WRITE_NODE:
2549
+ return "PM_INDEX_OPERATOR_WRITE_NODE";
2550
+ case PM_INDEX_OR_WRITE_NODE:
2551
+ return "PM_INDEX_OR_WRITE_NODE";
2485
2552
  case PM_INSTANCE_VARIABLE_AND_WRITE_NODE:
2486
2553
  return "PM_INSTANCE_VARIABLE_AND_WRITE_NODE";
2487
2554
  case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE:
data/src/prettyprint.c CHANGED
@@ -157,6 +157,9 @@ prettyprint_node(pm_buffer_t *buffer, pm_parser_t *parser, pm_node_t *node) {
157
157
  }
158
158
  case PM_BACK_REFERENCE_READ_NODE: {
159
159
  pm_buffer_append_str(buffer, "BackReferenceReadNode(", 22);
160
+ char name_buffer[12];
161
+ snprintf(name_buffer, sizeof(name_buffer), "%u", ((pm_back_reference_read_node_t *)node)->name);
162
+ pm_buffer_append_str(buffer, name_buffer, strlen(name_buffer));
160
163
  pm_buffer_append_str(buffer, ")", 1);
161
164
  break;
162
165
  }
@@ -311,30 +314,15 @@ prettyprint_node(pm_buffer_t *buffer, pm_parser_t *parser, pm_node_t *node) {
311
314
  } else {
312
315
  prettyprint_location(buffer, parser, &((pm_call_and_write_node_t *)node)->message_loc);
313
316
  }
314
- pm_buffer_append_str(buffer, ", ", 2); if (((pm_call_and_write_node_t *)node)->opening_loc.start == NULL) {
315
- pm_buffer_append_str(buffer, "nil", 3);
316
- } else {
317
- prettyprint_location(buffer, parser, &((pm_call_and_write_node_t *)node)->opening_loc);
318
- }
319
- pm_buffer_append_str(buffer, ", ", 2); if (((pm_call_and_write_node_t *)node)->arguments == NULL) {
320
- pm_buffer_append_str(buffer, "nil", 3);
321
- } else {
322
- prettyprint_node(buffer, parser, (pm_node_t *)((pm_call_and_write_node_t *)node)->arguments);
323
- }
324
- pm_buffer_append_str(buffer, ", ", 2); if (((pm_call_and_write_node_t *)node)->closing_loc.start == NULL) {
325
- pm_buffer_append_str(buffer, "nil", 3);
326
- } else {
327
- prettyprint_location(buffer, parser, &((pm_call_and_write_node_t *)node)->closing_loc);
328
- }
329
317
  pm_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
330
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
318
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
331
319
  pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
332
- pm_buffer_append_str(buffer, ", ", 2); pm_buffer_append_str(buffer, "\"", 1);
333
- pm_buffer_append_bytes(buffer, pm_string_source(&((pm_call_and_write_node_t *)node)->read_name), pm_string_length(&((pm_call_and_write_node_t *)node)->read_name));
334
- pm_buffer_append_str(buffer, "\"", 1);
335
- pm_buffer_append_str(buffer, ", ", 2); pm_buffer_append_str(buffer, "\"", 1);
336
- pm_buffer_append_bytes(buffer, pm_string_source(&((pm_call_and_write_node_t *)node)->write_name), pm_string_length(&((pm_call_and_write_node_t *)node)->write_name));
337
- pm_buffer_append_str(buffer, "\"", 1);
320
+ pm_buffer_append_str(buffer, ", ", 2); char read_name_buffer[12];
321
+ snprintf(read_name_buffer, sizeof(read_name_buffer), "%u", ((pm_call_and_write_node_t *)node)->read_name);
322
+ pm_buffer_append_str(buffer, read_name_buffer, strlen(read_name_buffer));
323
+ pm_buffer_append_str(buffer, ", ", 2); char write_name_buffer[12];
324
+ snprintf(write_name_buffer, sizeof(write_name_buffer), "%u", ((pm_call_and_write_node_t *)node)->write_name);
325
+ pm_buffer_append_str(buffer, write_name_buffer, strlen(write_name_buffer));
338
326
  pm_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((pm_call_and_write_node_t *)node)->operator_loc);
339
327
  pm_buffer_append_str(buffer, ", ", 2); prettyprint_node(buffer, parser, (pm_node_t *)((pm_call_and_write_node_t *)node)->value);
340
328
  pm_buffer_append_str(buffer, ")", 1);
@@ -378,11 +366,11 @@ prettyprint_node(pm_buffer_t *buffer, pm_parser_t *parser, pm_node_t *node) {
378
366
  prettyprint_node(buffer, parser, (pm_node_t *)((pm_call_node_t *)node)->block);
379
367
  }
380
368
  pm_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
381
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
369
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
382
370
  pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
383
- pm_buffer_append_str(buffer, ", ", 2); pm_buffer_append_str(buffer, "\"", 1);
384
- pm_buffer_append_bytes(buffer, pm_string_source(&((pm_call_node_t *)node)->name), pm_string_length(&((pm_call_node_t *)node)->name));
385
- pm_buffer_append_str(buffer, "\"", 1);
371
+ pm_buffer_append_str(buffer, ", ", 2); char name_buffer[12];
372
+ snprintf(name_buffer, sizeof(name_buffer), "%u", ((pm_call_node_t *)node)->name);
373
+ pm_buffer_append_str(buffer, name_buffer, strlen(name_buffer));
386
374
  pm_buffer_append_str(buffer, ")", 1);
387
375
  break;
388
376
  }
@@ -403,30 +391,15 @@ prettyprint_node(pm_buffer_t *buffer, pm_parser_t *parser, pm_node_t *node) {
403
391
  } else {
404
392
  prettyprint_location(buffer, parser, &((pm_call_operator_write_node_t *)node)->message_loc);
405
393
  }
406
- pm_buffer_append_str(buffer, ", ", 2); if (((pm_call_operator_write_node_t *)node)->opening_loc.start == NULL) {
407
- pm_buffer_append_str(buffer, "nil", 3);
408
- } else {
409
- prettyprint_location(buffer, parser, &((pm_call_operator_write_node_t *)node)->opening_loc);
410
- }
411
- pm_buffer_append_str(buffer, ", ", 2); if (((pm_call_operator_write_node_t *)node)->arguments == NULL) {
412
- pm_buffer_append_str(buffer, "nil", 3);
413
- } else {
414
- prettyprint_node(buffer, parser, (pm_node_t *)((pm_call_operator_write_node_t *)node)->arguments);
415
- }
416
- pm_buffer_append_str(buffer, ", ", 2); if (((pm_call_operator_write_node_t *)node)->closing_loc.start == NULL) {
417
- pm_buffer_append_str(buffer, "nil", 3);
418
- } else {
419
- prettyprint_location(buffer, parser, &((pm_call_operator_write_node_t *)node)->closing_loc);
420
- }
421
394
  pm_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
422
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
395
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
423
396
  pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
424
- pm_buffer_append_str(buffer, ", ", 2); pm_buffer_append_str(buffer, "\"", 1);
425
- pm_buffer_append_bytes(buffer, pm_string_source(&((pm_call_operator_write_node_t *)node)->read_name), pm_string_length(&((pm_call_operator_write_node_t *)node)->read_name));
426
- pm_buffer_append_str(buffer, "\"", 1);
427
- pm_buffer_append_str(buffer, ", ", 2); pm_buffer_append_str(buffer, "\"", 1);
428
- pm_buffer_append_bytes(buffer, pm_string_source(&((pm_call_operator_write_node_t *)node)->write_name), pm_string_length(&((pm_call_operator_write_node_t *)node)->write_name));
429
- pm_buffer_append_str(buffer, "\"", 1);
397
+ pm_buffer_append_str(buffer, ", ", 2); char read_name_buffer[12];
398
+ snprintf(read_name_buffer, sizeof(read_name_buffer), "%u", ((pm_call_operator_write_node_t *)node)->read_name);
399
+ pm_buffer_append_str(buffer, read_name_buffer, strlen(read_name_buffer));
400
+ pm_buffer_append_str(buffer, ", ", 2); char write_name_buffer[12];
401
+ snprintf(write_name_buffer, sizeof(write_name_buffer), "%u", ((pm_call_operator_write_node_t *)node)->write_name);
402
+ pm_buffer_append_str(buffer, write_name_buffer, strlen(write_name_buffer));
430
403
  pm_buffer_append_str(buffer, ", ", 2); char operator_buffer[12];
431
404
  snprintf(operator_buffer, sizeof(operator_buffer), "%u", ((pm_call_operator_write_node_t *)node)->operator);
432
405
  pm_buffer_append_str(buffer, operator_buffer, strlen(operator_buffer));
@@ -452,30 +425,15 @@ prettyprint_node(pm_buffer_t *buffer, pm_parser_t *parser, pm_node_t *node) {
452
425
  } else {
453
426
  prettyprint_location(buffer, parser, &((pm_call_or_write_node_t *)node)->message_loc);
454
427
  }
455
- pm_buffer_append_str(buffer, ", ", 2); if (((pm_call_or_write_node_t *)node)->opening_loc.start == NULL) {
456
- pm_buffer_append_str(buffer, "nil", 3);
457
- } else {
458
- prettyprint_location(buffer, parser, &((pm_call_or_write_node_t *)node)->opening_loc);
459
- }
460
- pm_buffer_append_str(buffer, ", ", 2); if (((pm_call_or_write_node_t *)node)->arguments == NULL) {
461
- pm_buffer_append_str(buffer, "nil", 3);
462
- } else {
463
- prettyprint_node(buffer, parser, (pm_node_t *)((pm_call_or_write_node_t *)node)->arguments);
464
- }
465
- pm_buffer_append_str(buffer, ", ", 2); if (((pm_call_or_write_node_t *)node)->closing_loc.start == NULL) {
466
- pm_buffer_append_str(buffer, "nil", 3);
467
- } else {
468
- prettyprint_location(buffer, parser, &((pm_call_or_write_node_t *)node)->closing_loc);
469
- }
470
428
  pm_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
471
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
429
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
472
430
  pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
473
- pm_buffer_append_str(buffer, ", ", 2); pm_buffer_append_str(buffer, "\"", 1);
474
- pm_buffer_append_bytes(buffer, pm_string_source(&((pm_call_or_write_node_t *)node)->read_name), pm_string_length(&((pm_call_or_write_node_t *)node)->read_name));
475
- pm_buffer_append_str(buffer, "\"", 1);
476
- pm_buffer_append_str(buffer, ", ", 2); pm_buffer_append_str(buffer, "\"", 1);
477
- pm_buffer_append_bytes(buffer, pm_string_source(&((pm_call_or_write_node_t *)node)->write_name), pm_string_length(&((pm_call_or_write_node_t *)node)->write_name));
478
- pm_buffer_append_str(buffer, "\"", 1);
431
+ pm_buffer_append_str(buffer, ", ", 2); char read_name_buffer[12];
432
+ snprintf(read_name_buffer, sizeof(read_name_buffer), "%u", ((pm_call_or_write_node_t *)node)->read_name);
433
+ pm_buffer_append_str(buffer, read_name_buffer, strlen(read_name_buffer));
434
+ pm_buffer_append_str(buffer, ", ", 2); char write_name_buffer[12];
435
+ snprintf(write_name_buffer, sizeof(write_name_buffer), "%u", ((pm_call_or_write_node_t *)node)->write_name);
436
+ pm_buffer_append_str(buffer, write_name_buffer, strlen(write_name_buffer));
479
437
  pm_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((pm_call_or_write_node_t *)node)->operator_loc);
480
438
  pm_buffer_append_str(buffer, ", ", 2); prettyprint_node(buffer, parser, (pm_node_t *)((pm_call_or_write_node_t *)node)->value);
481
439
  pm_buffer_append_str(buffer, ")", 1);
@@ -904,7 +862,7 @@ prettyprint_node(pm_buffer_t *buffer, pm_parser_t *parser, pm_node_t *node) {
904
862
  }
905
863
  pm_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((pm_flip_flop_node_t *)node)->operator_loc);
906
864
  pm_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
907
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
865
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
908
866
  pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
909
867
  pm_buffer_append_str(buffer, ")", 1);
910
868
  break;
@@ -1116,6 +1074,105 @@ prettyprint_node(pm_buffer_t *buffer, pm_parser_t *parser, pm_node_t *node) {
1116
1074
  pm_buffer_append_str(buffer, ")", 1);
1117
1075
  break;
1118
1076
  }
1077
+ case PM_INDEX_AND_WRITE_NODE: {
1078
+ pm_buffer_append_str(buffer, "IndexAndWriteNode(", 18);
1079
+ if (((pm_index_and_write_node_t *)node)->receiver == NULL) {
1080
+ pm_buffer_append_str(buffer, "nil", 3);
1081
+ } else {
1082
+ prettyprint_node(buffer, parser, (pm_node_t *)((pm_index_and_write_node_t *)node)->receiver);
1083
+ }
1084
+ pm_buffer_append_str(buffer, ", ", 2); if (((pm_index_and_write_node_t *)node)->call_operator_loc.start == NULL) {
1085
+ pm_buffer_append_str(buffer, "nil", 3);
1086
+ } else {
1087
+ prettyprint_location(buffer, parser, &((pm_index_and_write_node_t *)node)->call_operator_loc);
1088
+ }
1089
+ pm_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((pm_index_and_write_node_t *)node)->opening_loc);
1090
+ pm_buffer_append_str(buffer, ", ", 2); if (((pm_index_and_write_node_t *)node)->arguments == NULL) {
1091
+ pm_buffer_append_str(buffer, "nil", 3);
1092
+ } else {
1093
+ prettyprint_node(buffer, parser, (pm_node_t *)((pm_index_and_write_node_t *)node)->arguments);
1094
+ }
1095
+ pm_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((pm_index_and_write_node_t *)node)->closing_loc);
1096
+ pm_buffer_append_str(buffer, ", ", 2); if (((pm_index_and_write_node_t *)node)->block == NULL) {
1097
+ pm_buffer_append_str(buffer, "nil", 3);
1098
+ } else {
1099
+ prettyprint_node(buffer, parser, (pm_node_t *)((pm_index_and_write_node_t *)node)->block);
1100
+ }
1101
+ pm_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
1102
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
1103
+ pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1104
+ pm_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((pm_index_and_write_node_t *)node)->operator_loc);
1105
+ pm_buffer_append_str(buffer, ", ", 2); prettyprint_node(buffer, parser, (pm_node_t *)((pm_index_and_write_node_t *)node)->value);
1106
+ pm_buffer_append_str(buffer, ")", 1);
1107
+ break;
1108
+ }
1109
+ case PM_INDEX_OPERATOR_WRITE_NODE: {
1110
+ pm_buffer_append_str(buffer, "IndexOperatorWriteNode(", 23);
1111
+ if (((pm_index_operator_write_node_t *)node)->receiver == NULL) {
1112
+ pm_buffer_append_str(buffer, "nil", 3);
1113
+ } else {
1114
+ prettyprint_node(buffer, parser, (pm_node_t *)((pm_index_operator_write_node_t *)node)->receiver);
1115
+ }
1116
+ pm_buffer_append_str(buffer, ", ", 2); if (((pm_index_operator_write_node_t *)node)->call_operator_loc.start == NULL) {
1117
+ pm_buffer_append_str(buffer, "nil", 3);
1118
+ } else {
1119
+ prettyprint_location(buffer, parser, &((pm_index_operator_write_node_t *)node)->call_operator_loc);
1120
+ }
1121
+ pm_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((pm_index_operator_write_node_t *)node)->opening_loc);
1122
+ pm_buffer_append_str(buffer, ", ", 2); if (((pm_index_operator_write_node_t *)node)->arguments == NULL) {
1123
+ pm_buffer_append_str(buffer, "nil", 3);
1124
+ } else {
1125
+ prettyprint_node(buffer, parser, (pm_node_t *)((pm_index_operator_write_node_t *)node)->arguments);
1126
+ }
1127
+ pm_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((pm_index_operator_write_node_t *)node)->closing_loc);
1128
+ pm_buffer_append_str(buffer, ", ", 2); if (((pm_index_operator_write_node_t *)node)->block == NULL) {
1129
+ pm_buffer_append_str(buffer, "nil", 3);
1130
+ } else {
1131
+ prettyprint_node(buffer, parser, (pm_node_t *)((pm_index_operator_write_node_t *)node)->block);
1132
+ }
1133
+ pm_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
1134
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
1135
+ pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1136
+ pm_buffer_append_str(buffer, ", ", 2); char operator_buffer[12];
1137
+ snprintf(operator_buffer, sizeof(operator_buffer), "%u", ((pm_index_operator_write_node_t *)node)->operator);
1138
+ pm_buffer_append_str(buffer, operator_buffer, strlen(operator_buffer));
1139
+ pm_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((pm_index_operator_write_node_t *)node)->operator_loc);
1140
+ pm_buffer_append_str(buffer, ", ", 2); prettyprint_node(buffer, parser, (pm_node_t *)((pm_index_operator_write_node_t *)node)->value);
1141
+ pm_buffer_append_str(buffer, ")", 1);
1142
+ break;
1143
+ }
1144
+ case PM_INDEX_OR_WRITE_NODE: {
1145
+ pm_buffer_append_str(buffer, "IndexOrWriteNode(", 17);
1146
+ if (((pm_index_or_write_node_t *)node)->receiver == NULL) {
1147
+ pm_buffer_append_str(buffer, "nil", 3);
1148
+ } else {
1149
+ prettyprint_node(buffer, parser, (pm_node_t *)((pm_index_or_write_node_t *)node)->receiver);
1150
+ }
1151
+ pm_buffer_append_str(buffer, ", ", 2); if (((pm_index_or_write_node_t *)node)->call_operator_loc.start == NULL) {
1152
+ pm_buffer_append_str(buffer, "nil", 3);
1153
+ } else {
1154
+ prettyprint_location(buffer, parser, &((pm_index_or_write_node_t *)node)->call_operator_loc);
1155
+ }
1156
+ pm_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((pm_index_or_write_node_t *)node)->opening_loc);
1157
+ pm_buffer_append_str(buffer, ", ", 2); if (((pm_index_or_write_node_t *)node)->arguments == NULL) {
1158
+ pm_buffer_append_str(buffer, "nil", 3);
1159
+ } else {
1160
+ prettyprint_node(buffer, parser, (pm_node_t *)((pm_index_or_write_node_t *)node)->arguments);
1161
+ }
1162
+ pm_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((pm_index_or_write_node_t *)node)->closing_loc);
1163
+ pm_buffer_append_str(buffer, ", ", 2); if (((pm_index_or_write_node_t *)node)->block == NULL) {
1164
+ pm_buffer_append_str(buffer, "nil", 3);
1165
+ } else {
1166
+ prettyprint_node(buffer, parser, (pm_node_t *)((pm_index_or_write_node_t *)node)->block);
1167
+ }
1168
+ pm_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
1169
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
1170
+ pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1171
+ pm_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((pm_index_or_write_node_t *)node)->operator_loc);
1172
+ pm_buffer_append_str(buffer, ", ", 2); prettyprint_node(buffer, parser, (pm_node_t *)((pm_index_or_write_node_t *)node)->value);
1173
+ pm_buffer_append_str(buffer, ")", 1);
1174
+ break;
1175
+ }
1119
1176
  case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
1120
1177
  pm_buffer_append_str(buffer, "InstanceVariableAndWriteNode(", 29);
1121
1178
  char name_buffer[12];
@@ -1182,7 +1239,7 @@ prettyprint_node(pm_buffer_t *buffer, pm_parser_t *parser, pm_node_t *node) {
1182
1239
  case PM_INTEGER_NODE: {
1183
1240
  pm_buffer_append_str(buffer, "IntegerNode(", 12);
1184
1241
  char flags_buffer[12];
1185
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
1242
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
1186
1243
  pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1187
1244
  pm_buffer_append_str(buffer, ")", 1);
1188
1245
  break;
@@ -1198,7 +1255,7 @@ prettyprint_node(pm_buffer_t *buffer, pm_parser_t *parser, pm_node_t *node) {
1198
1255
  pm_buffer_append_str(buffer, "]", 1);
1199
1256
  pm_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((pm_interpolated_match_last_line_node_t *)node)->closing_loc);
1200
1257
  pm_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
1201
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
1258
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
1202
1259
  pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1203
1260
  pm_buffer_append_str(buffer, ")", 1);
1204
1261
  break;
@@ -1214,7 +1271,7 @@ prettyprint_node(pm_buffer_t *buffer, pm_parser_t *parser, pm_node_t *node) {
1214
1271
  pm_buffer_append_str(buffer, "]", 1);
1215
1272
  pm_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((pm_interpolated_regular_expression_node_t *)node)->closing_loc);
1216
1273
  pm_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
1217
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
1274
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
1218
1275
  pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1219
1276
  pm_buffer_append_str(buffer, ")", 1);
1220
1277
  break;
@@ -1433,7 +1490,7 @@ prettyprint_node(pm_buffer_t *buffer, pm_parser_t *parser, pm_node_t *node) {
1433
1490
  pm_buffer_append_bytes(buffer, pm_string_source(&((pm_match_last_line_node_t *)node)->unescaped), pm_string_length(&((pm_match_last_line_node_t *)node)->unescaped));
1434
1491
  pm_buffer_append_str(buffer, "\"", 1);
1435
1492
  pm_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
1436
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
1493
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
1437
1494
  pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1438
1495
  pm_buffer_append_str(buffer, ")", 1);
1439
1496
  break;
@@ -1717,7 +1774,7 @@ prettyprint_node(pm_buffer_t *buffer, pm_parser_t *parser, pm_node_t *node) {
1717
1774
  }
1718
1775
  pm_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((pm_range_node_t *)node)->operator_loc);
1719
1776
  pm_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
1720
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
1777
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
1721
1778
  pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1722
1779
  pm_buffer_append_str(buffer, ")", 1);
1723
1780
  break;
@@ -1742,7 +1799,7 @@ prettyprint_node(pm_buffer_t *buffer, pm_parser_t *parser, pm_node_t *node) {
1742
1799
  pm_buffer_append_bytes(buffer, pm_string_source(&((pm_regular_expression_node_t *)node)->unescaped), pm_string_length(&((pm_regular_expression_node_t *)node)->unescaped));
1743
1800
  pm_buffer_append_str(buffer, "\"", 1);
1744
1801
  pm_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
1745
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
1802
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
1746
1803
  pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1747
1804
  pm_buffer_append_str(buffer, ")", 1);
1748
1805
  break;
@@ -1919,7 +1976,7 @@ prettyprint_node(pm_buffer_t *buffer, pm_parser_t *parser, pm_node_t *node) {
1919
1976
  case PM_STRING_NODE: {
1920
1977
  pm_buffer_append_str(buffer, "StringNode(", 11);
1921
1978
  char flags_buffer[12];
1922
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
1979
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
1923
1980
  pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1924
1981
  pm_buffer_append_str(buffer, ", ", 2); if (((pm_string_node_t *)node)->opening_loc.start == NULL) {
1925
1982
  pm_buffer_append_str(buffer, "nil", 3);
@@ -2041,7 +2098,7 @@ prettyprint_node(pm_buffer_t *buffer, pm_parser_t *parser, pm_node_t *node) {
2041
2098
  prettyprint_node(buffer, parser, (pm_node_t *)((pm_until_node_t *)node)->statements);
2042
2099
  }
2043
2100
  pm_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
2044
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
2101
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
2045
2102
  pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
2046
2103
  pm_buffer_append_str(buffer, ")", 1);
2047
2104
  break;
@@ -2078,7 +2135,7 @@ prettyprint_node(pm_buffer_t *buffer, pm_parser_t *parser, pm_node_t *node) {
2078
2135
  prettyprint_node(buffer, parser, (pm_node_t *)((pm_while_node_t *)node)->statements);
2079
2136
  }
2080
2137
  pm_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
2081
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
2138
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", (uint32_t)(node->flags & ~PM_NODE_FLAG_COMMON_MASK));
2082
2139
  pm_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
2083
2140
  pm_buffer_append_str(buffer, ")", 1);
2084
2141
  break;