| ... | ... | @@ -56,7 +56,6 @@ pub fn parse(allocator: *Allocator, source: []const u8) !*Tree { |
| 56 | 56 | fn parseRoot(arena: *Allocator, it: *TokenIterator, tree: *Tree) Allocator.Error!*Node.Root { |
| 57 | 57 | const node = try arena.create(Node.Root); |
| 58 | 58 | node.* = Node.Root{ |
| 59 | | .base = Node{ .id = .Root }, |
| 60 | 59 | .decls = undefined, |
| 61 | 60 | .eof_token = undefined, |
| 62 | 61 | }; |
| ... | ... | @@ -176,7 +175,6 @@ fn parseContainerDocComments(arena: *Allocator, it: *TokenIterator, tree: *Tree) |
| 176 | 175 | |
| 177 | 176 | const node = try arena.create(Node.DocComment); |
| 178 | 177 | node.* = Node.DocComment{ |
| 179 | | .base = Node{ .id = .DocComment }, |
| 180 | 178 | .lines = lines, |
| 181 | 179 | }; |
| 182 | 180 | return &node.base; |
| ... | ... | @@ -194,7 +192,6 @@ fn parseTestDecl(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 194 | 192 | |
| 195 | 193 | const test_node = try arena.create(Node.TestDecl); |
| 196 | 194 | test_node.* = Node.TestDecl{ |
| 197 | | .base = Node{ .id = .TestDecl }, |
| 198 | 195 | .doc_comments = null, |
| 199 | 196 | .test_token = test_token, |
| 200 | 197 | .name = name_node, |
| ... | ... | @@ -217,7 +214,6 @@ fn parseTopLevelComptime(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?* |
| 217 | 214 | |
| 218 | 215 | const comptime_node = try arena.create(Node.Comptime); |
| 219 | 216 | comptime_node.* = Node.Comptime{ |
| 220 | | .base = Node{ .id = .Comptime }, |
| 221 | 217 | .doc_comments = null, |
| 222 | 218 | .comptime_token = tok, |
| 223 | 219 | .expr = block_node, |
| ... | ... | @@ -338,7 +334,6 @@ fn parseFnProto(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 338 | 334 | |
| 339 | 335 | const fn_proto_node = try arena.create(Node.FnProto); |
| 340 | 336 | fn_proto_node.* = Node.FnProto{ |
| 341 | | .base = Node{ .id = .FnProto }, |
| 342 | 337 | .doc_comments = null, |
| 343 | 338 | .visib_token = null, |
| 344 | 339 | .fn_token = fn_token, |
| ... | ... | @@ -389,7 +384,6 @@ fn parseVarDecl(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 389 | 384 | |
| 390 | 385 | const node = try arena.create(Node.VarDecl); |
| 391 | 386 | node.* = Node.VarDecl{ |
| 392 | | .base = Node{ .id = .VarDecl }, |
| 393 | 387 | .doc_comments = null, |
| 394 | 388 | .visib_token = null, |
| 395 | 389 | .thread_local_token = null, |
| ... | ... | @@ -477,7 +471,6 @@ fn parseStatement(arena: *Allocator, it: *TokenIterator, tree: *Tree) Error!?*No |
| 477 | 471 | |
| 478 | 472 | const node = try arena.create(Node.Comptime); |
| 479 | 473 | node.* = Node.Comptime{ |
| 480 | | .base = Node{ .id = .Comptime }, |
| 481 | 474 | .doc_comments = null, |
| 482 | 475 | .comptime_token = token, |
| 483 | 476 | .expr = block_expr, |
| ... | ... | @@ -496,7 +489,6 @@ fn parseStatement(arena: *Allocator, it: *TokenIterator, tree: *Tree) Error!?*No |
| 496 | 489 | |
| 497 | 490 | const node = try arena.create(Node.Suspend); |
| 498 | 491 | node.* = Node.Suspend{ |
| 499 | | .base = Node{ .id = .Suspend }, |
| 500 | 492 | .suspend_token = suspend_token, |
| 501 | 493 | .body = body_node, |
| 502 | 494 | }; |
| ... | ... | @@ -510,7 +502,6 @@ fn parseStatement(arena: *Allocator, it: *TokenIterator, tree: *Tree) Error!?*No |
| 510 | 502 | }); |
| 511 | 503 | const node = try arena.create(Node.Defer); |
| 512 | 504 | node.* = Node.Defer{ |
| 513 | | .base = Node{ .id = .Defer }, |
| 514 | 505 | .defer_token = token, |
| 515 | 506 | .expr = expr_node, |
| 516 | 507 | }; |
| ... | ... | @@ -558,7 +549,6 @@ fn parseIfStatement(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 558 | 549 | |
| 559 | 550 | const node = try arena.create(Node.Else); |
| 560 | 551 | node.* = Node.Else{ |
| 561 | | .base = Node{ .id = .Else }, |
| 562 | 552 | .else_token = else_token, |
| 563 | 553 | .payload = payload, |
| 564 | 554 | .body = else_body, |
| ... | ... | @@ -652,7 +642,6 @@ fn parseForStatement(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 652 | 642 | |
| 653 | 643 | const else_node = try arena.create(Node.Else); |
| 654 | 644 | else_node.* = Node.Else{ |
| 655 | | .base = Node{ .id = .Else }, |
| 656 | 645 | .else_token = else_token, |
| 657 | 646 | .payload = null, |
| 658 | 647 | .body = statement_node, |
| ... | ... | @@ -677,7 +666,6 @@ fn parseForStatement(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 677 | 666 | |
| 678 | 667 | const else_node = try arena.create(Node.Else); |
| 679 | 668 | else_node.* = Node.Else{ |
| 680 | | .base = Node{ .id = .Else }, |
| 681 | 669 | .else_token = else_token, |
| 682 | 670 | .payload = null, |
| 683 | 671 | .body = statement_node, |
| ... | ... | @@ -714,7 +702,6 @@ fn parseWhileStatement(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*No |
| 714 | 702 | |
| 715 | 703 | const else_node = try arena.create(Node.Else); |
| 716 | 704 | else_node.* = Node.Else{ |
| 717 | | .base = Node{ .id = .Else }, |
| 718 | 705 | .else_token = else_token, |
| 719 | 706 | .payload = payload, |
| 720 | 707 | .body = statement_node, |
| ... | ... | @@ -741,7 +728,6 @@ fn parseWhileStatement(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*No |
| 741 | 728 | |
| 742 | 729 | const else_node = try arena.create(Node.Else); |
| 743 | 730 | else_node.* = Node.Else{ |
| 744 | | .base = Node{ .id = .Else }, |
| 745 | 731 | .else_token = else_token, |
| 746 | 732 | .payload = payload, |
| 747 | 733 | .body = statement_node, |
| ... | ... | @@ -870,7 +856,6 @@ fn parsePrimaryExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 870 | 856 | const expr_node = try parseExpr(arena, it, tree); |
| 871 | 857 | const node = try arena.create(Node.ControlFlowExpression); |
| 872 | 858 | node.* = Node.ControlFlowExpression{ |
| 873 | | .base = Node{ .id = .ControlFlowExpression }, |
| 874 | 859 | .ltoken = token, |
| 875 | 860 | .kind = Node.ControlFlowExpression.Kind{ .Break = label }, |
| 876 | 861 | .rhs = expr_node, |
| ... | ... | @@ -884,7 +869,6 @@ fn parsePrimaryExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 884 | 869 | }); |
| 885 | 870 | const node = try arena.create(Node.Comptime); |
| 886 | 871 | node.* = Node.Comptime{ |
| 887 | | .base = Node{ .id = .Comptime }, |
| 888 | 872 | .doc_comments = null, |
| 889 | 873 | .comptime_token = token, |
| 890 | 874 | .expr = expr_node, |
| ... | ... | @@ -896,7 +880,6 @@ fn parsePrimaryExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 896 | 880 | const label = try parseBreakLabel(arena, it, tree); |
| 897 | 881 | const node = try arena.create(Node.ControlFlowExpression); |
| 898 | 882 | node.* = Node.ControlFlowExpression{ |
| 899 | | .base = Node{ .id = .ControlFlowExpression }, |
| 900 | 883 | .ltoken = token, |
| 901 | 884 | .kind = Node.ControlFlowExpression.Kind{ .Continue = label }, |
| 902 | 885 | .rhs = null, |
| ... | ... | @@ -910,7 +893,6 @@ fn parsePrimaryExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 910 | 893 | }); |
| 911 | 894 | const node = try arena.create(Node.PrefixOp); |
| 912 | 895 | node.* = Node.PrefixOp{ |
| 913 | | .base = Node{ .id = .PrefixOp }, |
| 914 | 896 | .op_token = token, |
| 915 | 897 | .op = Node.PrefixOp.Op.Resume, |
| 916 | 898 | .rhs = expr_node, |
| ... | ... | @@ -922,7 +904,6 @@ fn parsePrimaryExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 922 | 904 | const expr_node = try parseExpr(arena, it, tree); |
| 923 | 905 | const node = try arena.create(Node.ControlFlowExpression); |
| 924 | 906 | node.* = Node.ControlFlowExpression{ |
| 925 | | .base = Node{ .id = .ControlFlowExpression }, |
| 926 | 907 | .ltoken = token, |
| 927 | 908 | .kind = Node.ControlFlowExpression.Kind.Return, |
| 928 | 909 | .rhs = expr_node, |
| ... | ... | @@ -970,7 +951,6 @@ fn parseBlock(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 970 | 951 | |
| 971 | 952 | const block_node = try arena.create(Node.Block); |
| 972 | 953 | block_node.* = Node.Block{ |
| 973 | | .base = Node{ .id = .Block }, |
| 974 | 954 | .label = null, |
| 975 | 955 | .lbrace = lbrace, |
| 976 | 956 | .statements = statements, |
| ... | ... | @@ -1020,7 +1000,6 @@ fn parseForExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 1020 | 1000 | |
| 1021 | 1001 | const else_node = try arena.create(Node.Else); |
| 1022 | 1002 | else_node.* = Node.Else{ |
| 1023 | | .base = Node{ .id = .Else }, |
| 1024 | 1003 | .else_token = else_token, |
| 1025 | 1004 | .payload = null, |
| 1026 | 1005 | .body = body, |
| ... | ... | @@ -1050,7 +1029,6 @@ fn parseWhileExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 1050 | 1029 | |
| 1051 | 1030 | const else_node = try arena.create(Node.Else); |
| 1052 | 1031 | else_node.* = Node.Else{ |
| 1053 | | .base = Node{ .id = .Else }, |
| 1054 | 1032 | .else_token = else_token, |
| 1055 | 1033 | .payload = payload, |
| 1056 | 1034 | .body = body, |
| ... | ... | @@ -1102,7 +1080,6 @@ fn parseInitList(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node.Suf |
| 1102 | 1080 | |
| 1103 | 1081 | const node = try arena.create(Node.SuffixOp); |
| 1104 | 1082 | node.* = Node.SuffixOp{ |
| 1105 | | .base = Node{ .id = .SuffixOp }, |
| 1106 | 1083 | .lhs = .{ .node = undefined }, // set by caller |
| 1107 | 1084 | .op = op, |
| 1108 | 1085 | .rtoken = try expectToken(it, tree, .RBrace), |
| ... | ... | @@ -1171,7 +1148,6 @@ fn parseSuffixExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 1171 | 1148 | }; |
| 1172 | 1149 | const node = try arena.create(Node.SuffixOp); |
| 1173 | 1150 | node.* = Node.SuffixOp{ |
| 1174 | | .base = Node{ .id = .SuffixOp }, |
| 1175 | 1151 | .lhs = .{ .node = res }, |
| 1176 | 1152 | .op = Node.SuffixOp.Op{ |
| 1177 | 1153 | .Call = Node.SuffixOp.Op.Call{ |
| ... | ... | @@ -1199,7 +1175,6 @@ fn parseSuffixExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 1199 | 1175 | if (try parseFnCallArguments(arena, it, tree)) |params| { |
| 1200 | 1176 | const call = try arena.create(Node.SuffixOp); |
| 1201 | 1177 | call.* = Node.SuffixOp{ |
| 1202 | | .base = Node{ .id = .SuffixOp }, |
| 1203 | 1178 | .lhs = .{ .node = res }, |
| 1204 | 1179 | .op = Node.SuffixOp.Op{ |
| 1205 | 1180 | .Call = Node.SuffixOp.Op.Call{ |
| ... | ... | @@ -1248,7 +1223,6 @@ fn parsePrimaryTypeExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*N |
| 1248 | 1223 | if (eatToken(it, .CharLiteral)) |token| { |
| 1249 | 1224 | const node = try arena.create(Node.CharLiteral); |
| 1250 | 1225 | node.* = Node.CharLiteral{ |
| 1251 | | .base = Node{ .id = .CharLiteral }, |
| 1252 | 1226 | .token = token, |
| 1253 | 1227 | }; |
| 1254 | 1228 | return &node.base; |
| ... | ... | @@ -1267,7 +1241,6 @@ fn parsePrimaryTypeExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*N |
| 1267 | 1241 | const expr = (try parseTypeExpr(arena, it, tree)) orelse return null; |
| 1268 | 1242 | const node = try arena.create(Node.Comptime); |
| 1269 | 1243 | node.* = Node.Comptime{ |
| 1270 | | .base = Node{ .id = .Comptime }, |
| 1271 | 1244 | .doc_comments = null, |
| 1272 | 1245 | .comptime_token = token, |
| 1273 | 1246 | .expr = expr, |
| ... | ... | @@ -1282,7 +1255,6 @@ fn parsePrimaryTypeExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*N |
| 1282 | 1255 | const global_error_set = try createLiteral(arena, Node.ErrorType, token); |
| 1283 | 1256 | const node = try arena.create(Node.InfixOp); |
| 1284 | 1257 | node.* = Node.InfixOp{ |
| 1285 | | .base = Node{ .id = .InfixOp }, |
| 1286 | 1258 | .op_token = period, |
| 1287 | 1259 | .lhs = global_error_set, |
| 1288 | 1260 | .op = Node.InfixOp.Op.Period, |
| ... | ... | @@ -1295,7 +1267,6 @@ fn parsePrimaryTypeExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*N |
| 1295 | 1267 | if (eatToken(it, .Keyword_anyframe)) |token| { |
| 1296 | 1268 | const node = try arena.create(Node.AnyFrameType); |
| 1297 | 1269 | node.* = Node.AnyFrameType{ |
| 1298 | | .base = Node{ .id = .AnyFrameType }, |
| 1299 | 1270 | .anyframe_token = token, |
| 1300 | 1271 | .result = null, |
| 1301 | 1272 | }; |
| ... | ... | @@ -1337,7 +1308,6 @@ fn parseErrorSetDecl(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 1337 | 1308 | |
| 1338 | 1309 | const node = try arena.create(Node.ErrorSetDecl); |
| 1339 | 1310 | node.* = Node.ErrorSetDecl{ |
| 1340 | | .base = Node{ .id = .ErrorSetDecl }, |
| 1341 | 1311 | .error_token = error_token, |
| 1342 | 1312 | .decls = decls, |
| 1343 | 1313 | .rbrace_token = rbrace, |
| ... | ... | @@ -1355,7 +1325,6 @@ fn parseGroupedExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 1355 | 1325 | |
| 1356 | 1326 | const node = try arena.create(Node.GroupedExpression); |
| 1357 | 1327 | node.* = Node.GroupedExpression{ |
| 1358 | | .base = Node{ .id = .GroupedExpression }, |
| 1359 | 1328 | .lparen = lparen, |
| 1360 | 1329 | .expr = expr, |
| 1361 | 1330 | .rparen = rparen, |
| ... | ... | @@ -1438,7 +1407,6 @@ fn parseForTypeExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 1438 | 1407 | |
| 1439 | 1408 | const else_node = try arena.create(Node.Else); |
| 1440 | 1409 | else_node.* = Node.Else{ |
| 1441 | | .base = Node{ .id = .Else }, |
| 1442 | 1410 | .else_token = else_token, |
| 1443 | 1411 | .payload = null, |
| 1444 | 1412 | .body = else_expr, |
| ... | ... | @@ -1469,7 +1437,6 @@ fn parseWhileTypeExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Nod |
| 1469 | 1437 | |
| 1470 | 1438 | const else_node = try arena.create(Node.Else); |
| 1471 | 1439 | else_node.* = Node.Else{ |
| 1472 | | .base = Node{ .id = .Else }, |
| 1473 | 1440 | .else_token = else_token, |
| 1474 | 1441 | .payload = null, |
| 1475 | 1442 | .body = else_expr, |
| ... | ... | @@ -1495,7 +1462,6 @@ fn parseSwitchExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 1495 | 1462 | |
| 1496 | 1463 | const node = try arena.create(Node.Switch); |
| 1497 | 1464 | node.* = Node.Switch{ |
| 1498 | | .base = Node{ .id = .Switch }, |
| 1499 | 1465 | .switch_token = switch_token, |
| 1500 | 1466 | .expr = expr_node, |
| 1501 | 1467 | .cases = cases, |
| ... | ... | @@ -1515,7 +1481,6 @@ fn parseAsmExpr(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 1515 | 1481 | |
| 1516 | 1482 | const node = try arena.create(Node.Asm); |
| 1517 | 1483 | node.* = Node.Asm{ |
| 1518 | | .base = Node{ .id = .Asm }, |
| 1519 | 1484 | .asm_token = asm_token, |
| 1520 | 1485 | .volatile_token = volatile_token, |
| 1521 | 1486 | .template = template, |
| ... | ... | @@ -1538,7 +1503,6 @@ fn parseAnonLiteral(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 1538 | 1503 | if (eatToken(it, .Identifier)) |name| { |
| 1539 | 1504 | const node = try arena.create(Node.EnumLiteral); |
| 1540 | 1505 | node.* = Node.EnumLiteral{ |
| 1541 | | .base = Node{ .id = .EnumLiteral }, |
| 1542 | 1506 | .dot = dot, |
| 1543 | 1507 | .name = name, |
| 1544 | 1508 | }; |
| ... | ... | @@ -1591,7 +1555,6 @@ fn parseAsmOutputItem(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Nod |
| 1591 | 1555 | |
| 1592 | 1556 | const node = try arena.create(Node.AsmOutput); |
| 1593 | 1557 | node.* = Node.AsmOutput{ |
| 1594 | | .base = Node{ .id = .AsmOutput }, |
| 1595 | 1558 | .lbracket = lbracket, |
| 1596 | 1559 | .symbolic_name = name, |
| 1597 | 1560 | .constraint = constraint, |
| ... | ... | @@ -1628,7 +1591,6 @@ fn parseAsmInputItem(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 1628 | 1591 | |
| 1629 | 1592 | const node = try arena.create(Node.AsmInput); |
| 1630 | 1593 | node.* = Node.AsmInput{ |
| 1631 | | .base = Node{ .id = .AsmInput }, |
| 1632 | 1594 | .lbracket = lbracket, |
| 1633 | 1595 | .symbolic_name = name, |
| 1634 | 1596 | .constraint = constraint, |
| ... | ... | @@ -1687,7 +1649,6 @@ fn parseFieldInit(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 1687 | 1649 | |
| 1688 | 1650 | const node = try arena.create(Node.FieldInitializer); |
| 1689 | 1651 | node.* = Node.FieldInitializer{ |
| 1690 | | .base = Node{ .id = .FieldInitializer }, |
| 1691 | 1652 | .period_token = period_token, |
| 1692 | 1653 | .name_token = name_token, |
| 1693 | 1654 | .expr = expr_node, |
| ... | ... | @@ -1760,7 +1721,6 @@ fn parseParamDecl(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 1760 | 1721 | |
| 1761 | 1722 | const param_decl = try arena.create(Node.ParamDecl); |
| 1762 | 1723 | param_decl.* = Node.ParamDecl{ |
| 1763 | | .base = Node{ .id = .ParamDecl }, |
| 1764 | 1724 | .doc_comments = doc_comments, |
| 1765 | 1725 | .comptime_token = comptime_token, |
| 1766 | 1726 | .noalias_token = noalias_token, |
| ... | ... | @@ -1807,7 +1767,6 @@ fn parseIfPrefix(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 1807 | 1767 | |
| 1808 | 1768 | const node = try arena.create(Node.If); |
| 1809 | 1769 | node.* = Node.If{ |
| 1810 | | .base = Node{ .id = .If }, |
| 1811 | 1770 | .if_token = if_token, |
| 1812 | 1771 | .condition = condition, |
| 1813 | 1772 | .payload = payload, |
| ... | ... | @@ -1832,7 +1791,6 @@ fn parseWhilePrefix(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 1832 | 1791 | |
| 1833 | 1792 | const node = try arena.create(Node.While); |
| 1834 | 1793 | node.* = Node.While{ |
| 1835 | | .base = Node{ .id = .While }, |
| 1836 | 1794 | .label = null, |
| 1837 | 1795 | .inline_token = null, |
| 1838 | 1796 | .while_token = while_token, |
| ... | ... | @@ -1861,7 +1819,6 @@ fn parseForPrefix(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 1861 | 1819 | |
| 1862 | 1820 | const node = try arena.create(Node.For); |
| 1863 | 1821 | node.* = Node.For{ |
| 1864 | | .base = Node{ .id = .For }, |
| 1865 | 1822 | .label = null, |
| 1866 | 1823 | .inline_token = null, |
| 1867 | 1824 | .for_token = for_token, |
| ... | ... | @@ -1883,7 +1840,6 @@ fn parsePayload(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 1883 | 1840 | |
| 1884 | 1841 | const node = try arena.create(Node.Payload); |
| 1885 | 1842 | node.* = Node.Payload{ |
| 1886 | | .base = Node{ .id = .Payload }, |
| 1887 | 1843 | .lpipe = lpipe, |
| 1888 | 1844 | .error_symbol = identifier, |
| 1889 | 1845 | .rpipe = rpipe, |
| ... | ... | @@ -1902,7 +1858,6 @@ fn parsePtrPayload(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 1902 | 1858 | |
| 1903 | 1859 | const node = try arena.create(Node.PointerPayload); |
| 1904 | 1860 | node.* = Node.PointerPayload{ |
| 1905 | | .base = Node{ .id = .PointerPayload }, |
| 1906 | 1861 | .lpipe = lpipe, |
| 1907 | 1862 | .ptr_token = asterisk, |
| 1908 | 1863 | .value_symbol = identifier, |
| ... | ... | @@ -1930,7 +1885,6 @@ fn parsePtrIndexPayload(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*N |
| 1930 | 1885 | |
| 1931 | 1886 | const node = try arena.create(Node.PointerIndexPayload); |
| 1932 | 1887 | node.* = Node.PointerIndexPayload{ |
| 1933 | | .base = Node{ .id = .PointerIndexPayload }, |
| 1934 | 1888 | .lpipe = lpipe, |
| 1935 | 1889 | .ptr_token = asterisk, |
| 1936 | 1890 | .value_symbol = identifier, |
| ... | ... | @@ -1972,7 +1926,6 @@ fn parseSwitchCase(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 1972 | 1926 | } else if (eatToken(it, .Keyword_else)) |else_token| { |
| 1973 | 1927 | const else_node = try arena.create(Node.SwitchElse); |
| 1974 | 1928 | else_node.* = Node.SwitchElse{ |
| 1975 | | .base = Node{ .id = .SwitchElse }, |
| 1976 | 1929 | .token = else_token, |
| 1977 | 1930 | }; |
| 1978 | 1931 | try list.push(&else_node.base); |
| ... | ... | @@ -1980,7 +1933,6 @@ fn parseSwitchCase(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 1980 | 1933 | |
| 1981 | 1934 | const node = try arena.create(Node.SwitchCase); |
| 1982 | 1935 | node.* = Node.SwitchCase{ |
| 1983 | | .base = Node{ .id = .SwitchCase }, |
| 1984 | 1936 | .items = list, |
| 1985 | 1937 | .arrow_token = undefined, // set by caller |
| 1986 | 1938 | .payload = null, |
| ... | ... | @@ -1999,7 +1951,6 @@ fn parseSwitchItem(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 1999 | 1951 | |
| 2000 | 1952 | const node = try arena.create(Node.InfixOp); |
| 2001 | 1953 | node.* = Node.InfixOp{ |
| 2002 | | .base = Node{ .id = .InfixOp }, |
| 2003 | 1954 | .op_token = token, |
| 2004 | 1955 | .lhs = expr, |
| 2005 | 1956 | .op = Node.InfixOp.Op{ .Range = {} }, |
| ... | ... | @@ -2052,7 +2003,6 @@ fn parseAssignOp(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 2052 | 2003 | |
| 2053 | 2004 | const node = try arena.create(Node.InfixOp); |
| 2054 | 2005 | node.* = Node.InfixOp{ |
| 2055 | | .base = Node{ .id = .InfixOp }, |
| 2056 | 2006 | .op_token = token.index, |
| 2057 | 2007 | .lhs = undefined, // set by caller |
| 2058 | 2008 | .op = op, |
| ... | ... | @@ -2212,7 +2162,6 @@ fn parsePrefixOp(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 2212 | 2162 | |
| 2213 | 2163 | const node = try arena.create(Node.PrefixOp); |
| 2214 | 2164 | node.* = Node.PrefixOp{ |
| 2215 | | .base = Node{ .id = .PrefixOp }, |
| 2216 | 2165 | .op_token = token.index, |
| 2217 | 2166 | .op = op, |
| 2218 | 2167 | .rhs = undefined, |
| ... | ... | @@ -2236,7 +2185,6 @@ fn parsePrefixTypeOp(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 2236 | 2185 | if (eatToken(it, .QuestionMark)) |token| { |
| 2237 | 2186 | const node = try arena.create(Node.PrefixOp); |
| 2238 | 2187 | node.* = Node.PrefixOp{ |
| 2239 | | .base = Node{ .id = .PrefixOp }, |
| 2240 | 2188 | .op_token = token, |
| 2241 | 2189 | .op = Node.PrefixOp.Op.OptionalType, |
| 2242 | 2190 | .rhs = undefined, // set by caller |
| ... | ... | @@ -2255,7 +2203,6 @@ fn parsePrefixTypeOp(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 2255 | 2203 | }; |
| 2256 | 2204 | const node = try arena.create(Node.AnyFrameType); |
| 2257 | 2205 | node.* = Node.AnyFrameType{ |
| 2258 | | .base = Node{ .id = .AnyFrameType }, |
| 2259 | 2206 | .anyframe_token = token, |
| 2260 | 2207 | .result = Node.AnyFrameType.Result{ |
| 2261 | 2208 | .arrow_token = arrow, |
| ... | ... | @@ -2430,7 +2377,6 @@ fn parseSuffixOp(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 2430 | 2377 | // this grammar rule be altered? |
| 2431 | 2378 | const node = try arena.create(Node.InfixOp); |
| 2432 | 2379 | node.* = Node.InfixOp{ |
| 2433 | | .base = Node{ .id = .InfixOp }, |
| 2434 | 2380 | .op_token = period, |
| 2435 | 2381 | .lhs = undefined, // set by caller |
| 2436 | 2382 | .op = Node.InfixOp.Op.Period, |
| ... | ... | @@ -2452,7 +2398,6 @@ fn parseSuffixOp(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 2452 | 2398 | |
| 2453 | 2399 | const node = try arena.create(Node.SuffixOp); |
| 2454 | 2400 | node.* = Node.SuffixOp{ |
| 2455 | | .base = Node{ .id = .SuffixOp }, |
| 2456 | 2401 | .lhs = undefined, // set by caller |
| 2457 | 2402 | .op = op_and_token.op, |
| 2458 | 2403 | .rtoken = op_and_token.token, |
| ... | ... | @@ -2506,7 +2451,6 @@ fn parseArrayTypeStart(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*No |
| 2506 | 2451 | |
| 2507 | 2452 | const node = try arena.create(Node.PrefixOp); |
| 2508 | 2453 | node.* = Node.PrefixOp{ |
| 2509 | | .base = Node{ .id = .PrefixOp }, |
| 2510 | 2454 | .op_token = lbracket, |
| 2511 | 2455 | .op = op, |
| 2512 | 2456 | .rhs = undefined, // set by caller |
| ... | ... | @@ -2656,7 +2600,6 @@ fn parseContainerDeclType(arena: *Allocator, it: *TokenIterator, tree: *Tree) !? |
| 2656 | 2600 | |
| 2657 | 2601 | const node = try arena.create(Node.ContainerDecl); |
| 2658 | 2602 | node.* = Node.ContainerDecl{ |
| 2659 | | .base = Node{ .id = .ContainerDecl }, |
| 2660 | 2603 | .layout_token = null, |
| 2661 | 2604 | .kind_token = kind_token.index, |
| 2662 | 2605 | .init_arg_expr = init_arg_expr, |
| ... | ... | @@ -2729,7 +2672,6 @@ fn SimpleBinOpParseFn(comptime token: Token.Id, comptime op: Node.InfixOp.Op) No |
| 2729 | 2672 | const op_token = eatToken(it, token) orelse return null; |
| 2730 | 2673 | const node = try arena.create(Node.InfixOp); |
| 2731 | 2674 | node.* = Node.InfixOp{ |
| 2732 | | .base = Node{ .id = .InfixOp }, |
| 2733 | 2675 | .op_token = op_token, |
| 2734 | 2676 | .lhs = undefined, // set by caller |
| 2735 | 2677 | .op = op, |
| ... | ... | @@ -2752,7 +2694,6 @@ fn parseBuiltinCall(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 2752 | 2694 | }; |
| 2753 | 2695 | const node = try arena.create(Node.BuiltinCall); |
| 2754 | 2696 | node.* = Node.BuiltinCall{ |
| 2755 | | .base = Node{ .id = .BuiltinCall }, |
| 2756 | 2697 | .builtin_token = token, |
| 2757 | 2698 | .params = params.list, |
| 2758 | 2699 | .rparen_token = params.rparen, |
| ... | ... | @@ -2766,7 +2707,6 @@ fn parseErrorTag(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 2766 | 2707 | |
| 2767 | 2708 | const node = try arena.create(Node.ErrorTag); |
| 2768 | 2709 | node.* = Node.ErrorTag{ |
| 2769 | | .base = Node{ .id = .ErrorTag }, |
| 2770 | 2710 | .doc_comments = doc_comments, |
| 2771 | 2711 | .name_token = token, |
| 2772 | 2712 | }; |
| ... | ... | @@ -2777,7 +2717,6 @@ fn parseIdentifier(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 2777 | 2717 | const token = eatToken(it, .Identifier) orelse return null; |
| 2778 | 2718 | const node = try arena.create(Node.Identifier); |
| 2779 | 2719 | node.* = Node.Identifier{ |
| 2780 | | .base = Node{ .id = .Identifier }, |
| 2781 | 2720 | .token = token, |
| 2782 | 2721 | }; |
| 2783 | 2722 | return &node.base; |
| ... | ... | @@ -2787,7 +2726,6 @@ fn parseVarType(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 2787 | 2726 | const token = eatToken(it, .Keyword_var) orelse return null; |
| 2788 | 2727 | const node = try arena.create(Node.VarType); |
| 2789 | 2728 | node.* = Node.VarType{ |
| 2790 | | .base = Node{ .id = .VarType }, |
| 2791 | 2729 | .token = token, |
| 2792 | 2730 | }; |
| 2793 | 2731 | return &node.base; |
| ... | ... | @@ -2807,7 +2745,6 @@ fn parseStringLiteral(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Nod |
| 2807 | 2745 | if (eatToken(it, .StringLiteral)) |token| { |
| 2808 | 2746 | const node = try arena.create(Node.StringLiteral); |
| 2809 | 2747 | node.* = Node.StringLiteral{ |
| 2810 | | .base = Node{ .id = .StringLiteral }, |
| 2811 | 2748 | .token = token, |
| 2812 | 2749 | }; |
| 2813 | 2750 | return &node.base; |
| ... | ... | @@ -2816,7 +2753,6 @@ fn parseStringLiteral(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Nod |
| 2816 | 2753 | if (eatToken(it, .MultilineStringLiteralLine)) |first_line| { |
| 2817 | 2754 | const node = try arena.create(Node.MultilineStringLiteral); |
| 2818 | 2755 | node.* = Node.MultilineStringLiteral{ |
| 2819 | | .base = Node{ .id = .MultilineStringLiteral }, |
| 2820 | 2756 | .lines = Node.MultilineStringLiteral.LineList.init(arena), |
| 2821 | 2757 | }; |
| 2822 | 2758 | try node.lines.push(first_line); |
| ... | ... | @@ -2833,7 +2769,6 @@ fn parseIntegerLiteral(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*No |
| 2833 | 2769 | const token = eatToken(it, .IntegerLiteral) orelse return null; |
| 2834 | 2770 | const node = try arena.create(Node.IntegerLiteral); |
| 2835 | 2771 | node.* = Node.IntegerLiteral{ |
| 2836 | | .base = Node{ .id = .IntegerLiteral }, |
| 2837 | 2772 | .token = token, |
| 2838 | 2773 | }; |
| 2839 | 2774 | return &node.base; |
| ... | ... | @@ -2843,7 +2778,6 @@ fn parseFloatLiteral(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 2843 | 2778 | const token = eatToken(it, .FloatLiteral) orelse return null; |
| 2844 | 2779 | const node = try arena.create(Node.FloatLiteral); |
| 2845 | 2780 | node.* = Node.FloatLiteral{ |
| 2846 | | .base = Node{ .id = .FloatLiteral }, |
| 2847 | 2781 | .token = token, |
| 2848 | 2782 | }; |
| 2849 | 2783 | return &node.base; |
| ... | ... | @@ -2853,7 +2787,6 @@ fn parseTry(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 2853 | 2787 | const token = eatToken(it, .Keyword_try) orelse return null; |
| 2854 | 2788 | const node = try arena.create(Node.PrefixOp); |
| 2855 | 2789 | node.* = Node.PrefixOp{ |
| 2856 | | .base = Node{ .id = .PrefixOp }, |
| 2857 | 2790 | .op_token = token, |
| 2858 | 2791 | .op = Node.PrefixOp.Op.Try, |
| 2859 | 2792 | .rhs = undefined, // set by caller |
| ... | ... | @@ -2865,7 +2798,6 @@ fn parseUse(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 2865 | 2798 | const token = eatToken(it, .Keyword_usingnamespace) orelse return null; |
| 2866 | 2799 | const node = try arena.create(Node.Use); |
| 2867 | 2800 | node.* = Node.Use{ |
| 2868 | | .base = Node{ .id = .Use }, |
| 2869 | 2801 | .doc_comments = null, |
| 2870 | 2802 | .visib_token = null, |
| 2871 | 2803 | .use_token = token, |
| ... | ... | @@ -2891,7 +2823,6 @@ fn parseIf(arena: *Allocator, it: *TokenIterator, tree: *Tree, bodyParseFn: Node |
| 2891 | 2823 | }); |
| 2892 | 2824 | const else_node = try arena.create(Node.Else); |
| 2893 | 2825 | else_node.* = Node.Else{ |
| 2894 | | .base = Node{ .id = .Else }, |
| 2895 | 2826 | .else_token = else_token, |
| 2896 | 2827 | .payload = payload, |
| 2897 | 2828 | .body = else_expr, |
| ... | ... | @@ -2912,7 +2843,6 @@ fn parseDocComment(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node.D |
| 2912 | 2843 | |
| 2913 | 2844 | const node = try arena.create(Node.DocComment); |
| 2914 | 2845 | node.* = Node.DocComment{ |
| 2915 | | .base = Node{ .id = .DocComment }, |
| 2916 | 2846 | .lines = lines, |
| 2917 | 2847 | }; |
| 2918 | 2848 | return node; |
| ... | ... | @@ -2924,7 +2854,6 @@ fn parseAppendedDocComment(arena: *Allocator, it: *TokenIterator, tree: *Tree, a |
| 2924 | 2854 | if (tree.tokensOnSameLine(after_token, comment_token)) { |
| 2925 | 2855 | const node = try arena.create(Node.DocComment); |
| 2926 | 2856 | node.* = Node.DocComment{ |
| 2927 | | .base = Node{ .id = .DocComment }, |
| 2928 | 2857 | .lines = Node.DocComment.LineList.init(arena), |
| 2929 | 2858 | }; |
| 2930 | 2859 | try node.lines.push(comment_token); |
| ... | ... | @@ -3031,7 +2960,6 @@ fn parseBinOpExpr( |
| 3031 | 2960 | fn createInfixOp(arena: *Allocator, index: TokenIndex, op: Node.InfixOp.Op) !*Node { |
| 3032 | 2961 | const node = try arena.create(Node.InfixOp); |
| 3033 | 2962 | node.* = Node.InfixOp{ |
| 3034 | | .base = Node{ .id = .InfixOp }, |
| 3035 | 2963 | .op_token = index, |
| 3036 | 2964 | .lhs = undefined, |
| 3037 | 2965 | .op = op, |