authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2019-12-14 20:40:56+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2019-12-14 20:40:56+02:00
log1a967db08311cd5046660e9df13a51e622f005b6
treedb6f3c9cc8d9ec76ad2118233294f21fcf7b512c
parent1f8458683658ed22a30145e5c48ea3e23785cbae
signature Commit is signed but in an unrecognized format.

add default initializers to all ast.Node base values


3 files changed, 46 insertions(+), 142 deletions(-)

lib/std/zig/ast.zig+46-46
...@@ -581,7 +581,7 @@ pub const Node = struct {...@@ -581,7 +581,7 @@ pub const Node = struct {
581 }581 }
582582
583 pub const Root = struct {583 pub const Root = struct {
584 base: Node,584 base: Node = Node {.id = .Root},
585 decls: DeclList,585 decls: DeclList,
586 eof_token: TokenIndex,586 eof_token: TokenIndex,
587587
...@@ -604,7 +604,7 @@ pub const Node = struct {...@@ -604,7 +604,7 @@ pub const Node = struct {
604 };604 };
605605
606 pub const VarDecl = struct {606 pub const VarDecl = struct {
607 base: Node,607 base: Node = Node {.id = .VarDecl},
608 doc_comments: ?*DocComment,608 doc_comments: ?*DocComment,
609 visib_token: ?TokenIndex,609 visib_token: ?TokenIndex,
610 thread_local_token: ?TokenIndex,610 thread_local_token: ?TokenIndex,
...@@ -661,7 +661,7 @@ pub const Node = struct {...@@ -661,7 +661,7 @@ pub const Node = struct {
661 };661 };
662662
663 pub const Use = struct {663 pub const Use = struct {
664 base: Node,664 base: Node = Node {.id = .Use},
665 doc_comments: ?*DocComment,665 doc_comments: ?*DocComment,
666 visib_token: ?TokenIndex,666 visib_token: ?TokenIndex,
667 use_token: TokenIndex,667 use_token: TokenIndex,
...@@ -688,7 +688,7 @@ pub const Node = struct {...@@ -688,7 +688,7 @@ pub const Node = struct {
688 };688 };
689689
690 pub const ErrorSetDecl = struct {690 pub const ErrorSetDecl = struct {
691 base: Node,691 base: Node = Node {.id = .ErrorSetDecl},
692 error_token: TokenIndex,692 error_token: TokenIndex,
693 decls: DeclList,693 decls: DeclList,
694 rbrace_token: TokenIndex,694 rbrace_token: TokenIndex,
...@@ -714,7 +714,7 @@ pub const Node = struct {...@@ -714,7 +714,7 @@ pub const Node = struct {
714 };714 };
715715
716 pub const ContainerDecl = struct {716 pub const ContainerDecl = struct {
717 base: Node,717 base: Node = Node {.id = .ContainerDecl},
718 layout_token: ?TokenIndex,718 layout_token: ?TokenIndex,
719 kind_token: TokenIndex,719 kind_token: TokenIndex,
720 init_arg_expr: InitArg,720 init_arg_expr: InitArg,
...@@ -801,7 +801,7 @@ pub const Node = struct {...@@ -801,7 +801,7 @@ pub const Node = struct {
801 };801 };
802802
803 pub const ErrorTag = struct {803 pub const ErrorTag = struct {
804 base: Node,804 base: Node = Node {.id = .ErrorTag},
805 doc_comments: ?*DocComment,805 doc_comments: ?*DocComment,
806 name_token: TokenIndex,806 name_token: TokenIndex,
807807
...@@ -826,7 +826,7 @@ pub const Node = struct {...@@ -826,7 +826,7 @@ pub const Node = struct {
826 };826 };
827827
828 pub const Identifier = struct {828 pub const Identifier = struct {
829 base: Node,829 base: Node = Node {.id = .Identifier},
830 token: TokenIndex,830 token: TokenIndex,
831831
832 pub fn iterate(self: *Identifier, index: usize) ?*Node {832 pub fn iterate(self: *Identifier, index: usize) ?*Node {
...@@ -843,7 +843,7 @@ pub const Node = struct {...@@ -843,7 +843,7 @@ pub const Node = struct {
843 };843 };
844844
845 pub const FnProto = struct {845 pub const FnProto = struct {
846 base: Node,846 base: Node = Node {.id = .FnProto},
847 doc_comments: ?*DocComment,847 doc_comments: ?*DocComment,
848 visib_token: ?TokenIndex,848 visib_token: ?TokenIndex,
849 fn_token: TokenIndex,849 fn_token: TokenIndex,
...@@ -925,7 +925,7 @@ pub const Node = struct {...@@ -925,7 +925,7 @@ pub const Node = struct {
925 };925 };
926926
927 pub const AnyFrameType = struct {927 pub const AnyFrameType = struct {
928 base: Node,928 base: Node = Node {.id = .AnyFrameType},
929 anyframe_token: TokenIndex,929 anyframe_token: TokenIndex,
930 result: ?Result,930 result: ?Result,
931931
...@@ -956,7 +956,7 @@ pub const Node = struct {...@@ -956,7 +956,7 @@ pub const Node = struct {
956 };956 };
957957
958 pub const ParamDecl = struct {958 pub const ParamDecl = struct {
959 base: Node,959 base: Node = Node {.id = .ParamDecl},
960 doc_comments: ?*DocComment,960 doc_comments: ?*DocComment,
961 comptime_token: ?TokenIndex,961 comptime_token: ?TokenIndex,
962 noalias_token: ?TokenIndex,962 noalias_token: ?TokenIndex,
...@@ -989,7 +989,7 @@ pub const Node = struct {...@@ -989,7 +989,7 @@ pub const Node = struct {
989 };989 };
990990
991 pub const Block = struct {991 pub const Block = struct {
992 base: Node,992 base: Node = Node {.id = .Block},
993 label: ?TokenIndex,993 label: ?TokenIndex,
994 lbrace: TokenIndex,994 lbrace: TokenIndex,
995 statements: StatementList,995 statements: StatementList,
...@@ -1020,7 +1020,7 @@ pub const Node = struct {...@@ -1020,7 +1020,7 @@ pub const Node = struct {
1020 };1020 };
10211021
1022 pub const Defer = struct {1022 pub const Defer = struct {
1023 base: Node,1023 base: Node = Node {.id = .Defer},
1024 defer_token: TokenIndex,1024 defer_token: TokenIndex,
1025 expr: *Node,1025 expr: *Node,
10261026
...@@ -1043,7 +1043,7 @@ pub const Node = struct {...@@ -1043,7 +1043,7 @@ pub const Node = struct {
1043 };1043 };
10441044
1045 pub const Comptime = struct {1045 pub const Comptime = struct {
1046 base: Node,1046 base: Node = Node {.id = .Comptime},
1047 doc_comments: ?*DocComment,1047 doc_comments: ?*DocComment,
1048 comptime_token: TokenIndex,1048 comptime_token: TokenIndex,
1049 expr: *Node,1049 expr: *Node,
...@@ -1067,7 +1067,7 @@ pub const Node = struct {...@@ -1067,7 +1067,7 @@ pub const Node = struct {
1067 };1067 };
10681068
1069 pub const Payload = struct {1069 pub const Payload = struct {
1070 base: Node,1070 base: Node = Node {.id = .Payload},
1071 lpipe: TokenIndex,1071 lpipe: TokenIndex,
1072 error_symbol: *Node,1072 error_symbol: *Node,
1073 rpipe: TokenIndex,1073 rpipe: TokenIndex,
...@@ -1091,7 +1091,7 @@ pub const Node = struct {...@@ -1091,7 +1091,7 @@ pub const Node = struct {
1091 };1091 };
10921092
1093 pub const PointerPayload = struct {1093 pub const PointerPayload = struct {
1094 base: Node,1094 base: Node = Node {.id = .PointerPayload},
1095 lpipe: TokenIndex,1095 lpipe: TokenIndex,
1096 ptr_token: ?TokenIndex,1096 ptr_token: ?TokenIndex,
1097 value_symbol: *Node,1097 value_symbol: *Node,
...@@ -1116,7 +1116,7 @@ pub const Node = struct {...@@ -1116,7 +1116,7 @@ pub const Node = struct {
1116 };1116 };
11171117
1118 pub const PointerIndexPayload = struct {1118 pub const PointerIndexPayload = struct {
1119 base: Node,1119 base: Node = Node {.id = .PointerIndexPayload},
1120 lpipe: TokenIndex,1120 lpipe: TokenIndex,
1121 ptr_token: ?TokenIndex,1121 ptr_token: ?TokenIndex,
1122 value_symbol: *Node,1122 value_symbol: *Node,
...@@ -1147,7 +1147,7 @@ pub const Node = struct {...@@ -1147,7 +1147,7 @@ pub const Node = struct {
1147 };1147 };
11481148
1149 pub const Else = struct {1149 pub const Else = struct {
1150 base: Node,1150 base: Node = Node {.id = .Else},
1151 else_token: TokenIndex,1151 else_token: TokenIndex,
1152 payload: ?*Node,1152 payload: ?*Node,
1153 body: *Node,1153 body: *Node,
...@@ -1176,7 +1176,7 @@ pub const Node = struct {...@@ -1176,7 +1176,7 @@ pub const Node = struct {
1176 };1176 };
11771177
1178 pub const Switch = struct {1178 pub const Switch = struct {
1179 base: Node,1179 base: Node = Node {.id = .Switch},
1180 switch_token: TokenIndex,1180 switch_token: TokenIndex,
1181 expr: *Node,1181 expr: *Node,
11821182
...@@ -1208,7 +1208,7 @@ pub const Node = struct {...@@ -1208,7 +1208,7 @@ pub const Node = struct {
1208 };1208 };
12091209
1210 pub const SwitchCase = struct {1210 pub const SwitchCase = struct {
1211 base: Node,1211 base: Node = Node {.id = .SwitchCase},
1212 items: ItemList,1212 items: ItemList,
1213 arrow_token: TokenIndex,1213 arrow_token: TokenIndex,
1214 payload: ?*Node,1214 payload: ?*Node,
...@@ -1243,7 +1243,7 @@ pub const Node = struct {...@@ -1243,7 +1243,7 @@ pub const Node = struct {
1243 };1243 };
12441244
1245 pub const SwitchElse = struct {1245 pub const SwitchElse = struct {
1246 base: Node,1246 base: Node = Node {.id = .SwitchElse},
1247 token: TokenIndex,1247 token: TokenIndex,
12481248
1249 pub fn iterate(self: *SwitchElse, index: usize) ?*Node {1249 pub fn iterate(self: *SwitchElse, index: usize) ?*Node {
...@@ -1260,7 +1260,7 @@ pub const Node = struct {...@@ -1260,7 +1260,7 @@ pub const Node = struct {
1260 };1260 };
12611261
1262 pub const While = struct {1262 pub const While = struct {
1263 base: Node,1263 base: Node = Node {.id = .While},
1264 label: ?TokenIndex,1264 label: ?TokenIndex,
1265 inline_token: ?TokenIndex,1265 inline_token: ?TokenIndex,
1266 while_token: TokenIndex,1266 while_token: TokenIndex,
...@@ -1319,7 +1319,7 @@ pub const Node = struct {...@@ -1319,7 +1319,7 @@ pub const Node = struct {
1319 };1319 };
13201320
1321 pub const For = struct {1321 pub const For = struct {
1322 base: Node,1322 base: Node = Node {.id = .For},
1323 label: ?TokenIndex,1323 label: ?TokenIndex,
1324 inline_token: ?TokenIndex,1324 inline_token: ?TokenIndex,
1325 for_token: TokenIndex,1325 for_token: TokenIndex,
...@@ -1370,7 +1370,7 @@ pub const Node = struct {...@@ -1370,7 +1370,7 @@ pub const Node = struct {
1370 };1370 };
13711371
1372 pub const If = struct {1372 pub const If = struct {
1373 base: Node,1373 base: Node = Node {.id = .If},
1374 if_token: TokenIndex,1374 if_token: TokenIndex,
1375 condition: *Node,1375 condition: *Node,
1376 payload: ?*Node,1376 payload: ?*Node,
...@@ -1413,7 +1413,7 @@ pub const Node = struct {...@@ -1413,7 +1413,7 @@ pub const Node = struct {
1413 };1413 };
14141414
1415 pub const InfixOp = struct {1415 pub const InfixOp = struct {
1416 base: Node,1416 base: Node = Node {.id = .InfixOp},
1417 op_token: TokenIndex,1417 op_token: TokenIndex,
1418 lhs: *Node,1418 lhs: *Node,
1419 op: Op,1419 op: Op,
...@@ -1646,7 +1646,7 @@ pub const Node = struct {...@@ -1646,7 +1646,7 @@ pub const Node = struct {
1646 };1646 };
16471647
1648 pub const FieldInitializer = struct {1648 pub const FieldInitializer = struct {
1649 base: Node,1649 base: Node = Node {.id = .FieldInitializer},
1650 period_token: TokenIndex,1650 period_token: TokenIndex,
1651 name_token: TokenIndex,1651 name_token: TokenIndex,
1652 expr: *Node,1652 expr: *Node,
...@@ -1670,7 +1670,7 @@ pub const Node = struct {...@@ -1670,7 +1670,7 @@ pub const Node = struct {
1670 };1670 };
16711671
1672 pub const SuffixOp = struct {1672 pub const SuffixOp = struct {
1673 base: Node,1673 base: Node = Node {.id = .SuffixOp},
1674 lhs: Lhs,1674 lhs: Lhs,
1675 op: Op,1675 op: Op,
1676 rtoken: TokenIndex,1676 rtoken: TokenIndex,
...@@ -1766,7 +1766,7 @@ pub const Node = struct {...@@ -1766,7 +1766,7 @@ pub const Node = struct {
1766 };1766 };
17671767
1768 pub const GroupedExpression = struct {1768 pub const GroupedExpression = struct {
1769 base: Node,1769 base: Node = Node {.id = .GroupedExpression},
1770 lparen: TokenIndex,1770 lparen: TokenIndex,
1771 expr: *Node,1771 expr: *Node,
1772 rparen: TokenIndex,1772 rparen: TokenIndex,
...@@ -1790,7 +1790,7 @@ pub const Node = struct {...@@ -1790,7 +1790,7 @@ pub const Node = struct {
1790 };1790 };
17911791
1792 pub const ControlFlowExpression = struct {1792 pub const ControlFlowExpression = struct {
1793 base: Node,1793 base: Node = Node {.id = .ControlFlowExpression},
1794 ltoken: TokenIndex,1794 ltoken: TokenIndex,
1795 kind: Kind,1795 kind: Kind,
1796 rhs: ?*Node,1796 rhs: ?*Node,
...@@ -1856,7 +1856,7 @@ pub const Node = struct {...@@ -1856,7 +1856,7 @@ pub const Node = struct {
1856 };1856 };
18571857
1858 pub const Suspend = struct {1858 pub const Suspend = struct {
1859 base: Node,1859 base: Node = Node {.id = .Suspend},
1860 suspend_token: TokenIndex,1860 suspend_token: TokenIndex,
1861 body: ?*Node,1861 body: ?*Node,
18621862
...@@ -1885,7 +1885,7 @@ pub const Node = struct {...@@ -1885,7 +1885,7 @@ pub const Node = struct {
1885 };1885 };
18861886
1887 pub const IntegerLiteral = struct {1887 pub const IntegerLiteral = struct {
1888 base: Node,1888 base: Node = Node {.id = .IntegerLiteral},
1889 token: TokenIndex,1889 token: TokenIndex,
18901890
1891 pub fn iterate(self: *IntegerLiteral, index: usize) ?*Node {1891 pub fn iterate(self: *IntegerLiteral, index: usize) ?*Node {
...@@ -1902,7 +1902,7 @@ pub const Node = struct {...@@ -1902,7 +1902,7 @@ pub const Node = struct {
1902 };1902 };
19031903
1904 pub const EnumLiteral = struct {1904 pub const EnumLiteral = struct {
1905 base: Node,1905 base: Node = Node {.id = .EnumLiteral},
1906 dot: TokenIndex,1906 dot: TokenIndex,
1907 name: TokenIndex,1907 name: TokenIndex,
19081908
...@@ -1920,7 +1920,7 @@ pub const Node = struct {...@@ -1920,7 +1920,7 @@ pub const Node = struct {
1920 };1920 };
19211921
1922 pub const FloatLiteral = struct {1922 pub const FloatLiteral = struct {
1923 base: Node,1923 base: Node = Node {.id = .FloatLiteral},
1924 token: TokenIndex,1924 token: TokenIndex,
19251925
1926 pub fn iterate(self: *FloatLiteral, index: usize) ?*Node {1926 pub fn iterate(self: *FloatLiteral, index: usize) ?*Node {
...@@ -1937,7 +1937,7 @@ pub const Node = struct {...@@ -1937,7 +1937,7 @@ pub const Node = struct {
1937 };1937 };
19381938
1939 pub const BuiltinCall = struct {1939 pub const BuiltinCall = struct {
1940 base: Node,1940 base: Node = Node {.id = .BuiltinCall},
1941 builtin_token: TokenIndex,1941 builtin_token: TokenIndex,
1942 params: ParamList,1942 params: ParamList,
1943 rparen_token: TokenIndex,1943 rparen_token: TokenIndex,
...@@ -1963,7 +1963,7 @@ pub const Node = struct {...@@ -1963,7 +1963,7 @@ pub const Node = struct {
1963 };1963 };
19641964
1965 pub const StringLiteral = struct {1965 pub const StringLiteral = struct {
1966 base: Node,1966 base: Node = Node {.id = .StringLiteral},
1967 token: TokenIndex,1967 token: TokenIndex,
19681968
1969 pub fn iterate(self: *StringLiteral, index: usize) ?*Node {1969 pub fn iterate(self: *StringLiteral, index: usize) ?*Node {
...@@ -1980,7 +1980,7 @@ pub const Node = struct {...@@ -1980,7 +1980,7 @@ pub const Node = struct {
1980 };1980 };
19811981
1982 pub const MultilineStringLiteral = struct {1982 pub const MultilineStringLiteral = struct {
1983 base: Node,1983 base: Node = Node {.id = .MultilineStringLiteral},
1984 lines: LineList,1984 lines: LineList,
19851985
1986 pub const LineList = SegmentedList(TokenIndex, 4);1986 pub const LineList = SegmentedList(TokenIndex, 4);
...@@ -1999,7 +1999,7 @@ pub const Node = struct {...@@ -1999,7 +1999,7 @@ pub const Node = struct {
1999 };1999 };
20002000
2001 pub const CharLiteral = struct {2001 pub const CharLiteral = struct {
2002 base: Node,2002 base: Node = Node {.id = .CharLiteral},
2003 token: TokenIndex,2003 token: TokenIndex,
20042004
2005 pub fn iterate(self: *CharLiteral, index: usize) ?*Node {2005 pub fn iterate(self: *CharLiteral, index: usize) ?*Node {
...@@ -2016,7 +2016,7 @@ pub const Node = struct {...@@ -2016,7 +2016,7 @@ pub const Node = struct {
2016 };2016 };
20172017
2018 pub const BoolLiteral = struct {2018 pub const BoolLiteral = struct {
2019 base: Node,2019 base: Node = Node {.id = .BoolLiteral},
2020 token: TokenIndex,2020 token: TokenIndex,
20212021
2022 pub fn iterate(self: *BoolLiteral, index: usize) ?*Node {2022 pub fn iterate(self: *BoolLiteral, index: usize) ?*Node {
...@@ -2033,7 +2033,7 @@ pub const Node = struct {...@@ -2033,7 +2033,7 @@ pub const Node = struct {
2033 };2033 };
20342034
2035 pub const NullLiteral = struct {2035 pub const NullLiteral = struct {
2036 base: Node,2036 base: Node = Node {.id = .NullLiteral},
2037 token: TokenIndex,2037 token: TokenIndex,
20382038
2039 pub fn iterate(self: *NullLiteral, index: usize) ?*Node {2039 pub fn iterate(self: *NullLiteral, index: usize) ?*Node {
...@@ -2050,7 +2050,7 @@ pub const Node = struct {...@@ -2050,7 +2050,7 @@ pub const Node = struct {
2050 };2050 };
20512051
2052 pub const UndefinedLiteral = struct {2052 pub const UndefinedLiteral = struct {
2053 base: Node,2053 base: Node = Node {.id = .UndefinedLiteral},
2054 token: TokenIndex,2054 token: TokenIndex,
20552055
2056 pub fn iterate(self: *UndefinedLiteral, index: usize) ?*Node {2056 pub fn iterate(self: *UndefinedLiteral, index: usize) ?*Node {
...@@ -2067,7 +2067,7 @@ pub const Node = struct {...@@ -2067,7 +2067,7 @@ pub const Node = struct {
2067 };2067 };
20682068
2069 pub const AsmOutput = struct {2069 pub const AsmOutput = struct {
2070 base: Node,2070 base: Node = Node {.id = .AsmOutput},
2071 lbracket: TokenIndex,2071 lbracket: TokenIndex,
2072 symbolic_name: *Node,2072 symbolic_name: *Node,
2073 constraint: *Node,2073 constraint: *Node,
...@@ -2112,7 +2112,7 @@ pub const Node = struct {...@@ -2112,7 +2112,7 @@ pub const Node = struct {
2112 };2112 };
21132113
2114 pub const AsmInput = struct {2114 pub const AsmInput = struct {
2115 base: Node,2115 base: Node = Node {.id = .AsmInput},
2116 lbracket: TokenIndex,2116 lbracket: TokenIndex,
2117 symbolic_name: *Node,2117 symbolic_name: *Node,
2118 constraint: *Node,2118 constraint: *Node,
...@@ -2144,7 +2144,7 @@ pub const Node = struct {...@@ -2144,7 +2144,7 @@ pub const Node = struct {
2144 };2144 };
21452145
2146 pub const Asm = struct {2146 pub const Asm = struct {
2147 base: Node,2147 base: Node = Node {.id = .Asm},
2148 asm_token: TokenIndex,2148 asm_token: TokenIndex,
2149 volatile_token: ?TokenIndex,2149 volatile_token: ?TokenIndex,
2150 template: *Node,2150 template: *Node,
...@@ -2179,7 +2179,7 @@ pub const Node = struct {...@@ -2179,7 +2179,7 @@ pub const Node = struct {
2179 };2179 };
21802180
2181 pub const Unreachable = struct {2181 pub const Unreachable = struct {
2182 base: Node,2182 base: Node = Node {.id = .Unreachable},
2183 token: TokenIndex,2183 token: TokenIndex,
21842184
2185 pub fn iterate(self: *Unreachable, index: usize) ?*Node {2185 pub fn iterate(self: *Unreachable, index: usize) ?*Node {
...@@ -2196,7 +2196,7 @@ pub const Node = struct {...@@ -2196,7 +2196,7 @@ pub const Node = struct {
2196 };2196 };
21972197
2198 pub const ErrorType = struct {2198 pub const ErrorType = struct {
2199 base: Node,2199 base: Node = Node {.id = .ErrorType},
2200 token: TokenIndex,2200 token: TokenIndex,
22012201
2202 pub fn iterate(self: *ErrorType, index: usize) ?*Node {2202 pub fn iterate(self: *ErrorType, index: usize) ?*Node {
...@@ -2230,7 +2230,7 @@ pub const Node = struct {...@@ -2230,7 +2230,7 @@ pub const Node = struct {
2230 };2230 };
22312231
2232 pub const DocComment = struct {2232 pub const DocComment = struct {
2233 base: Node,2233 base: Node = Node {.id = .DocComment},
2234 lines: LineList,2234 lines: LineList,
22352235
2236 pub const LineList = SegmentedList(TokenIndex, 4);2236 pub const LineList = SegmentedList(TokenIndex, 4);
...@@ -2249,7 +2249,7 @@ pub const Node = struct {...@@ -2249,7 +2249,7 @@ pub const Node = struct {
2249 };2249 };
22502250
2251 pub const TestDecl = struct {2251 pub const TestDecl = struct {
2252 base: Node,2252 base: Node = Node {.id = .TestDecl},
2253 doc_comments: ?*DocComment,2253 doc_comments: ?*DocComment,
2254 test_token: TokenIndex,2254 test_token: TokenIndex,
2255 name: *Node,2255 name: *Node,
lib/std/zig/parse.zig-72
...@@ -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 {
56fn parseRoot(arena: *Allocator, it: *TokenIterator, tree: *Tree) Allocator.Error!*Node.Root {56fn 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)
176175
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 {
194192
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) !?*
217214
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 {
338334
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 {
389384
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
477471
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
496489
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
558549
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
652642
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
677666
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
714702
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
741728
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 {
970951
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 {
10201000
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 {
10501029
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
11021080
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 caller1083 .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
13371308
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
13551325
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
14381407
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
14691437
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 {
14951462
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 {
15151481
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
15911555
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
16281591
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 {
16871649
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 {
17601721
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 {
18071767
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
18321791
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 {
18611819
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 {
18831840
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 {
19021858
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
19301885
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 {
19801933
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 caller1937 .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 {
19991951
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 {
20522003
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 caller2007 .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 {
22122162
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 caller2190 .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 caller2381 .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 {
24522398
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 caller2401 .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
25062451
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 caller2456 .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) !?
26562600
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 caller2676 .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 {
27662707
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 caller2792 .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
29122843
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(
3031fn createInfixOp(arena: *Allocator, index: TokenIndex, op: Node.InfixOp.Op) !*Node {2960fn 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,
src-self-hosted/translate_c.zig-24
...@@ -381,7 +381,6 @@ fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void {...@@ -381,7 +381,6 @@ fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void {
381381
382 const node = try c.a().create(ast.Node.VarDecl);382 const node = try c.a().create(ast.Node.VarDecl);
383 node.* = ast.Node.VarDecl{383 node.* = ast.Node.VarDecl{
384 .base = ast.Node{ .id = .VarDecl },
385 .doc_comments = null,384 .doc_comments = null,
386 .visib_token = visib_tok,385 .visib_token = visib_tok,
387 .thread_local_token = thread_local_token,386 .thread_local_token = thread_local_token,
...@@ -421,7 +420,6 @@ fn resolveTypeDef(c: *Context, typedef_decl: *const ZigClangTypedefNameDecl) Err...@@ -421,7 +420,6 @@ fn resolveTypeDef(c: *Context, typedef_decl: *const ZigClangTypedefNameDecl) Err
421420
422 const node = try c.a().create(ast.Node.VarDecl);421 const node = try c.a().create(ast.Node.VarDecl);
423 node.* = ast.Node.VarDecl{422 node.* = ast.Node.VarDecl{
424 .base = ast.Node{ .id = .VarDecl },
425 .doc_comments = null,423 .doc_comments = null,
426 .visib_token = visib_tok,424 .visib_token = visib_tok,
427 .thread_local_token = null,425 .thread_local_token = null,
...@@ -473,7 +471,6 @@ fn resolveRecordDecl(c: *Context, record_decl: *const ZigClangRecordDecl) Error!...@@ -473,7 +471,6 @@ fn resolveRecordDecl(c: *Context, record_decl: *const ZigClangRecordDecl) Error!
473471
474 const node = try c.a().create(ast.Node.VarDecl);472 const node = try c.a().create(ast.Node.VarDecl);
475 node.* = ast.Node.VarDecl{473 node.* = ast.Node.VarDecl{
476 .base = ast.Node{ .id = .VarDecl },
477 .doc_comments = null,474 .doc_comments = null,
478 .visib_token = visib_tok,475 .visib_token = visib_tok,
479 .thread_local_token = null,476 .thread_local_token = null,
...@@ -504,7 +501,6 @@ fn createAlias(c: *Context, alias: var) !void {...@@ -504,7 +501,6 @@ fn createAlias(c: *Context, alias: var) !void {
504501
505 const node = try c.a().create(ast.Node.VarDecl);502 const node = try c.a().create(ast.Node.VarDecl);
506 node.* = ast.Node.VarDecl{503 node.* = ast.Node.VarDecl{
507 .base = ast.Node{ .id = .VarDecl },
508 .doc_comments = null,504 .doc_comments = null,
509 .visib_token = visib_tok,505 .visib_token = visib_tok,
510 .thread_local_token = null,506 .thread_local_token = null,
...@@ -810,7 +806,6 @@ fn transDeclStmt(rp: RestorePoint, parent_scope: *Scope, stmt: *const ZigClangDe...@@ -810,7 +806,6 @@ fn transDeclStmt(rp: RestorePoint, parent_scope: *Scope, stmt: *const ZigClangDe
810806
811 const node = try c.a().create(ast.Node.VarDecl);807 const node = try c.a().create(ast.Node.VarDecl);
812 node.* = ast.Node.VarDecl{808 node.* = ast.Node.VarDecl{
813 .base = ast.Node{ .id = .VarDecl },
814 .doc_comments = null,809 .doc_comments = null,
815 .visib_token = null,810 .visib_token = null,
816 .thread_local_token = thread_local_token,811 .thread_local_token = thread_local_token,
...@@ -978,7 +973,6 @@ fn transStringLiteral(...@@ -978,7 +973,6 @@ fn transStringLiteral(
978 const token = try appendToken(rp.c, .StringLiteral, buf);973 const token = try appendToken(rp.c, .StringLiteral, buf);
979 const node = try rp.c.a().create(ast.Node.StringLiteral);974 const node = try rp.c.a().create(ast.Node.StringLiteral);
980 node.* = ast.Node.StringLiteral{975 node.* = ast.Node.StringLiteral{
981 .base = ast.Node{ .id = .StringLiteral },
982 .token = token,976 .token = token,
983 };977 };
984 const res = TransResult{978 const res = TransResult{
...@@ -1145,7 +1139,6 @@ fn transInitListExpr(...@@ -1145,7 +1139,6 @@ fn transInitListExpr(
1145 const mul_tok = try appendToken(rp.c, .AsteriskAsterisk, "**");1139 const mul_tok = try appendToken(rp.c, .AsteriskAsterisk, "**");
1146 const mul_node = try rp.c.a().create(ast.Node.InfixOp);1140 const mul_node = try rp.c.a().create(ast.Node.InfixOp);
1147 mul_node.* = .{1141 mul_node.* = .{
1148 .base = .{ .id = .InfixOp },
1149 .op_token = mul_tok,1142 .op_token = mul_tok,
1150 .lhs = &filler_init_node.base,1143 .lhs = &filler_init_node.base,
1151 .op = .ArrayMult,1144 .op = .ArrayMult,
...@@ -1164,7 +1157,6 @@ fn transInitListExpr(...@@ -1164,7 +1157,6 @@ fn transInitListExpr(
11641157
1165 const cat_node = try rp.c.a().create(ast.Node.InfixOp);1158 const cat_node = try rp.c.a().create(ast.Node.InfixOp);
1166 cat_node.* = .{1159 cat_node.* = .{
1167 .base = .{ .id = .InfixOp },
1168 .op_token = cat_tok,1160 .op_token = cat_tok,
1169 .lhs = &init_node.base,1161 .lhs = &init_node.base,
1170 .op = .ArrayCat,1162 .op = .ArrayCat,
...@@ -1296,7 +1288,6 @@ fn maybeSuppressResult(...@@ -1296,7 +1288,6 @@ fn maybeSuppressResult(
1296 const op_token = try appendToken(rp.c, .Equal, "=");1288 const op_token = try appendToken(rp.c, .Equal, "=");
1297 const op_node = try rp.c.a().create(ast.Node.InfixOp);1289 const op_node = try rp.c.a().create(ast.Node.InfixOp);
1298 op_node.* = ast.Node.InfixOp{1290 op_node.* = ast.Node.InfixOp{
1299 .base = ast.Node{ .id = .InfixOp },
1300 .op_token = op_token,1291 .op_token = op_token,
1301 .lhs = lhs,1292 .lhs = lhs,
1302 .op = .Assign,1293 .op = .Assign,
...@@ -1352,7 +1343,6 @@ fn transRecordDecl(c: *Context, record_decl: *const ZigClangRecordDecl) TypeErro...@@ -1352,7 +1343,6 @@ fn transRecordDecl(c: *Context, record_decl: *const ZigClangRecordDecl) TypeErro
13521343
1353 const container_node = try c.a().create(ast.Node.ContainerDecl);1344 const container_node = try c.a().create(ast.Node.ContainerDecl);
1354 container_node.* = .{1345 container_node.* = .{
1355 .base = ast.Node{ .id = .ContainerDecl },
1356 .layout_token = extern_tok,1346 .layout_token = extern_tok,
1357 .kind_token = container_tok,1347 .kind_token = container_tok,
1358 .init_arg_expr = .None,1348 .init_arg_expr = .None,
...@@ -1523,7 +1513,6 @@ fn transCreateNodeAssign(...@@ -1523,7 +1513,6 @@ fn transCreateNodeAssign(
15231513
1524 const node = try rp.c.a().create(ast.Node.InfixOp);1514 const node = try rp.c.a().create(ast.Node.InfixOp);
1525 node.* = ast.Node.InfixOp{1515 node.* = ast.Node.InfixOp{
1526 .base = ast.Node{ .id = .InfixOp },
1527 .op_token = eq_token,1516 .op_token = eq_token,
1528 .lhs = lhs_node.node,1517 .lhs = lhs_node.node,
1529 .op = .Assign,1518 .op = .Assign,
...@@ -1553,7 +1542,6 @@ fn transCreateNodeBuiltinFnCall(c: *Context, name: []const u8) !*ast.Node.Builti...@@ -1553,7 +1542,6 @@ fn transCreateNodeBuiltinFnCall(c: *Context, name: []const u8) !*ast.Node.Builti
1553 _ = try appendToken(c, .LParen, "(");1542 _ = try appendToken(c, .LParen, "(");
1554 const node = try c.a().create(ast.Node.BuiltinCall);1543 const node = try c.a().create(ast.Node.BuiltinCall);
1555 node.* = ast.Node.BuiltinCall{1544 node.* = ast.Node.BuiltinCall{
1556 .base = ast.Node{ .id = .BuiltinCall },
1557 .builtin_token = builtin_token,1545 .builtin_token = builtin_token,
1558 .params = ast.Node.BuiltinCall.ParamList.init(c.a()),1546 .params = ast.Node.BuiltinCall.ParamList.init(c.a()),
1559 .rparen_token = undefined, // set after appending args1547 .rparen_token = undefined, // set after appending args
...@@ -1565,7 +1553,6 @@ fn transCreateNodeFnCall(c: *Context, fn_expr: *ast.Node) !*ast.Node.SuffixOp {...@@ -1565,7 +1553,6 @@ fn transCreateNodeFnCall(c: *Context, fn_expr: *ast.Node) !*ast.Node.SuffixOp {
1565 _ = try appendToken(c, .LParen, "(");1553 _ = try appendToken(c, .LParen, "(");
1566 const node = try c.a().create(ast.Node.SuffixOp);1554 const node = try c.a().create(ast.Node.SuffixOp);
1567 node.* = ast.Node.SuffixOp{1555 node.* = ast.Node.SuffixOp{
1568 .base = ast.Node{ .id = .SuffixOp },
1569 .lhs = fn_expr,1556 .lhs = fn_expr,
1570 .op = ast.Node.SuffixOp.Op{1557 .op = ast.Node.SuffixOp.Op{
1571 .Call = ast.Node.SuffixOp.Op.Call{1558 .Call = ast.Node.SuffixOp.Op.Call{
...@@ -1586,7 +1573,6 @@ fn transCreateNodePrefixOp(...@@ -1586,7 +1573,6 @@ fn transCreateNodePrefixOp(
1586) !*ast.Node.PrefixOp {1573) !*ast.Node.PrefixOp {
1587 const node = try c.a().create(ast.Node.PrefixOp);1574 const node = try c.a().create(ast.Node.PrefixOp);
1588 node.* = ast.Node.PrefixOp{1575 node.* = ast.Node.PrefixOp{
1589 .base = ast.Node{ .id = .PrefixOp },
1590 .op_token = try appendToken(c, op_tok_id, bytes),1576 .op_token = try appendToken(c, op_tok_id, bytes),
1591 .op = op,1577 .op = op,
1592 .rhs = undefined, // translate and set afterward1578 .rhs = undefined, // translate and set afterward
...@@ -1609,7 +1595,6 @@ fn transCreateNodeInfixOp(...@@ -1609,7 +1595,6 @@ fn transCreateNodeInfixOp(
1609 const rhs = try transExpr(rp, scope, ZigClangBinaryOperator_getRHS(stmt), .used, .r_value);1595 const rhs = try transExpr(rp, scope, ZigClangBinaryOperator_getRHS(stmt), .used, .r_value);
1610 const node = try rp.c.a().create(ast.Node.InfixOp);1596 const node = try rp.c.a().create(ast.Node.InfixOp);
1611 node.* = ast.Node.InfixOp{1597 node.* = ast.Node.InfixOp{
1612 .base = ast.Node{ .id = .InfixOp },
1613 .op_token = op_token,1598 .op_token = op_token,
1614 .lhs = lhs.node,1599 .lhs = lhs.node,
1615 .op = op,1600 .op = op,
...@@ -1619,7 +1604,6 @@ fn transCreateNodeInfixOp(...@@ -1619,7 +1604,6 @@ fn transCreateNodeInfixOp(
1619 const rparen = try appendToken(rp.c, .RParen, ")");1604 const rparen = try appendToken(rp.c, .RParen, ")");
1620 const grouped_expr = try rp.c.a().create(ast.Node.GroupedExpression);1605 const grouped_expr = try rp.c.a().create(ast.Node.GroupedExpression);
1621 grouped_expr.* = ast.Node.GroupedExpression{1606 grouped_expr.* = ast.Node.GroupedExpression{
1622 .base = ast.Node{ .id = .GroupedExpression },
1623 .lparen = lparen,1607 .lparen = lparen,
1624 .expr = &node.base,1608 .expr = &node.base,
1625 .rparen = rparen,1609 .rparen = rparen,
...@@ -1652,7 +1636,6 @@ fn transCreateNodePtrType(...@@ -1652,7 +1636,6 @@ fn transCreateNodePtrType(
1652 else => unreachable,1636 else => unreachable,
1653 };1637 };
1654 node.* = ast.Node.PrefixOp{1638 node.* = ast.Node.PrefixOp{
1655 .base = ast.Node{ .id = .PrefixOp },
1656 .op_token = op_token,1639 .op_token = op_token,
1657 .op = ast.Node.PrefixOp.Op{1640 .op = ast.Node.PrefixOp.Op{
1658 .PtrType = .{1641 .PtrType = .{
...@@ -1679,7 +1662,6 @@ fn transCreateNodeAPInt(c: *Context, int: ?*const ZigClangAPSInt) !*ast.Node {...@@ -1679,7 +1662,6 @@ fn transCreateNodeAPInt(c: *Context, int: ?*const ZigClangAPSInt) !*ast.Node {
1679 const token = try appendToken(c, .IntegerLiteral, str);1662 const token = try appendToken(c, .IntegerLiteral, str);
1680 const node = try c.a().create(ast.Node.IntegerLiteral);1663 const node = try c.a().create(ast.Node.IntegerLiteral);
1681 node.* = ast.Node.IntegerLiteral{1664 node.* = ast.Node.IntegerLiteral{
1682 .base = ast.Node{ .id = .IntegerLiteral },
1683 .token = token,1665 .token = token,
1684 };1666 };
1685 return &node.base;1667 return &node.base;
...@@ -1689,7 +1671,6 @@ fn transCreateNodeReturnExpr(c: *Context) !*ast.Node {...@@ -1689,7 +1671,6 @@ fn transCreateNodeReturnExpr(c: *Context) !*ast.Node {
1689 const ltoken = try appendToken(c, .Keyword_return, "return");1671 const ltoken = try appendToken(c, .Keyword_return, "return");
1690 const node = try c.a().create(ast.Node.ControlFlowExpression);1672 const node = try c.a().create(ast.Node.ControlFlowExpression);
1691 node.* = ast.Node.ControlFlowExpression{1673 node.* = ast.Node.ControlFlowExpression{
1692 .base = ast.Node{ .id = .ControlFlowExpression },
1693 .ltoken = ltoken,1674 .ltoken = ltoken,
1694 .kind = .Return,1675 .kind = .Return,
1695 .rhs = null,1676 .rhs = null,
...@@ -1701,7 +1682,6 @@ fn transCreateNodeUndefinedLiteral(c: *Context) !*ast.Node {...@@ -1701,7 +1682,6 @@ fn transCreateNodeUndefinedLiteral(c: *Context) !*ast.Node {
1701 const token = try appendToken(c, .Keyword_undefined, "undefined");1682 const token = try appendToken(c, .Keyword_undefined, "undefined");
1702 const node = try c.a().create(ast.Node.UndefinedLiteral);1683 const node = try c.a().create(ast.Node.UndefinedLiteral);
1703 node.* = ast.Node.UndefinedLiteral{1684 node.* = ast.Node.UndefinedLiteral{
1704 .base = ast.Node{ .id = .UndefinedLiteral },
1705 .token = token,1685 .token = token,
1706 };1686 };
1707 return &node.base;1687 return &node.base;
...@@ -1711,7 +1691,6 @@ fn transCreateNodeNullLiteral(c: *Context) !*ast.Node {...@@ -1711,7 +1691,6 @@ fn transCreateNodeNullLiteral(c: *Context) !*ast.Node {
1711 const token = try appendToken(c, .Keyword_null, "null");1691 const token = try appendToken(c, .Keyword_null, "null");
1712 const node = try c.a().create(ast.Node.NullLiteral);1692 const node = try c.a().create(ast.Node.NullLiteral);
1713 node.* = ast.Node.NullLiteral{1693 node.* = ast.Node.NullLiteral{
1714 .base = ast.Node{ .id = .NullLiteral },
1715 .token = token,1694 .token = token,
1716 };1695 };
1717 return &node.base;1696 return &node.base;
...@@ -1724,7 +1703,6 @@ fn transCreateNodeBoolLiteral(c: *Context, value: bool) !*ast.Node {...@@ -1724,7 +1703,6 @@ fn transCreateNodeBoolLiteral(c: *Context, value: bool) !*ast.Node {
1724 try appendToken(c, .Keyword_false, "false");1703 try appendToken(c, .Keyword_false, "false");
1725 const node = try c.a().create(ast.Node.BoolLiteral);1704 const node = try c.a().create(ast.Node.BoolLiteral);
1726 node.* = ast.Node.BoolLiteral{1705 node.* = ast.Node.BoolLiteral{
1727 .base = ast.Node{ .id = .BoolLiteral },
1728 .token = token,1706 .token = token,
1729 };1707 };
1730 return &node.base;1708 return &node.base;
...@@ -1734,7 +1712,6 @@ fn transCreateNodeArrayInitializer(c: *Context, dot_tok: ast.TokenIndex) !*ast.N...@@ -1734,7 +1712,6 @@ fn transCreateNodeArrayInitializer(c: *Context, dot_tok: ast.TokenIndex) !*ast.N
1734 _ = try appendToken(c, .LBrace, "{");1712 _ = try appendToken(c, .LBrace, "{");
1735 const node = try c.a().create(ast.Node.SuffixOp);1713 const node = try c.a().create(ast.Node.SuffixOp);
1736 node.* = ast.Node.SuffixOp{1714 node.* = ast.Node.SuffixOp{
1737 .base = ast.Node{ .id = .SuffixOp },
1738 .lhs = .{ .dot = dot_tok },1715 .lhs = .{ .dot = dot_tok },
1739 .op = .{1716 .op = .{
1740 .ArrayInitializer = ast.Node.SuffixOp.Op.InitList.init(c.a()),1717 .ArrayInitializer = ast.Node.SuffixOp.Op.InitList.init(c.a()),
...@@ -1748,7 +1725,6 @@ fn transCreateNodeInt(c: *Context, int: var) !*ast.Node {...@@ -1748,7 +1725,6 @@ fn transCreateNodeInt(c: *Context, int: var) !*ast.Node {
1748 const token = try appendTokenFmt(c, .IntegerLiteral, "{}", .{int});1725 const token = try appendTokenFmt(c, .IntegerLiteral, "{}", .{int});
1749 const node = try c.a().create(ast.Node.IntegerLiteral);1726 const node = try c.a().create(ast.Node.IntegerLiteral);
1750 node.* = ast.Node.IntegerLiteral{1727 node.* = ast.Node.IntegerLiteral{
1751 .base = ast.Node{ .id = .IntegerLiteral },
1752 .token = token,1728 .token = token,
1753 };1729 };
1754 return &node.base;1730 return &node.base;