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