yarp 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/src/enc/yp_unicode.c CHANGED
@@ -10,7 +10,7 @@ typedef uint32_t yp_unicode_codepoint_t;
10
10
  // this table is different from other encodings where we used a lookup table
11
11
  // because the indices of those tables are the byte representations, not the
12
12
  // codepoints themselves.
13
- uint8_t yp_encoding_unicode_table[256] = {
13
+ const uint8_t yp_encoding_unicode_table[256] = {
14
14
  // 0 1 2 3 4 5 6 7 8 9 A B C D E F
15
15
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x
16
16
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x
@@ -31,7 +31,7 @@ uint8_t yp_encoding_unicode_table[256] = {
31
31
  };
32
32
 
33
33
  #define UNICODE_ALPHA_CODEPOINTS_LENGTH 1450
34
- static yp_unicode_codepoint_t unicode_alpha_codepoints[UNICODE_ALPHA_CODEPOINTS_LENGTH] = {
34
+ static const yp_unicode_codepoint_t unicode_alpha_codepoints[UNICODE_ALPHA_CODEPOINTS_LENGTH] = {
35
35
  0x100, 0x2C1,
36
36
  0x2C6, 0x2D1,
37
37
  0x2E0, 0x2E4,
@@ -760,7 +760,7 @@ static yp_unicode_codepoint_t unicode_alpha_codepoints[UNICODE_ALPHA_CODEPOINTS_
760
760
  };
761
761
 
762
762
  #define UNICODE_ALNUM_CODEPOINTS_LENGTH 1528
763
- static yp_unicode_codepoint_t unicode_alnum_codepoints[UNICODE_ALNUM_CODEPOINTS_LENGTH] = {
763
+ static const yp_unicode_codepoint_t unicode_alnum_codepoints[UNICODE_ALNUM_CODEPOINTS_LENGTH] = {
764
764
  0x100, 0x2C1,
765
765
  0x2C6, 0x2D1,
766
766
  0x2E0, 0x2E4,
@@ -1528,7 +1528,7 @@ static yp_unicode_codepoint_t unicode_alnum_codepoints[UNICODE_ALNUM_CODEPOINTS_
1528
1528
  };
1529
1529
 
1530
1530
  #define UNICODE_ISUPPER_CODEPOINTS_LENGTH 1296
1531
- static yp_unicode_codepoint_t unicode_isupper_codepoints[UNICODE_ISUPPER_CODEPOINTS_LENGTH] = {
1531
+ static const yp_unicode_codepoint_t unicode_isupper_codepoints[UNICODE_ISUPPER_CODEPOINTS_LENGTH] = {
1532
1532
  0x100, 0x100,
1533
1533
  0x102, 0x102,
1534
1534
  0x104, 0x104,
@@ -2180,7 +2180,7 @@ static yp_unicode_codepoint_t unicode_isupper_codepoints[UNICODE_ISUPPER_CODEPOI
2180
2180
  };
2181
2181
 
2182
2182
  static bool
2183
- yp_unicode_codepoint_match(yp_unicode_codepoint_t codepoint, yp_unicode_codepoint_t *codepoints, size_t size) {
2183
+ yp_unicode_codepoint_match(yp_unicode_codepoint_t codepoint, const yp_unicode_codepoint_t *codepoints, size_t size) {
2184
2184
  size_t start = 0;
2185
2185
  size_t end = size;
2186
2186
 
data/src/node.c CHANGED
@@ -60,8 +60,15 @@ YP_EXPORTED_FUNCTION void
60
60
  yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
61
61
  switch (YP_NODE_TYPE(node)) {
62
62
  #line 57 "node.c.erb"
63
- case YP_ALIAS_NODE: {
64
- yp_alias_node_t *cast = (yp_alias_node_t *) node;
63
+ case YP_ALIAS_GLOBAL_VARIABLE_NODE: {
64
+ yp_alias_global_variable_node_t *cast = (yp_alias_global_variable_node_t *) node;
65
+ yp_node_destroy(parser, (yp_node_t *)cast->new_name);
66
+ yp_node_destroy(parser, (yp_node_t *)cast->old_name);
67
+ break;
68
+ }
69
+ #line 57 "node.c.erb"
70
+ case YP_ALIAS_METHOD_NODE: {
71
+ yp_alias_method_node_t *cast = (yp_alias_method_node_t *) node;
65
72
  yp_node_destroy(parser, (yp_node_t *)cast->new_name);
66
73
  yp_node_destroy(parser, (yp_node_t *)cast->old_name);
67
74
  break;
@@ -562,6 +569,12 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
562
569
  yp_node_destroy(parser, (yp_node_t *)cast->numeric);
563
570
  break;
564
571
  }
572
+ #line 57 "node.c.erb"
573
+ case YP_IMPLICIT_NODE: {
574
+ yp_implicit_node_t *cast = (yp_implicit_node_t *) node;
575
+ yp_node_destroy(parser, (yp_node_t *)cast->value);
576
+ break;
577
+ }
565
578
  #line 57 "node.c.erb"
566
579
  case YP_IN_NODE: {
567
580
  yp_in_node_t *cast = (yp_in_node_t *) node;
@@ -607,6 +620,12 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
607
620
  case YP_INTEGER_NODE: {
608
621
  break;
609
622
  }
623
+ #line 57 "node.c.erb"
624
+ case YP_INTERPOLATED_MATCH_LAST_LINE_NODE: {
625
+ yp_interpolated_match_last_line_node_t *cast = (yp_interpolated_match_last_line_node_t *) node;
626
+ yp_node_list_free(parser, &cast->parts);
627
+ break;
628
+ }
610
629
  #line 57 "node.c.erb"
611
630
  case YP_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
612
631
  yp_interpolated_regular_expression_node_t *cast = (yp_interpolated_regular_expression_node_t *) node;
@@ -693,6 +712,12 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
693
712
  yp_node_destroy(parser, (yp_node_t *)cast->value);
694
713
  break;
695
714
  }
715
+ #line 57 "node.c.erb"
716
+ case YP_MATCH_LAST_LINE_NODE: {
717
+ yp_match_last_line_node_t *cast = (yp_match_last_line_node_t *) node;
718
+ yp_string_free(&cast->unescaped);
719
+ break;
720
+ }
696
721
  #line 57 "node.c.erb"
697
722
  case YP_MATCH_PREDICATE_NODE: {
698
723
  yp_match_predicate_node_t *cast = (yp_match_predicate_node_t *) node;
@@ -707,6 +732,13 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
707
732
  yp_node_destroy(parser, (yp_node_t *)cast->pattern);
708
733
  break;
709
734
  }
735
+ #line 57 "node.c.erb"
736
+ case YP_MATCH_WRITE_NODE: {
737
+ yp_match_write_node_t *cast = (yp_match_write_node_t *) node;
738
+ yp_node_destroy(parser, (yp_node_t *)cast->call);
739
+ yp_constant_id_list_free(&cast->locals);
740
+ break;
741
+ }
710
742
  #line 57 "node.c.erb"
711
743
  case YP_MISSING_NODE: {
712
744
  break;
@@ -772,10 +804,10 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
772
804
  yp_parameters_node_t *cast = (yp_parameters_node_t *) node;
773
805
  yp_node_list_free(parser, &cast->requireds);
774
806
  yp_node_list_free(parser, &cast->optionals);
775
- yp_node_list_free(parser, &cast->posts);
776
807
  if (cast->rest != NULL) {
777
808
  yp_node_destroy(parser, (yp_node_t *)cast->rest);
778
809
  }
810
+ yp_node_list_free(parser, &cast->posts);
779
811
  yp_node_list_free(parser, &cast->keywords);
780
812
  if (cast->keyword_rest != NULL) {
781
813
  yp_node_destroy(parser, (yp_node_t *)cast->keyword_rest);
@@ -1056,8 +1088,16 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1056
1088
  case YP_SCOPE_NODE:
1057
1089
  return;
1058
1090
  #line 102 "node.c.erb"
1059
- case YP_ALIAS_NODE: {
1060
- yp_alias_node_t *cast = (yp_alias_node_t *) node;
1091
+ case YP_ALIAS_GLOBAL_VARIABLE_NODE: {
1092
+ yp_alias_global_variable_node_t *cast = (yp_alias_global_variable_node_t *) node;
1093
+ memsize->memsize += sizeof(*cast);
1094
+ yp_node_memsize_node((yp_node_t *)cast->new_name, memsize);
1095
+ yp_node_memsize_node((yp_node_t *)cast->old_name, memsize);
1096
+ break;
1097
+ }
1098
+ #line 102 "node.c.erb"
1099
+ case YP_ALIAS_METHOD_NODE: {
1100
+ yp_alias_method_node_t *cast = (yp_alias_method_node_t *) node;
1061
1101
  memsize->memsize += sizeof(*cast);
1062
1102
  yp_node_memsize_node((yp_node_t *)cast->new_name, memsize);
1063
1103
  yp_node_memsize_node((yp_node_t *)cast->old_name, memsize);
@@ -1636,6 +1676,13 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1636
1676
  yp_node_memsize_node((yp_node_t *)cast->numeric, memsize);
1637
1677
  break;
1638
1678
  }
1679
+ #line 102 "node.c.erb"
1680
+ case YP_IMPLICIT_NODE: {
1681
+ yp_implicit_node_t *cast = (yp_implicit_node_t *) node;
1682
+ memsize->memsize += sizeof(*cast);
1683
+ yp_node_memsize_node((yp_node_t *)cast->value, memsize);
1684
+ break;
1685
+ }
1639
1686
  #line 102 "node.c.erb"
1640
1687
  case YP_IN_NODE: {
1641
1688
  yp_in_node_t *cast = (yp_in_node_t *) node;
@@ -1692,6 +1739,13 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1692
1739
  memsize->memsize += sizeof(*cast);
1693
1740
  break;
1694
1741
  }
1742
+ #line 102 "node.c.erb"
1743
+ case YP_INTERPOLATED_MATCH_LAST_LINE_NODE: {
1744
+ yp_interpolated_match_last_line_node_t *cast = (yp_interpolated_match_last_line_node_t *) node;
1745
+ memsize->memsize += sizeof(*cast);
1746
+ yp_node_list_memsize(&cast->parts, memsize);
1747
+ break;
1748
+ }
1695
1749
  #line 102 "node.c.erb"
1696
1750
  case YP_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
1697
1751
  yp_interpolated_regular_expression_node_t *cast = (yp_interpolated_regular_expression_node_t *) node;
@@ -1795,6 +1849,13 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1795
1849
  yp_node_memsize_node((yp_node_t *)cast->value, memsize);
1796
1850
  break;
1797
1851
  }
1852
+ #line 102 "node.c.erb"
1853
+ case YP_MATCH_LAST_LINE_NODE: {
1854
+ yp_match_last_line_node_t *cast = (yp_match_last_line_node_t *) node;
1855
+ memsize->memsize += sizeof(*cast);
1856
+ memsize->memsize += yp_string_memsize(&cast->unescaped);
1857
+ break;
1858
+ }
1798
1859
  #line 102 "node.c.erb"
1799
1860
  case YP_MATCH_PREDICATE_NODE: {
1800
1861
  yp_match_predicate_node_t *cast = (yp_match_predicate_node_t *) node;
@@ -1811,6 +1872,14 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1811
1872
  yp_node_memsize_node((yp_node_t *)cast->pattern, memsize);
1812
1873
  break;
1813
1874
  }
1875
+ #line 102 "node.c.erb"
1876
+ case YP_MATCH_WRITE_NODE: {
1877
+ yp_match_write_node_t *cast = (yp_match_write_node_t *) node;
1878
+ memsize->memsize += sizeof(*cast);
1879
+ yp_node_memsize_node((yp_node_t *)cast->call, memsize);
1880
+ memsize->memsize += yp_constant_id_list_memsize(&cast->locals);
1881
+ break;
1882
+ }
1814
1883
  #line 102 "node.c.erb"
1815
1884
  case YP_MISSING_NODE: {
1816
1885
  yp_missing_node_t *cast = (yp_missing_node_t *) node;
@@ -1891,10 +1960,10 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1891
1960
  memsize->memsize += sizeof(*cast);
1892
1961
  yp_node_list_memsize(&cast->requireds, memsize);
1893
1962
  yp_node_list_memsize(&cast->optionals, memsize);
1894
- yp_node_list_memsize(&cast->posts, memsize);
1895
1963
  if (cast->rest != NULL) {
1896
1964
  yp_node_memsize_node((yp_node_t *)cast->rest, memsize);
1897
1965
  }
1966
+ yp_node_list_memsize(&cast->posts, memsize);
1898
1967
  yp_node_list_memsize(&cast->keywords, memsize);
1899
1968
  if (cast->keyword_rest != NULL) {
1900
1969
  yp_node_memsize_node((yp_node_t *)cast->keyword_rest, memsize);
@@ -2217,8 +2286,10 @@ YP_EXPORTED_FUNCTION const char *
2217
2286
  yp_node_type_to_str(yp_node_type_t node_type)
2218
2287
  {
2219
2288
  switch (node_type) {
2220
- case YP_ALIAS_NODE:
2221
- return "YP_ALIAS_NODE";
2289
+ case YP_ALIAS_GLOBAL_VARIABLE_NODE:
2290
+ return "YP_ALIAS_GLOBAL_VARIABLE_NODE";
2291
+ case YP_ALIAS_METHOD_NODE:
2292
+ return "YP_ALIAS_METHOD_NODE";
2222
2293
  case YP_ALTERNATION_PATTERN_NODE:
2223
2294
  return "YP_ALTERNATION_PATTERN_NODE";
2224
2295
  case YP_AND_NODE:
@@ -2347,6 +2418,8 @@ yp_node_type_to_str(yp_node_type_t node_type)
2347
2418
  return "YP_IF_NODE";
2348
2419
  case YP_IMAGINARY_NODE:
2349
2420
  return "YP_IMAGINARY_NODE";
2421
+ case YP_IMPLICIT_NODE:
2422
+ return "YP_IMPLICIT_NODE";
2350
2423
  case YP_IN_NODE:
2351
2424
  return "YP_IN_NODE";
2352
2425
  case YP_INSTANCE_VARIABLE_AND_WRITE_NODE:
@@ -2363,6 +2436,8 @@ yp_node_type_to_str(yp_node_type_t node_type)
2363
2436
  return "YP_INSTANCE_VARIABLE_WRITE_NODE";
2364
2437
  case YP_INTEGER_NODE:
2365
2438
  return "YP_INTEGER_NODE";
2439
+ case YP_INTERPOLATED_MATCH_LAST_LINE_NODE:
2440
+ return "YP_INTERPOLATED_MATCH_LAST_LINE_NODE";
2366
2441
  case YP_INTERPOLATED_REGULAR_EXPRESSION_NODE:
2367
2442
  return "YP_INTERPOLATED_REGULAR_EXPRESSION_NODE";
2368
2443
  case YP_INTERPOLATED_STRING_NODE:
@@ -2391,10 +2466,14 @@ yp_node_type_to_str(yp_node_type_t node_type)
2391
2466
  return "YP_LOCAL_VARIABLE_TARGET_NODE";
2392
2467
  case YP_LOCAL_VARIABLE_WRITE_NODE:
2393
2468
  return "YP_LOCAL_VARIABLE_WRITE_NODE";
2469
+ case YP_MATCH_LAST_LINE_NODE:
2470
+ return "YP_MATCH_LAST_LINE_NODE";
2394
2471
  case YP_MATCH_PREDICATE_NODE:
2395
2472
  return "YP_MATCH_PREDICATE_NODE";
2396
2473
  case YP_MATCH_REQUIRED_NODE:
2397
2474
  return "YP_MATCH_REQUIRED_NODE";
2475
+ case YP_MATCH_WRITE_NODE:
2476
+ return "YP_MATCH_WRITE_NODE";
2398
2477
  case YP_MISSING_NODE:
2399
2478
  return "YP_MISSING_NODE";
2400
2479
  case YP_MODULE_NODE:
data/src/prettyprint.c CHANGED
@@ -27,11 +27,19 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
27
27
  // of the AST
28
28
  case YP_SCOPE_NODE:
29
29
  return;
30
- case YP_ALIAS_NODE: {
31
- yp_buffer_append_str(buffer, "AliasNode(", 10);
32
- prettyprint_node(buffer, parser, (yp_node_t *)((yp_alias_node_t *)node)->new_name);
33
- yp_buffer_append_str(buffer, ", ", 2); prettyprint_node(buffer, parser, (yp_node_t *)((yp_alias_node_t *)node)->old_name);
34
- yp_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((yp_alias_node_t *)node)->keyword_loc);
30
+ case YP_ALIAS_GLOBAL_VARIABLE_NODE: {
31
+ yp_buffer_append_str(buffer, "AliasGlobalVariableNode(", 24);
32
+ prettyprint_node(buffer, parser, (yp_node_t *)((yp_alias_global_variable_node_t *)node)->new_name);
33
+ yp_buffer_append_str(buffer, ", ", 2); prettyprint_node(buffer, parser, (yp_node_t *)((yp_alias_global_variable_node_t *)node)->old_name);
34
+ yp_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((yp_alias_global_variable_node_t *)node)->keyword_loc);
35
+ yp_buffer_append_str(buffer, ")", 1);
36
+ break;
37
+ }
38
+ case YP_ALIAS_METHOD_NODE: {
39
+ yp_buffer_append_str(buffer, "AliasMethodNode(", 16);
40
+ prettyprint_node(buffer, parser, (yp_node_t *)((yp_alias_method_node_t *)node)->new_name);
41
+ yp_buffer_append_str(buffer, ", ", 2); prettyprint_node(buffer, parser, (yp_node_t *)((yp_alias_method_node_t *)node)->old_name);
42
+ yp_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((yp_alias_method_node_t *)node)->keyword_loc);
35
43
  yp_buffer_append_str(buffer, ")", 1);
36
44
  break;
37
45
  }
@@ -319,7 +327,7 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
319
327
  prettyprint_location(buffer, parser, &((yp_call_and_write_node_t *)node)->closing_loc);
320
328
  }
321
329
  yp_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
322
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 1);
330
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
323
331
  yp_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
324
332
  yp_buffer_append_str(buffer, ", ", 2); yp_buffer_append_str(buffer, "\"", 1);
325
333
  yp_buffer_append_bytes(buffer, yp_string_source(&((yp_call_and_write_node_t *)node)->read_name), yp_string_length(&((yp_call_and_write_node_t *)node)->read_name));
@@ -370,7 +378,7 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
370
378
  prettyprint_node(buffer, parser, (yp_node_t *)((yp_call_node_t *)node)->block);
371
379
  }
372
380
  yp_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
373
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 1);
381
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
374
382
  yp_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
375
383
  yp_buffer_append_str(buffer, ", ", 2); yp_buffer_append_str(buffer, "\"", 1);
376
384
  yp_buffer_append_bytes(buffer, yp_string_source(&((yp_call_node_t *)node)->name), yp_string_length(&((yp_call_node_t *)node)->name));
@@ -411,7 +419,7 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
411
419
  prettyprint_location(buffer, parser, &((yp_call_operator_write_node_t *)node)->closing_loc);
412
420
  }
413
421
  yp_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
414
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 1);
422
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
415
423
  yp_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
416
424
  yp_buffer_append_str(buffer, ", ", 2); yp_buffer_append_str(buffer, "\"", 1);
417
425
  yp_buffer_append_bytes(buffer, yp_string_source(&((yp_call_operator_write_node_t *)node)->read_name), yp_string_length(&((yp_call_operator_write_node_t *)node)->read_name));
@@ -460,7 +468,7 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
460
468
  prettyprint_location(buffer, parser, &((yp_call_or_write_node_t *)node)->closing_loc);
461
469
  }
462
470
  yp_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
463
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 1);
471
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
464
472
  yp_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
465
473
  yp_buffer_append_str(buffer, ", ", 2); yp_buffer_append_str(buffer, "\"", 1);
466
474
  yp_buffer_append_bytes(buffer, yp_string_source(&((yp_call_or_write_node_t *)node)->read_name), yp_string_length(&((yp_call_or_write_node_t *)node)->read_name));
@@ -896,7 +904,7 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
896
904
  }
897
905
  yp_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((yp_flip_flop_node_t *)node)->operator_loc);
898
906
  yp_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
899
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 1);
907
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
900
908
  yp_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
901
909
  yp_buffer_append_str(buffer, ")", 1);
902
910
  break;
@@ -1085,6 +1093,12 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
1085
1093
  yp_buffer_append_str(buffer, ")", 1);
1086
1094
  break;
1087
1095
  }
1096
+ case YP_IMPLICIT_NODE: {
1097
+ yp_buffer_append_str(buffer, "ImplicitNode(", 13);
1098
+ prettyprint_node(buffer, parser, (yp_node_t *)((yp_implicit_node_t *)node)->value);
1099
+ yp_buffer_append_str(buffer, ")", 1);
1100
+ break;
1101
+ }
1088
1102
  case YP_IN_NODE: {
1089
1103
  yp_buffer_append_str(buffer, "InNode(", 7);
1090
1104
  prettyprint_node(buffer, parser, (yp_node_t *)((yp_in_node_t *)node)->pattern);
@@ -1167,6 +1181,25 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
1167
1181
  }
1168
1182
  case YP_INTEGER_NODE: {
1169
1183
  yp_buffer_append_str(buffer, "IntegerNode(", 12);
1184
+ char flags_buffer[12];
1185
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
1186
+ yp_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1187
+ yp_buffer_append_str(buffer, ")", 1);
1188
+ break;
1189
+ }
1190
+ case YP_INTERPOLATED_MATCH_LAST_LINE_NODE: {
1191
+ yp_buffer_append_str(buffer, "InterpolatedMatchLastLineNode(", 30);
1192
+ prettyprint_location(buffer, parser, &((yp_interpolated_match_last_line_node_t *)node)->opening_loc);
1193
+ yp_buffer_append_str(buffer, ", ", 2); yp_buffer_append_str(buffer, "[", 1);
1194
+ for (uint32_t index = 0; index < ((yp_interpolated_match_last_line_node_t *)node)->parts.size; index++) {
1195
+ if (index != 0) yp_buffer_append_str(buffer, ", ", 2);
1196
+ prettyprint_node(buffer, parser, (yp_node_t *) ((yp_interpolated_match_last_line_node_t *) node)->parts.nodes[index]);
1197
+ }
1198
+ yp_buffer_append_str(buffer, "]", 1);
1199
+ yp_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((yp_interpolated_match_last_line_node_t *)node)->closing_loc);
1200
+ yp_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
1201
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
1202
+ yp_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1170
1203
  yp_buffer_append_str(buffer, ")", 1);
1171
1204
  break;
1172
1205
  }
@@ -1181,7 +1214,7 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
1181
1214
  yp_buffer_append_str(buffer, "]", 1);
1182
1215
  yp_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((yp_interpolated_regular_expression_node_t *)node)->closing_loc);
1183
1216
  yp_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
1184
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 1);
1217
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
1185
1218
  yp_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1186
1219
  yp_buffer_append_str(buffer, ")", 1);
1187
1220
  break;
@@ -1391,6 +1424,20 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
1391
1424
  yp_buffer_append_str(buffer, ")", 1);
1392
1425
  break;
1393
1426
  }
1427
+ case YP_MATCH_LAST_LINE_NODE: {
1428
+ yp_buffer_append_str(buffer, "MatchLastLineNode(", 18);
1429
+ prettyprint_location(buffer, parser, &((yp_match_last_line_node_t *)node)->opening_loc);
1430
+ yp_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((yp_match_last_line_node_t *)node)->content_loc);
1431
+ yp_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((yp_match_last_line_node_t *)node)->closing_loc);
1432
+ yp_buffer_append_str(buffer, ", ", 2); yp_buffer_append_str(buffer, "\"", 1);
1433
+ yp_buffer_append_bytes(buffer, yp_string_source(&((yp_match_last_line_node_t *)node)->unescaped), yp_string_length(&((yp_match_last_line_node_t *)node)->unescaped));
1434
+ yp_buffer_append_str(buffer, "\"", 1);
1435
+ yp_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
1436
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
1437
+ yp_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1438
+ yp_buffer_append_str(buffer, ")", 1);
1439
+ break;
1440
+ }
1394
1441
  case YP_MATCH_PREDICATE_NODE: {
1395
1442
  yp_buffer_append_str(buffer, "MatchPredicateNode(", 19);
1396
1443
  prettyprint_node(buffer, parser, (yp_node_t *)((yp_match_predicate_node_t *)node)->value);
@@ -1407,6 +1454,20 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
1407
1454
  yp_buffer_append_str(buffer, ")", 1);
1408
1455
  break;
1409
1456
  }
1457
+ case YP_MATCH_WRITE_NODE: {
1458
+ yp_buffer_append_str(buffer, "MatchWriteNode(", 15);
1459
+ prettyprint_node(buffer, parser, (yp_node_t *)((yp_match_write_node_t *)node)->call);
1460
+ yp_buffer_append_str(buffer, ", ", 2); yp_buffer_append_str(buffer, "[", 1);
1461
+ for (uint32_t index = 0; index < ((yp_match_write_node_t *)node)->locals.size; index++) {
1462
+ if (index != 0) yp_buffer_append_str(buffer, ", ", 2);
1463
+ char locals_buffer[12];
1464
+ snprintf(locals_buffer, sizeof(locals_buffer), "%u", ((yp_match_write_node_t *)node)->locals.ids[index]);
1465
+ yp_buffer_append_str(buffer, locals_buffer, strlen(locals_buffer));
1466
+ }
1467
+ yp_buffer_append_str(buffer, "]", 1);
1468
+ yp_buffer_append_str(buffer, ")", 1);
1469
+ break;
1470
+ }
1410
1471
  case YP_MISSING_NODE: {
1411
1472
  yp_buffer_append_str(buffer, "MissingNode(", 12);
1412
1473
  yp_buffer_append_str(buffer, ")", 1);
@@ -1544,17 +1605,17 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
1544
1605
  prettyprint_node(buffer, parser, (yp_node_t *) ((yp_parameters_node_t *) node)->optionals.nodes[index]);
1545
1606
  }
1546
1607
  yp_buffer_append_str(buffer, "]", 1);
1608
+ yp_buffer_append_str(buffer, ", ", 2); if (((yp_parameters_node_t *)node)->rest == NULL) {
1609
+ yp_buffer_append_str(buffer, "nil", 3);
1610
+ } else {
1611
+ prettyprint_node(buffer, parser, (yp_node_t *)((yp_parameters_node_t *)node)->rest);
1612
+ }
1547
1613
  yp_buffer_append_str(buffer, ", ", 2); yp_buffer_append_str(buffer, "[", 1);
1548
1614
  for (uint32_t index = 0; index < ((yp_parameters_node_t *)node)->posts.size; index++) {
1549
1615
  if (index != 0) yp_buffer_append_str(buffer, ", ", 2);
1550
1616
  prettyprint_node(buffer, parser, (yp_node_t *) ((yp_parameters_node_t *) node)->posts.nodes[index]);
1551
1617
  }
1552
1618
  yp_buffer_append_str(buffer, "]", 1);
1553
- yp_buffer_append_str(buffer, ", ", 2); if (((yp_parameters_node_t *)node)->rest == NULL) {
1554
- yp_buffer_append_str(buffer, "nil", 3);
1555
- } else {
1556
- prettyprint_node(buffer, parser, (yp_node_t *)((yp_parameters_node_t *)node)->rest);
1557
- }
1558
1619
  yp_buffer_append_str(buffer, ", ", 2); yp_buffer_append_str(buffer, "[", 1);
1559
1620
  for (uint32_t index = 0; index < ((yp_parameters_node_t *)node)->keywords.size; index++) {
1560
1621
  if (index != 0) yp_buffer_append_str(buffer, ", ", 2);
@@ -1656,7 +1717,7 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
1656
1717
  }
1657
1718
  yp_buffer_append_str(buffer, ", ", 2); prettyprint_location(buffer, parser, &((yp_range_node_t *)node)->operator_loc);
1658
1719
  yp_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
1659
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 1);
1720
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
1660
1721
  yp_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1661
1722
  yp_buffer_append_str(buffer, ")", 1);
1662
1723
  break;
@@ -1681,7 +1742,7 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
1681
1742
  yp_buffer_append_bytes(buffer, yp_string_source(&((yp_regular_expression_node_t *)node)->unescaped), yp_string_length(&((yp_regular_expression_node_t *)node)->unescaped));
1682
1743
  yp_buffer_append_str(buffer, "\"", 1);
1683
1744
  yp_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
1684
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 1);
1745
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
1685
1746
  yp_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1686
1747
  yp_buffer_append_str(buffer, ")", 1);
1687
1748
  break;
@@ -1857,7 +1918,10 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
1857
1918
  }
1858
1919
  case YP_STRING_NODE: {
1859
1920
  yp_buffer_append_str(buffer, "StringNode(", 11);
1860
- if (((yp_string_node_t *)node)->opening_loc.start == NULL) {
1921
+ char flags_buffer[12];
1922
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
1923
+ yp_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1924
+ yp_buffer_append_str(buffer, ", ", 2); if (((yp_string_node_t *)node)->opening_loc.start == NULL) {
1861
1925
  yp_buffer_append_str(buffer, "nil", 3);
1862
1926
  } else {
1863
1927
  prettyprint_location(buffer, parser, &((yp_string_node_t *)node)->opening_loc);
@@ -1977,7 +2041,7 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
1977
2041
  prettyprint_node(buffer, parser, (yp_node_t *)((yp_until_node_t *)node)->statements);
1978
2042
  }
1979
2043
  yp_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
1980
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 1);
2044
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
1981
2045
  yp_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
1982
2046
  yp_buffer_append_str(buffer, ")", 1);
1983
2047
  break;
@@ -2014,7 +2078,7 @@ prettyprint_node(yp_buffer_t *buffer, yp_parser_t *parser, yp_node_t *node) {
2014
2078
  prettyprint_node(buffer, parser, (yp_node_t *)((yp_while_node_t *)node)->statements);
2015
2079
  }
2016
2080
  yp_buffer_append_str(buffer, ", ", 2); char flags_buffer[12];
2017
- snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 1);
2081
+ snprintf(flags_buffer, sizeof(flags_buffer), "+%d", node->flags >> 2);
2018
2082
  yp_buffer_append_str(buffer, flags_buffer, strlen(flags_buffer));
2019
2083
  yp_buffer_append_str(buffer, ")", 1);
2020
2084
  break;