authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-02-01 21:31:41-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-02-01 21:31:41-07:00
log0c6b98b82568edd982d8f7b7820a0a1173c5c5d2
treec4f75bdc91fa1df97fc1169ad1ece795bb804d2b
parent272a0ab359ee504f147ccf1ce5adb78c676a8305

zig fmt: implement simple test with doc comments


2 files changed, 533 insertions(+), 528 deletions(-)

lib/std/zig/parser_test.zig+257-248
......@@ -21,247 +21,6 @@ test "zig fmt: two spaced line comments before decl" {
2121 );
2222}
2323
24//test "recovery: top level" {
25// try testError(
26// \\test "" {inline}
27// \\test "" {inline}
28// , &[_]Error{
29// .ExpectedInlinable,
30// .ExpectedInlinable,
31// });
32//}
33//
34//test "recovery: block statements" {
35// try testError(
36// \\test "" {
37// \\ foo + +;
38// \\ inline;
39// \\}
40// , &[_]Error{
41// .InvalidToken,
42// .ExpectedInlinable,
43// });
44//}
45//
46//test "recovery: missing comma" {
47// try testError(
48// \\test "" {
49// \\ switch (foo) {
50// \\ 2 => {}
51// \\ 3 => {}
52// \\ else => {
53// \\ foo && bar +;
54// \\ }
55// \\ }
56// \\}
57// , &[_]Error{
58// .ExpectedToken,
59// .ExpectedToken,
60// .InvalidAnd,
61// .InvalidToken,
62// });
63//}
64//
65//test "recovery: extra qualifier" {
66// try testError(
67// \\const a: *const const u8;
68// \\test ""
69// , &[_]Error{
70// .ExtraConstQualifier,
71// .ExpectedLBrace,
72// });
73//}
74//
75//test "recovery: missing return type" {
76// try testError(
77// \\fn foo() {
78// \\ a && b;
79// \\}
80// \\test ""
81// , &[_]Error{
82// .ExpectedReturnType,
83// .InvalidAnd,
84// .ExpectedLBrace,
85// });
86//}
87//
88//test "recovery: continue after invalid decl" {
89// try testError(
90// \\fn foo {
91// \\ inline;
92// \\}
93// \\pub test "" {
94// \\ async a && b;
95// \\}
96// , &[_]Error{
97// .ExpectedToken,
98// .ExpectedPubItem,
99// .ExpectedParamList,
100// .InvalidAnd,
101// });
102// try testError(
103// \\threadlocal test "" {
104// \\ @a && b;
105// \\}
106// , &[_]Error{
107// .ExpectedVarDecl,
108// .ExpectedParamList,
109// .InvalidAnd,
110// });
111//}
112//
113//test "recovery: invalid extern/inline" {
114// try testError(
115// \\inline test "" { a && b; }
116// , &[_]Error{
117// .ExpectedFn,
118// .InvalidAnd,
119// });
120// try testError(
121// \\extern "" test "" { a && b; }
122// , &[_]Error{
123// .ExpectedVarDeclOrFn,
124// .InvalidAnd,
125// });
126//}
127//
128//test "recovery: missing semicolon" {
129// try testError(
130// \\test "" {
131// \\ comptime a && b
132// \\ c && d
133// \\ @foo
134// \\}
135// , &[_]Error{
136// .InvalidAnd,
137// .ExpectedToken,
138// .InvalidAnd,
139// .ExpectedToken,
140// .ExpectedParamList,
141// .ExpectedToken,
142// });
143//}
144//
145//test "recovery: invalid container members" {
146// try testError(
147// \\usingnamespace;
148// \\foo+
149// \\bar@,
150// \\while (a == 2) { test "" {}}
151// \\test "" {
152// \\ a && b
153// \\}
154// , &[_]Error{
155// .ExpectedExpr,
156// .ExpectedToken,
157// .ExpectedToken,
158// .ExpectedContainerMembers,
159// .InvalidAnd,
160// .ExpectedToken,
161// });
162//}
163//
164//test "recovery: invalid parameter" {
165// try testError(
166// \\fn main() void {
167// \\ a(comptime T: type)
168// \\}
169// , &[_]Error{
170// .ExpectedToken,
171// });
172//}
173//
174//test "recovery: extra '}' at top level" {
175// try testError(
176// \\}}}
177// \\test "" {
178// \\ a && b;
179// \\}
180// , &[_]Error{
181// .ExpectedContainerMembers,
182// .ExpectedContainerMembers,
183// .ExpectedContainerMembers,
184// .InvalidAnd,
185// });
186//}
187//
188//test "recovery: mismatched bracket at top level" {
189// try testError(
190// \\const S = struct {
191// \\ arr: 128]?G
192// \\};
193// , &[_]Error{
194// .ExpectedToken,
195// });
196//}
197//
198//test "recovery: invalid global error set access" {
199// try testError(
200// \\test "" {
201// \\ error && foo;
202// \\}
203// , &[_]Error{
204// .ExpectedToken,
205// .ExpectedIdentifier,
206// .InvalidAnd,
207// });
208//}
209//
210//test "recovery: invalid asterisk after pointer dereference" {
211// try testError(
212// \\test "" {
213// \\ var sequence = "repeat".*** 10;
214// \\}
215// , &[_]Error{
216// .AsteriskAfterPointerDereference,
217// });
218// try testError(
219// \\test "" {
220// \\ var sequence = "repeat".** 10&&a;
221// \\}
222// , &[_]Error{
223// .AsteriskAfterPointerDereference,
224// .InvalidAnd,
225// });
226//}
227//
228//test "recovery: missing semicolon after if, for, while stmt" {
229// try testError(
230// \\test "" {
231// \\ if (foo) bar
232// \\ for (foo) |a| bar
233// \\ while (foo) bar
234// \\ a && b;
235// \\}
236// , &[_]Error{
237// .ExpectedSemiOrElse,
238// .ExpectedSemiOrElse,
239// .ExpectedSemiOrElse,
240// .InvalidAnd,
241// });
242//}
243//
244//test "recovery: invalid comptime" {
245// try testError(
246// \\comptime
247// , &[_]Error{
248// .ExpectedBlockOrField,
249// });
250//}
251//
252//test "recovery: missing block after for/while loops" {
253// try testError(
254// \\test "" { while (foo) }
255// , &[_]Error{
256// .ExpectedBlockOrAssignment,
257// });
258// try testError(
259// \\test "" { for (foo) |bar| }
260// , &[_]Error{
261// .ExpectedBlockOrAssignment,
262// });
263//}
264//
26524//test "zig fmt: respect line breaks after var declarations" {
26625// try testCanonical(
26726// \\const crc =
......@@ -306,13 +65,22 @@ test "zig fmt: two spaced line comments before decl" {
30665// \\
30766// );
30867//}
309//
310//test "zig fmt: empty file" {
311// try testCanonical(
312// \\
313// );
314//}
315//
68
69test "zig fmt: empty file" {
70 try testCanonical(
71 \\
72 );
73}
74
75test "zig fmt: doc comments on test" {
76 try testCanonical(
77 \\/// hello
78 \\/// world
79 \\test "" {}
80 \\
81 );
82}
83
31684//test "zig fmt: if statment" {
31785// try testCanonical(
31886// \\test "" {
......@@ -3712,6 +3480,247 @@ test "zig fmt: two spaced line comments before decl" {
37123480// \\
37133481// );
37143482//}
3483//
3484//test "recovery: top level" {
3485// try testError(
3486// \\test "" {inline}
3487// \\test "" {inline}
3488// , &[_]Error{
3489// .ExpectedInlinable,
3490// .ExpectedInlinable,
3491// });
3492//}
3493//
3494//test "recovery: block statements" {
3495// try testError(
3496// \\test "" {
3497// \\ foo + +;
3498// \\ inline;
3499// \\}
3500// , &[_]Error{
3501// .InvalidToken,
3502// .ExpectedInlinable,
3503// });
3504//}
3505//
3506//test "recovery: missing comma" {
3507// try testError(
3508// \\test "" {
3509// \\ switch (foo) {
3510// \\ 2 => {}
3511// \\ 3 => {}
3512// \\ else => {
3513// \\ foo && bar +;
3514// \\ }
3515// \\ }
3516// \\}
3517// , &[_]Error{
3518// .ExpectedToken,
3519// .ExpectedToken,
3520// .InvalidAnd,
3521// .InvalidToken,
3522// });
3523//}
3524//
3525//test "recovery: extra qualifier" {
3526// try testError(
3527// \\const a: *const const u8;
3528// \\test ""
3529// , &[_]Error{
3530// .ExtraConstQualifier,
3531// .ExpectedLBrace,
3532// });
3533//}
3534//
3535//test "recovery: missing return type" {
3536// try testError(
3537// \\fn foo() {
3538// \\ a && b;
3539// \\}
3540// \\test ""
3541// , &[_]Error{
3542// .ExpectedReturnType,
3543// .InvalidAnd,
3544// .ExpectedLBrace,
3545// });
3546//}
3547//
3548//test "recovery: continue after invalid decl" {
3549// try testError(
3550// \\fn foo {
3551// \\ inline;
3552// \\}
3553// \\pub test "" {
3554// \\ async a && b;
3555// \\}
3556// , &[_]Error{
3557// .ExpectedToken,
3558// .ExpectedPubItem,
3559// .ExpectedParamList,
3560// .InvalidAnd,
3561// });
3562// try testError(
3563// \\threadlocal test "" {
3564// \\ @a && b;
3565// \\}
3566// , &[_]Error{
3567// .ExpectedVarDecl,
3568// .ExpectedParamList,
3569// .InvalidAnd,
3570// });
3571//}
3572//
3573//test "recovery: invalid extern/inline" {
3574// try testError(
3575// \\inline test "" { a && b; }
3576// , &[_]Error{
3577// .ExpectedFn,
3578// .InvalidAnd,
3579// });
3580// try testError(
3581// \\extern "" test "" { a && b; }
3582// , &[_]Error{
3583// .ExpectedVarDeclOrFn,
3584// .InvalidAnd,
3585// });
3586//}
3587//
3588//test "recovery: missing semicolon" {
3589// try testError(
3590// \\test "" {
3591// \\ comptime a && b
3592// \\ c && d
3593// \\ @foo
3594// \\}
3595// , &[_]Error{
3596// .InvalidAnd,
3597// .ExpectedToken,
3598// .InvalidAnd,
3599// .ExpectedToken,
3600// .ExpectedParamList,
3601// .ExpectedToken,
3602// });
3603//}
3604//
3605//test "recovery: invalid container members" {
3606// try testError(
3607// \\usingnamespace;
3608// \\foo+
3609// \\bar@,
3610// \\while (a == 2) { test "" {}}
3611// \\test "" {
3612// \\ a && b
3613// \\}
3614// , &[_]Error{
3615// .ExpectedExpr,
3616// .ExpectedToken,
3617// .ExpectedToken,
3618// .ExpectedContainerMembers,
3619// .InvalidAnd,
3620// .ExpectedToken,
3621// });
3622//}
3623//
3624//test "recovery: invalid parameter" {
3625// try testError(
3626// \\fn main() void {
3627// \\ a(comptime T: type)
3628// \\}
3629// , &[_]Error{
3630// .ExpectedToken,
3631// });
3632//}
3633//
3634//test "recovery: extra '}' at top level" {
3635// try testError(
3636// \\}}}
3637// \\test "" {
3638// \\ a && b;
3639// \\}
3640// , &[_]Error{
3641// .ExpectedContainerMembers,
3642// .ExpectedContainerMembers,
3643// .ExpectedContainerMembers,
3644// .InvalidAnd,
3645// });
3646//}
3647//
3648//test "recovery: mismatched bracket at top level" {
3649// try testError(
3650// \\const S = struct {
3651// \\ arr: 128]?G
3652// \\};
3653// , &[_]Error{
3654// .ExpectedToken,
3655// });
3656//}
3657//
3658//test "recovery: invalid global error set access" {
3659// try testError(
3660// \\test "" {
3661// \\ error && foo;
3662// \\}
3663// , &[_]Error{
3664// .ExpectedToken,
3665// .ExpectedIdentifier,
3666// .InvalidAnd,
3667// });
3668//}
3669//
3670//test "recovery: invalid asterisk after pointer dereference" {
3671// try testError(
3672// \\test "" {
3673// \\ var sequence = "repeat".*** 10;
3674// \\}
3675// , &[_]Error{
3676// .AsteriskAfterPointerDereference,
3677// });
3678// try testError(
3679// \\test "" {
3680// \\ var sequence = "repeat".** 10&&a;
3681// \\}
3682// , &[_]Error{
3683// .AsteriskAfterPointerDereference,
3684// .InvalidAnd,
3685// });
3686//}
3687//
3688//test "recovery: missing semicolon after if, for, while stmt" {
3689// try testError(
3690// \\test "" {
3691// \\ if (foo) bar
3692// \\ for (foo) |a| bar
3693// \\ while (foo) bar
3694// \\ a && b;
3695// \\}
3696// , &[_]Error{
3697// .ExpectedSemiOrElse,
3698// .ExpectedSemiOrElse,
3699// .ExpectedSemiOrElse,
3700// .InvalidAnd,
3701// });
3702//}
3703//
3704//test "recovery: invalid comptime" {
3705// try testError(
3706// \\comptime
3707// , &[_]Error{
3708// .ExpectedBlockOrField,
3709// });
3710//}
3711//
3712//test "recovery: missing block after for/while loops" {
3713// try testError(
3714// \\test "" { while (foo) }
3715// , &[_]Error{
3716// .ExpectedBlockOrAssignment,
3717// });
3718// try testError(
3719// \\test "" { for (foo) |bar| }
3720// , &[_]Error{
3721// .ExpectedBlockOrAssignment,
3722// });
3723//}
37153724
37163725const std = @import("std");
37173726const mem = std.mem;
lib/std/zig/render.zig+276-280
......@@ -101,6 +101,9 @@ fn renderTopLevelDecl(ais: *Ais, tree: ast.Tree, decl: ast.Node.Index) Error!voi
101101}
102102
103103fn renderContainerDecl(ais: *Ais, tree: ast.Tree, decl: ast.Node.Index, space: Space) Error!void {
104 const token_tags = tree.tokens.items(.tag);
105 const main_tokens = tree.nodes.items(.main_token);
106 const datas = tree.nodes.items(.data);
104107 switch (tree.nodes.items(.tag)[decl]) {
105108 .UsingNamespace,
106109 .FnProtoSimple,
......@@ -112,142 +115,137 @@ fn renderContainerDecl(ais: *Ais, tree: ast.Tree, decl: ast.Node.Index, space: S
112115 .LocalVarDecl,
113116 .SimpleVarDecl,
114117 .AlignedVarDecl,
115 .TestDecl,
116118 .ContainerFieldInit,
117119 .ContainerFieldAlign,
118120 .ContainerField,
119121 => @panic("TODO implement renderContainerDecl"),
120122
121 .Comptime => return renderExpression(ais, tree, decl, space),
122
123 else => unreachable,
124 }
125 //switch (tag) {
126 // .FnProto => {
127 // const fn_proto = @fieldParentPtr(ast.Node.FnProto, "base", decl);
128
129 // try renderDocComments(tree, ais, fn_proto, fn_proto.getDocComments());
123 // .FnProto => {
124 // const fn_proto = @fieldParentPtr(ast.Node.FnProto, "base", decl);
130125
131 // if (fn_proto.getBodyNode()) |body_node| {
132 // try renderExpression(allocator, ais, tree, decl, .Space);
133 // try renderExpression(allocator, ais, tree, body_node, space);
134 // } else {
135 // try renderExpression(allocator, ais, tree, decl, .None);
136 // try renderToken(ais, tree, tree.nextToken(decl.lastToken()), space);
137 // }
138 // },
139
140 // .Use => {
141 // const use_decl = @fieldParentPtr(ast.Node.Use, "base", decl);
142
143 // if (use_decl.visib_token) |visib_token| {
144 // try renderToken(ais, tree, visib_token, .Space); // pub
145 // }
146 // try renderToken(ais, tree, use_decl.use_token, .Space); // usingnamespace
147 // try renderExpression(allocator, ais, tree, use_decl.expr, .None);
148 // try renderToken(ais, tree, use_decl.semicolon_token, space); // ;
149 // },
126 // try renderDocComments(ais, tree, fn_proto, fn_proto.getDocComments());
150127
151 // .VarDecl => {
152 // const var_decl = @fieldParentPtr(ast.Node.VarDecl, "base", decl);
128 // if (fn_proto.getBodyNode()) |body_node| {
129 // try renderExpression(ais, tree, decl, .Space);
130 // try renderExpression(ais, tree, body_node, space);
131 // } else {
132 // try renderExpression(ais, tree, decl, .None);
133 // try renderToken(ais, tree, tree.nextToken(decl.lastToken()), space);
134 // }
135 // },
153136
154 // try renderDocComments(tree, ais, var_decl, var_decl.getDocComments());
155 // try renderVarDecl(allocator, ais, tree, var_decl);
156 // },
137 // .Use => {
138 // const use_decl = @fieldParentPtr(ast.Node.Use, "base", decl);
157139
158 // .TestDecl => {
159 // const test_decl = @fieldParentPtr(ast.Node.TestDecl, "base", decl);
140 // if (use_decl.visib_token) |visib_token| {
141 // try renderToken(ais, tree, visib_token, .Space); // pub
142 // }
143 // try renderToken(ais, tree, use_decl.use_token, .Space); // usingnamespace
144 // try renderExpression(ais, tree, use_decl.expr, .None);
145 // try renderToken(ais, tree, use_decl.semicolon_token, space); // ;
146 // },
147
148 // .VarDecl => {
149 // const var_decl = @fieldParentPtr(ast.Node.VarDecl, "base", decl);
150
151 // try renderDocComments(ais, tree, var_decl, var_decl.getDocComments());
152 // try renderVarDecl(allocator, ais, tree, var_decl);
153 // },
154
155 .TestDecl => {
156 const test_token = main_tokens[decl];
157 try renderDocComments(ais, tree, test_token);
158 try renderToken(ais, tree, test_token, .Space);
159 if (token_tags[test_token + 1] == .StringLiteral) {
160 try renderToken(ais, tree, test_token + 1, .Space);
161 }
162 try renderExpression(ais, tree, datas[decl].rhs, space);
163 },
160164
161 // try renderDocComments(tree, ais, test_decl, test_decl.doc_comments);
162 // try renderToken(ais, tree, test_decl.test_token, .Space);
163 // if (test_decl.name) |name|
164 // try renderExpression(allocator, ais, tree, name, .Space);
165 // try renderExpression(allocator, ais, tree, test_decl.body_node, space);
166 // },
165 // .ContainerField => {
166 // const field = @fieldParentPtr(ast.Node.ContainerField, "base", decl);
167167
168 // .ContainerField => {
169 // const field = @fieldParentPtr(ast.Node.ContainerField, "base", decl);
168 // try renderDocComments(ais, tree, field, field.doc_comments);
169 // if (field.comptime_token) |t| {
170 // try renderToken(ais, tree, t, .Space); // comptime
171 // }
170172
171 // try renderDocComments(tree, ais, field, field.doc_comments);
172 // if (field.comptime_token) |t| {
173 // try renderToken(ais, tree, t, .Space); // comptime
174 // }
173 // const src_has_trailing_comma = blk: {
174 // const maybe_comma = tree.nextToken(field.lastToken());
175 // break :blk tree.token_tags[maybe_comma] == .Comma;
176 // };
175177
176 // const src_has_trailing_comma = blk: {
177 // const maybe_comma = tree.nextToken(field.lastToken());
178 // break :blk tree.token_tags[maybe_comma] == .Comma;
179 // };
180
181 // // The trailing comma is emitted at the end, but if it's not present
182 // // we still have to respect the specified `space` parameter
183 // const last_token_space: Space = if (src_has_trailing_comma) .None else space;
184
185 // if (field.type_expr == null and field.value_expr == null) {
186 // try renderToken(ais, tree, field.name_token, last_token_space); // name
187 // } else if (field.type_expr != null and field.value_expr == null) {
188 // try renderToken(ais, tree, field.name_token, .None); // name
189 // try renderToken(ais, tree, tree.nextToken(field.name_token), .Space); // :
190
191 // if (field.align_expr) |align_value_expr| {
192 // try renderExpression(allocator, ais, tree, field.type_expr.?, .Space); // type
193 // const lparen_token = tree.prevToken(align_value_expr.firstToken());
194 // const align_kw = tree.prevToken(lparen_token);
195 // const rparen_token = tree.nextToken(align_value_expr.lastToken());
196 // try renderToken(ais, tree, align_kw, .None); // align
197 // try renderToken(ais, tree, lparen_token, .None); // (
198 // try renderExpression(allocator, ais, tree, align_value_expr, .None); // alignment
199 // try renderToken(ais, tree, rparen_token, last_token_space); // )
200 // } else {
201 // try renderExpression(allocator, ais, tree, field.type_expr.?, last_token_space); // type
202 // }
203 // } else if (field.type_expr == null and field.value_expr != null) {
204 // try renderToken(ais, tree, field.name_token, .Space); // name
205 // try renderToken(ais, tree, tree.nextToken(field.name_token), .Space); // =
206 // try renderExpression(allocator, ais, tree, field.value_expr.?, last_token_space); // value
207 // } else {
208 // try renderToken(ais, tree, field.name_token, .None); // name
209 // try renderToken(ais, tree, tree.nextToken(field.name_token), .Space); // :
210
211 // if (field.align_expr) |align_value_expr| {
212 // try renderExpression(allocator, ais, tree, field.type_expr.?, .Space); // type
213 // const lparen_token = tree.prevToken(align_value_expr.firstToken());
214 // const align_kw = tree.prevToken(lparen_token);
215 // const rparen_token = tree.nextToken(align_value_expr.lastToken());
216 // try renderToken(ais, tree, align_kw, .None); // align
217 // try renderToken(ais, tree, lparen_token, .None); // (
218 // try renderExpression(allocator, ais, tree, align_value_expr, .None); // alignment
219 // try renderToken(ais, tree, rparen_token, .Space); // )
220 // } else {
221 // try renderExpression(allocator, ais, tree, field.type_expr.?, .Space); // type
222 // }
223 // try renderToken(ais, tree, tree.prevToken(field.value_expr.?.firstToken()), .Space); // =
224 // try renderExpression(allocator, ais, tree, field.value_expr.?, last_token_space); // value
225 // }
178 // // The trailing comma is emitted at the end, but if it's not present
179 // // we still have to respect the specified `space` parameter
180 // const last_token_space: Space = if (src_has_trailing_comma) .None else space;
181
182 // if (field.type_expr == null and field.value_expr == null) {
183 // try renderToken(ais, tree, field.name_token, last_token_space); // name
184 // } else if (field.type_expr != null and field.value_expr == null) {
185 // try renderToken(ais, tree, field.name_token, .None); // name
186 // try renderToken(ais, tree, tree.nextToken(field.name_token), .Space); // :
187
188 // if (field.align_expr) |align_value_expr| {
189 // try renderExpression(ais, tree, field.type_expr.?, .Space); // type
190 // const lparen_token = tree.prevToken(align_value_expr.firstToken());
191 // const align_kw = tree.prevToken(lparen_token);
192 // const rparen_token = tree.nextToken(align_value_expr.lastToken());
193 // try renderToken(ais, tree, align_kw, .None); // align
194 // try renderToken(ais, tree, lparen_token, .None); // (
195 // try renderExpression(ais, tree, align_value_expr, .None); // alignment
196 // try renderToken(ais, tree, rparen_token, last_token_space); // )
197 // } else {
198 // try renderExpression(ais, tree, field.type_expr.?, last_token_space); // type
199 // }
200 // } else if (field.type_expr == null and field.value_expr != null) {
201 // try renderToken(ais, tree, field.name_token, .Space); // name
202 // try renderToken(ais, tree, tree.nextToken(field.name_token), .Space); // =
203 // try renderExpression(ais, tree, field.value_expr.?, last_token_space); // value
204 // } else {
205 // try renderToken(ais, tree, field.name_token, .None); // name
206 // try renderToken(ais, tree, tree.nextToken(field.name_token), .Space); // :
207
208 // if (field.align_expr) |align_value_expr| {
209 // try renderExpression(ais, tree, field.type_expr.?, .Space); // type
210 // const lparen_token = tree.prevToken(align_value_expr.firstToken());
211 // const align_kw = tree.prevToken(lparen_token);
212 // const rparen_token = tree.nextToken(align_value_expr.lastToken());
213 // try renderToken(ais, tree, align_kw, .None); // align
214 // try renderToken(ais, tree, lparen_token, .None); // (
215 // try renderExpression(ais, tree, align_value_expr, .None); // alignment
216 // try renderToken(ais, tree, rparen_token, .Space); // )
217 // } else {
218 // try renderExpression(ais, tree, field.type_expr.?, .Space); // type
219 // }
220 // try renderToken(ais, tree, tree.prevToken(field.value_expr.?.firstToken()), .Space); // =
221 // try renderExpression(ais, tree, field.value_expr.?, last_token_space); // value
222 // }
226223
227 // if (src_has_trailing_comma) {
228 // const comma = tree.nextToken(field.lastToken());
229 // try renderToken(ais, tree, comma, space);
230 // }
231 // },
224 // if (src_has_trailing_comma) {
225 // const comma = tree.nextToken(field.lastToken());
226 // try renderToken(ais, tree, comma, space);
227 // }
228 // },
229 .Comptime => return renderExpression(ais, tree, decl, space),
232230
233 // .DocComment => {
234 // const comment = @fieldParentPtr(ast.Node.DocComment, "base", decl);
235 // const kind = tree.token_tags[comment.first_line];
236 // try renderToken(ais, tree, comment.first_line, .Newline);
237 // var tok_i = comment.first_line + 1;
238 // while (true) : (tok_i += 1) {
239 // const tok_id = tree.token_tags[tok_i];
240 // if (tok_id == kind) {
241 // try renderToken(ais, tree, tok_i, .Newline);
242 // } else if (tok_id == .LineComment) {
243 // continue;
244 // } else {
245 // break;
246 // }
247 // }
248 // },
249 // else => unreachable,
250 //}
231 // .DocComment => {
232 // const comment = @fieldParentPtr(ast.Node.DocComment, "base", decl);
233 // const kind = tree.token_tags[comment.first_line];
234 // try renderToken(ais, tree, comment.first_line, .Newline);
235 // var tok_i = comment.first_line + 1;
236 // while (true) : (tok_i += 1) {
237 // const tok_id = tree.token_tags[tok_i];
238 // if (tok_id == kind) {
239 // try renderToken(ais, tree, tok_i, .Newline);
240 // } else if (tok_id == .LineComment) {
241 // continue;
242 // } else {
243 // break;
244 // }
245 // }
246 // },
247 else => unreachable,
248 }
251249}
252250
253251fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Space) Error!void {
......@@ -319,9 +317,9 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
319317
320318 // try renderToken(ais, tree, defer_node.defer_token, Space.Space);
321319 // if (defer_node.payload) |payload| {
322 // try renderExpression(allocator, ais, tree, payload, Space.Space);
320 // try renderExpression(ais, tree, payload, Space.Space);
323321 // }
324 // return renderExpression(allocator, ais, tree, defer_node.expr, space);
322 // return renderExpression(ais, tree, defer_node.expr, space);
325323 //},
326324 .Comptime => {
327325 const comptime_token = tree.nodes.items(.main_token)[node];
......@@ -337,7 +335,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
337335 // } else {
338336 // try renderToken(ais, tree, nosuspend_node.nosuspend_token, Space.Space);
339337 // }
340 // return renderExpression(allocator, ais, tree, nosuspend_node.expr, space);
338 // return renderExpression(ais, tree, nosuspend_node.expr, space);
341339 //},
342340
343341 //.Suspend => {
......@@ -345,7 +343,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
345343
346344 // if (suspend_node.body) |body| {
347345 // try renderToken(ais, tree, suspend_node.suspend_token, Space.Space);
348 // return renderExpression(allocator, ais, tree, body, space);
346 // return renderExpression(ais, tree, body, space);
349347 // } else {
350348 // return renderToken(ais, tree, suspend_node.suspend_token, space);
351349 // }
......@@ -355,7 +353,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
355353 // const infix_op_node = @fieldParentPtr(ast.Node.Catch, "base", base);
356354
357355 // const op_space = Space.Space;
358 // try renderExpression(allocator, ais, tree, infix_op_node.lhs, op_space);
356 // try renderExpression(ais, tree, infix_op_node.lhs, op_space);
359357
360358 // const after_op_space = blk: {
361359 // const same_line = tree.tokensOnSameLine(infix_op_node.op_token, tree.nextToken(infix_op_node.op_token));
......@@ -365,11 +363,11 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
365363 // try renderToken(ais, tree, infix_op_node.op_token, after_op_space);
366364
367365 // if (infix_op_node.payload) |payload| {
368 // try renderExpression(allocator, ais, tree, payload, Space.Space);
366 // try renderExpression(ais, tree, payload, Space.Space);
369367 // }
370368
371369 // ais.pushIndentOneShot();
372 // return renderExpression(allocator, ais, tree, infix_op_node.rhs, space);
370 // return renderExpression(ais, tree, infix_op_node.rhs, space);
373371 //},
374372
375373 //.Add,
......@@ -421,7 +419,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
421419 // .Period, .ErrorUnion, .Range => Space.None,
422420 // else => Space.Space,
423421 // };
424 // try renderExpression(allocator, ais, tree, infix_op_node.lhs, op_space);
422 // try renderExpression(ais, tree, infix_op_node.lhs, op_space);
425423
426424 // const after_op_space = blk: {
427425 // const loc = tree.tokenLocation(tree.token_locs[infix_op_node.op_token].end, tree.nextToken(infix_op_node.op_token));
......@@ -434,7 +432,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
434432 // try renderToken(ais, tree, infix_op_node.op_token, after_op_space);
435433 // }
436434 // ais.pushIndentOneShot();
437 // return renderExpression(allocator, ais, tree, infix_op_node.rhs, space);
435 // return renderExpression(ais, tree, infix_op_node.rhs, space);
438436 //},
439437
440438 //.BitNot,
......@@ -446,7 +444,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
446444 //=> {
447445 // const casted_node = @fieldParentPtr(ast.Node.SimplePrefixOp, "base", base);
448446 // try renderToken(ais, tree, casted_node.op_token, Space.None);
449 // return renderExpression(allocator, ais, tree, casted_node.rhs, space);
447 // return renderExpression(ais, tree, casted_node.rhs, space);
450448 //},
451449
452450 //.Try,
......@@ -455,7 +453,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
455453 //=> {
456454 // const casted_node = @fieldParentPtr(ast.Node.SimplePrefixOp, "base", base);
457455 // try renderToken(ais, tree, casted_node.op_token, Space.Space);
458 // return renderExpression(allocator, ais, tree, casted_node.rhs, space);
456 // return renderExpression(ais, tree, casted_node.rhs, space);
459457 //},
460458
461459 //.ArrayType => {
......@@ -503,7 +501,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
503501 // .LBracket => Space.None,
504502 // else => Space.Space,
505503 // };
506 // try renderExpression(allocator, ais, tree, sentinel, sentinel_space);
504 // try renderExpression(ais, tree, sentinel, sentinel_space);
507505 // }
508506 // switch (op_tok_id) {
509507 // .Asterisk, .AsteriskAsterisk => {},
......@@ -520,16 +518,16 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
520518 // try renderToken(ais, tree, align_token, Space.None); // align
521519 // try renderToken(ais, tree, lparen_token, Space.None); // (
522520
523 // try renderExpression(allocator, ais, tree, align_info.node, Space.None);
521 // try renderExpression(ais, tree, align_info.node, Space.None);
524522
525523 // if (align_info.bit_range) |bit_range| {
526524 // const colon1 = tree.prevToken(bit_range.start.firstToken());
527525 // const colon2 = tree.prevToken(bit_range.end.firstToken());
528526
529527 // try renderToken(ais, tree, colon1, Space.None); // :
530 // try renderExpression(allocator, ais, tree, bit_range.start, Space.None);
528 // try renderExpression(ais, tree, bit_range.start, Space.None);
531529 // try renderToken(ais, tree, colon2, Space.None); // :
532 // try renderExpression(allocator, ais, tree, bit_range.end, Space.None);
530 // try renderExpression(ais, tree, bit_range.end, Space.None);
533531
534532 // const rparen_token = tree.nextToken(bit_range.end.lastToken());
535533 // try renderToken(ais, tree, rparen_token, Space.Space); // )
......@@ -544,7 +542,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
544542 // if (ptr_type.ptr_info.volatile_token) |volatile_token| {
545543 // try renderToken(ais, tree, volatile_token, Space.Space); // volatile
546544 // }
547 // return renderExpression(allocator, ais, tree, ptr_type.rhs, space);
545 // return renderExpression(ais, tree, ptr_type.rhs, space);
548546 //},
549547
550548 //.SliceType => {
......@@ -553,7 +551,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
553551 // if (slice_type.ptr_info.sentinel) |sentinel| {
554552 // const colon_token = tree.prevToken(sentinel.firstToken());
555553 // try renderToken(ais, tree, colon_token, Space.None); // :
556 // try renderExpression(allocator, ais, tree, sentinel, Space.None);
554 // try renderExpression(ais, tree, sentinel, Space.None);
557555 // try renderToken(ais, tree, tree.nextToken(sentinel.lastToken()), Space.None); // ]
558556 // } else {
559557 // try renderToken(ais, tree, tree.nextToken(slice_type.op_token), Space.None); // ]
......@@ -569,16 +567,16 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
569567 // try renderToken(ais, tree, align_token, Space.None); // align
570568 // try renderToken(ais, tree, lparen_token, Space.None); // (
571569
572 // try renderExpression(allocator, ais, tree, align_info.node, Space.None);
570 // try renderExpression(ais, tree, align_info.node, Space.None);
573571
574572 // if (align_info.bit_range) |bit_range| {
575573 // const colon1 = tree.prevToken(bit_range.start.firstToken());
576574 // const colon2 = tree.prevToken(bit_range.end.firstToken());
577575
578576 // try renderToken(ais, tree, colon1, Space.None); // :
579 // try renderExpression(allocator, ais, tree, bit_range.start, Space.None);
577 // try renderExpression(ais, tree, bit_range.start, Space.None);
580578 // try renderToken(ais, tree, colon2, Space.None); // :
581 // try renderExpression(allocator, ais, tree, bit_range.end, Space.None);
579 // try renderExpression(ais, tree, bit_range.end, Space.None);
582580
583581 // const rparen_token = tree.nextToken(bit_range.end.lastToken());
584582 // try renderToken(ais, tree, rparen_token, Space.Space); // )
......@@ -593,7 +591,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
593591 // if (slice_type.ptr_info.volatile_token) |volatile_token| {
594592 // try renderToken(ais, tree, volatile_token, Space.Space);
595593 // }
596 // return renderExpression(allocator, ais, tree, slice_type.rhs, space);
594 // return renderExpression(ais, tree, slice_type.rhs, space);
597595 //},
598596
599597 //.ArrayInitializer, .ArrayInitializerDot => {
......@@ -622,7 +620,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
622620
623621 // switch (lhs) {
624622 // .dot => |dot| try renderToken(ais, tree, dot, Space.None),
625 // .node => |node| try renderExpression(allocator, ais, tree, node, Space.None),
623 // .node => |node| try renderExpression(ais, tree, node, Space.None),
626624 // }
627625
628626 // if (exprs.len == 0) {
......@@ -634,7 +632,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
634632 // const expr = exprs[0];
635633
636634 // try renderToken(ais, tree, lbrace, Space.None);
637 // try renderExpression(allocator, ais, tree, expr, Space.None);
635 // try renderExpression(ais, tree, expr, Space.None);
638636 // return renderToken(ais, tree, rtoken, space);
639637 // }
640638
......@@ -748,7 +746,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
748746 // for (section_exprs) |expr, i| {
749747 // if (i + 1 < section_exprs.len) {
750748 // const next_expr = section_exprs[i + 1];
751 // try renderExpression(allocator, ais, tree, expr, Space.None);
749 // try renderExpression(ais, tree, expr, Space.None);
752750
753751 // const comma = tree.nextToken(expr.*.lastToken());
754752
......@@ -775,10 +773,10 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
775773 // } else {
776774 // const maybe_comma = tree.nextToken(expr.*.lastToken());
777775 // if (tree.token_tags[maybe_comma] == .Comma) {
778 // try renderExpression(allocator, ais, tree, expr, Space.None); // ,
776 // try renderExpression(ais, tree, expr, Space.None); // ,
779777 // try renderToken(ais, tree, maybe_comma, Space.Newline); // ,
780778 // } else {
781 // try renderExpression(allocator, ais, tree, expr, Space.Comma); // ,
779 // try renderExpression(ais, tree, expr, Space.Comma); // ,
782780 // }
783781 // }
784782 // }
......@@ -797,11 +795,11 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
797795 // for (exprs) |expr, i| {
798796 // if (i + 1 < exprs.len) {
799797 // const next_expr = exprs[i + 1];
800 // try renderExpression(allocator, ais, tree, expr, Space.None);
798 // try renderExpression(ais, tree, expr, Space.None);
801799 // const comma = tree.nextToken(expr.*.lastToken());
802800 // try renderToken(ais, tree, comma, Space.Space); // ,
803801 // } else {
804 // try renderExpression(allocator, ais, tree, expr, Space.Space);
802 // try renderExpression(ais, tree, expr, Space.Space);
805803 // }
806804 // }
807805
......@@ -835,7 +833,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
835833 // if (field_inits.len == 0) {
836834 // switch (lhs) {
837835 // .dot => |dot| try renderToken(ais, tree, dot, Space.None),
838 // .node => |node| try renderExpression(allocator, ais, tree, node, Space.None),
836 // .node => |node| try renderExpression(ais, tree, node, Space.None),
839837 // }
840838
841839 // {
......@@ -886,10 +884,10 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
886884
887885 // switch (lhs) {
888886 // .dot => |dot| try renderToken(ais, tree, dot, Space.None),
889 // .node => |node| try renderExpression(allocator, ais, tree, node, Space.None),
887 // .node => |node| try renderExpression(ais, tree, node, Space.None),
890888 // }
891889 // try renderToken(ais, tree, lbrace, Space.Space);
892 // try renderExpression(allocator, ais, tree, field_inits[0], Space.Space);
890 // try renderExpression(ais, tree, field_inits[0], Space.Space);
893891 // return renderToken(ais, tree, rtoken, space);
894892 // }
895893
......@@ -897,18 +895,18 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
897895 // // render all on one line, no trailing comma
898896 // switch (lhs) {
899897 // .dot => |dot| try renderToken(ais, tree, dot, Space.None),
900 // .node => |node| try renderExpression(allocator, ais, tree, node, Space.None),
898 // .node => |node| try renderExpression(ais, tree, node, Space.None),
901899 // }
902900 // try renderToken(ais, tree, lbrace, Space.Space);
903901
904902 // for (field_inits) |field_init, i| {
905903 // if (i + 1 < field_inits.len) {
906 // try renderExpression(allocator, ais, tree, field_init, Space.None);
904 // try renderExpression(ais, tree, field_init, Space.None);
907905
908906 // const comma = tree.nextToken(field_init.lastToken());
909907 // try renderToken(ais, tree, comma, Space.Space);
910908 // } else {
911 // try renderExpression(allocator, ais, tree, field_init, Space.Space);
909 // try renderExpression(ais, tree, field_init, Space.Space);
912910 // }
913911 // }
914912
......@@ -918,7 +916,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
918916 // {
919917 // switch (lhs) {
920918 // .dot => |dot| try renderToken(ais, tree, dot, Space.None),
921 // .node => |node| try renderExpression(allocator, ais, tree, node, Space.None),
919 // .node => |node| try renderExpression(ais, tree, node, Space.None),
922920 // }
923921
924922 // ais.pushIndentNextLine();
......@@ -929,14 +927,14 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
929927 // for (field_inits) |field_init, i| {
930928 // if (i + 1 < field_inits.len) {
931929 // const next_field_init = field_inits[i + 1];
932 // try renderExpression(allocator, ais, tree, field_init, Space.None);
930 // try renderExpression(ais, tree, field_init, Space.None);
933931
934932 // const comma = tree.nextToken(field_init.lastToken());
935933 // try renderToken(ais, tree, comma, Space.Newline);
936934
937935 // try renderExtraNewline(tree, ais, next_field_init);
938936 // } else {
939 // try renderExpression(allocator, ais, tree, field_init, Space.Comma);
937 // try renderExpression(ais, tree, field_init, Space.Comma);
940938 // }
941939 // }
942940 // }
......@@ -950,7 +948,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
950948 // try renderToken(ais, tree, async_token, Space.Space);
951949 // }
952950
953 // try renderExpression(allocator, ais, tree, call.lhs, Space.None);
951 // try renderExpression(ais, tree, call.lhs, Space.None);
954952
955953 // const lparen = tree.nextToken(call.lhs.lastToken());
956954
......@@ -974,7 +972,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
974972 // for (params) |param_node, i| {
975973 // if (i + 1 < params.len) {
976974 // const next_node = params[i + 1];
977 // try renderExpression(allocator, ais, tree, param_node, Space.None);
975 // try renderExpression(ais, tree, param_node, Space.None);
978976
979977 // // Unindent the comma for multiline string literals
980978 // const maybe_multiline_string = param_node.firstToken();
......@@ -986,7 +984,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
986984 // try renderToken(ais, tree, comma, Space.Newline); // ,
987985 // try renderExtraNewline(tree, ais, next_node);
988986 // } else {
989 // try renderExpression(allocator, ais, tree, param_node, Space.Comma);
987 // try renderExpression(ais, tree, param_node, Space.Comma);
990988 // }
991989 // }
992990 // }
......@@ -1003,7 +1001,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
10031001 // ais.pushIndentOneShot();
10041002 // }
10051003
1006 // try renderExpression(allocator, ais, tree, param_node, Space.None);
1004 // try renderExpression(ais, tree, param_node, Space.None);
10071005
10081006 // if (i + 1 < params.len) {
10091007 // const comma = tree.nextToken(param_node.lastToken());
......@@ -1019,7 +1017,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
10191017 // const lbracket = tree.nextToken(suffix_op.lhs.lastToken());
10201018 // const rbracket = tree.nextToken(suffix_op.index_expr.lastToken());
10211019
1022 // try renderExpression(allocator, ais, tree, suffix_op.lhs, Space.None);
1020 // try renderExpression(ais, tree, suffix_op.lhs, Space.None);
10231021 // try renderToken(ais, tree, lbracket, Space.None); // [
10241022
10251023 // const starts_with_comment = tree.token_tags[lbracket + 1] == .LineComment;
......@@ -1029,7 +1027,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
10291027
10301028 // ais.pushIndent();
10311029 // defer ais.popIndent();
1032 // try renderExpression(allocator, ais, tree, suffix_op.index_expr, new_space);
1030 // try renderExpression(ais, tree, suffix_op.index_expr, new_space);
10331031 // }
10341032 // if (starts_with_comment) try ais.maybeInsertNewline();
10351033 // return renderToken(ais, tree, rbracket, space); // ]
......@@ -1037,7 +1035,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
10371035
10381036 //.Slice => {
10391037 // const suffix_op = base.castTag(.Slice).?;
1040 // try renderExpression(allocator, ais, tree, suffix_op.lhs, Space.None);
1038 // try renderExpression(ais, tree, suffix_op.lhs, Space.None);
10411039
10421040 // const lbracket = tree.prevToken(suffix_op.start.firstToken());
10431041 // const dotdot = tree.nextToken(suffix_op.start.lastToken());
......@@ -1048,16 +1046,16 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
10481046 // const after_op_space = if (suffix_op.end != null) after_start_space else Space.None;
10491047
10501048 // try renderToken(ais, tree, lbracket, Space.None); // [
1051 // try renderExpression(allocator, ais, tree, suffix_op.start, after_start_space);
1049 // try renderExpression(ais, tree, suffix_op.start, after_start_space);
10521050 // try renderToken(ais, tree, dotdot, after_op_space); // ..
10531051 // if (suffix_op.end) |end| {
10541052 // const after_end_space = if (suffix_op.sentinel != null) Space.Space else Space.None;
1055 // try renderExpression(allocator, ais, tree, end, after_end_space);
1053 // try renderExpression(ais, tree, end, after_end_space);
10561054 // }
10571055 // if (suffix_op.sentinel) |sentinel| {
10581056 // const colon = tree.prevToken(sentinel.firstToken());
10591057 // try renderToken(ais, tree, colon, Space.None); // :
1060 // try renderExpression(allocator, ais, tree, sentinel, Space.None);
1058 // try renderExpression(ais, tree, sentinel, Space.None);
10611059 // }
10621060 // return renderToken(ais, tree, suffix_op.rtoken, space); // ]
10631061 //},
......@@ -1065,13 +1063,13 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
10651063 //.Deref => {
10661064 // const suffix_op = base.castTag(.Deref).?;
10671065
1068 // try renderExpression(allocator, ais, tree, suffix_op.lhs, Space.None);
1066 // try renderExpression(ais, tree, suffix_op.lhs, Space.None);
10691067 // return renderToken(ais, tree, suffix_op.rtoken, space); // .*
10701068 //},
10711069 //.UnwrapOptional => {
10721070 // const suffix_op = base.castTag(.UnwrapOptional).?;
10731071
1074 // try renderExpression(allocator, ais, tree, suffix_op.lhs, Space.None);
1072 // try renderExpression(ais, tree, suffix_op.lhs, Space.None);
10751073 // try renderToken(ais, tree, tree.prevToken(suffix_op.rtoken), Space.None); // .
10761074 // return renderToken(ais, tree, suffix_op.rtoken, space); // ?
10771075 //},
......@@ -1095,7 +1093,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
10951093 // }
10961094 // try renderToken(ais, tree, label, Space.Space); // label
10971095 // }
1098 // return renderExpression(allocator, ais, tree, maybe_rhs.?, space);
1096 // return renderExpression(ais, tree, maybe_rhs.?, space);
10991097 //},
11001098
11011099 //.Continue => {
......@@ -1114,7 +1112,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
11141112 // const flow_expr = base.castTag(.Return).?;
11151113 // if (flow_expr.getRHS()) |rhs| {
11161114 // try renderToken(ais, tree, flow_expr.ltoken, Space.Space);
1117 // return renderExpression(allocator, ais, tree, rhs, space);
1115 // return renderExpression(ais, tree, rhs, space);
11181116 // } else {
11191117 // return renderToken(ais, tree, flow_expr.ltoken, space);
11201118 // }
......@@ -1124,7 +1122,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
11241122 // const payload = @fieldParentPtr(ast.Node.Payload, "base", base);
11251123
11261124 // try renderToken(ais, tree, payload.lpipe, Space.None);
1127 // try renderExpression(allocator, ais, tree, payload.error_symbol, Space.None);
1125 // try renderExpression(ais, tree, payload.error_symbol, Space.None);
11281126 // return renderToken(ais, tree, payload.rpipe, space);
11291127 //},
11301128
......@@ -1135,7 +1133,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
11351133 // if (payload.ptr_token) |ptr_token| {
11361134 // try renderToken(ais, tree, ptr_token, Space.None);
11371135 // }
1138 // try renderExpression(allocator, ais, tree, payload.value_symbol, Space.None);
1136 // try renderExpression(ais, tree, payload.value_symbol, Space.None);
11391137 // return renderToken(ais, tree, payload.rpipe, space);
11401138 //},
11411139
......@@ -1146,13 +1144,13 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
11461144 // if (payload.ptr_token) |ptr_token| {
11471145 // try renderToken(ais, tree, ptr_token, Space.None);
11481146 // }
1149 // try renderExpression(allocator, ais, tree, payload.value_symbol, Space.None);
1147 // try renderExpression(ais, tree, payload.value_symbol, Space.None);
11501148
11511149 // if (payload.index_symbol) |index_symbol| {
11521150 // const comma = tree.nextToken(payload.value_symbol.lastToken());
11531151
11541152 // try renderToken(ais, tree, comma, Space.Space);
1155 // try renderExpression(allocator, ais, tree, index_symbol, Space.None);
1153 // try renderExpression(ais, tree, index_symbol, Space.None);
11561154 // }
11571155
11581156 // return renderToken(ais, tree, payload.rpipe, space);
......@@ -1164,7 +1162,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
11641162 // try renderToken(ais, tree, grouped_expr.lparen, Space.None);
11651163 // {
11661164 // ais.pushIndentOneShot();
1167 // try renderExpression(allocator, ais, tree, grouped_expr.expr, Space.None);
1165 // try renderExpression(ais, tree, grouped_expr.expr, Space.None);
11681166 // }
11691167 // return renderToken(ais, tree, grouped_expr.rparen, space);
11701168 //},
......@@ -1175,7 +1173,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
11751173 // try renderToken(ais, tree, field_init.period_token, Space.None); // .
11761174 // try renderToken(ais, tree, field_init.name_token, Space.Space); // name
11771175 // try renderToken(ais, tree, tree.nextToken(field_init.name_token), Space.Space); // =
1178 // return renderExpression(allocator, ais, tree, field_init.expr, space);
1176 // return renderExpression(ais, tree, field_init.expr, space);
11791177 //},
11801178
11811179 //.ContainerDecl => {
......@@ -1200,7 +1198,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
12001198
12011199 // if (enum_tag_type) |expr| {
12021200 // try renderToken(ais, tree, tree.nextToken(enum_token), Space.None); // (
1203 // try renderExpression(allocator, ais, tree, expr, Space.None);
1201 // try renderExpression(ais, tree, expr, Space.None);
12041202
12051203 // const rparen = tree.nextToken(expr.lastToken());
12061204 // try renderToken(ais, tree, rparen, Space.None); // )
......@@ -1216,7 +1214,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
12161214 // const rparen = tree.nextToken(type_expr.lastToken());
12171215
12181216 // try renderToken(ais, tree, lparen, Space.None); // (
1219 // try renderExpression(allocator, ais, tree, type_expr, Space.None);
1217 // try renderExpression(ais, tree, type_expr, Space.None);
12201218 // try renderToken(ais, tree, rparen, Space.Space); // )
12211219 // },
12221220 // }
......@@ -1317,7 +1315,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
13171315
13181316 // try renderToken(ais, tree, err_set_decl.error_token, Space.None); // error
13191317 // try renderToken(ais, tree, lbrace, Space.None); // {
1320 // try renderExpression(allocator, ais, tree, node, Space.None);
1318 // try renderExpression(ais, tree, node, Space.None);
13211319 // return renderToken(ais, tree, err_set_decl.rbrace_token, space); // }
13221320 // }
13231321
......@@ -1337,12 +1335,12 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
13371335 // const decls = err_set_decl.decls();
13381336 // for (decls) |node, i| {
13391337 // if (i + 1 < decls.len) {
1340 // try renderExpression(allocator, ais, tree, node, Space.None);
1338 // try renderExpression(ais, tree, node, Space.None);
13411339 // try renderToken(ais, tree, tree.nextToken(node.lastToken()), Space.Newline); // ,
13421340
13431341 // try renderExtraNewline(tree, ais, decls[i + 1]);
13441342 // } else {
1345 // try renderExpression(allocator, ais, tree, node, Space.Comma);
1343 // try renderExpression(ais, tree, node, Space.Comma);
13461344 // }
13471345 // }
13481346 // }
......@@ -1354,14 +1352,14 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
13541352 // const decls = err_set_decl.decls();
13551353 // for (decls) |node, i| {
13561354 // if (i + 1 < decls.len) {
1357 // try renderExpression(allocator, ais, tree, node, Space.None);
1355 // try renderExpression(ais, tree, node, Space.None);
13581356
13591357 // const comma_token = tree.nextToken(node.lastToken());
13601358 // assert(tree.token_tags[comma_token] == .Comma);
13611359 // try renderToken(ais, tree, comma_token, Space.Space); // ,
13621360 // try renderExtraNewline(tree, ais, decls[i + 1]);
13631361 // } else {
1364 // try renderExpression(allocator, ais, tree, node, Space.Space);
1362 // try renderExpression(ais, tree, node, Space.Space);
13651363 // }
13661364 // }
13671365
......@@ -1372,7 +1370,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
13721370 //.ErrorTag => {
13731371 // const tag = @fieldParentPtr(ast.Node.ErrorTag, "base", base);
13741372
1375 // try renderDocComments(tree, ais, tag, tag.doc_comments);
1373 // try renderDocComments(ais, tree, tag, tag.doc_comments);
13761374 // return renderToken(ais, tree, tag.name_token, space); // name
13771375 //},
13781376
......@@ -1431,7 +1429,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
14311429 // if (param_node.*.tag == .MultilineStringLiteral or tree.token_tags[maybe_comment] == .LineComment) {
14321430 // ais.pushIndentOneShot();
14331431 // }
1434 // try renderExpression(allocator, ais, tree, param_node, Space.None);
1432 // try renderExpression(ais, tree, param_node, Space.None);
14351433
14361434 // if (i + 1 < params.len) {
14371435 // const comma_token = tree.nextToken(param_node.lastToken());
......@@ -1445,7 +1443,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
14451443 // try renderToken(ais, tree, lparen, Space.Newline); // (
14461444
14471445 // for (builtin_call.params()) |param_node| {
1448 // try renderExpression(allocator, ais, tree, param_node, Space.Comma);
1446 // try renderExpression(ais, tree, param_node, Space.Comma);
14491447 // }
14501448 // }
14511449
......@@ -1468,7 +1466,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
14681466 // }
14691467
14701468 // if (fn_proto.getLibName()) |lib_name| {
1471 // try renderExpression(allocator, ais, tree, lib_name, Space.Space);
1469 // try renderExpression(ais, tree, lib_name, Space.Space);
14721470 // }
14731471
14741472 // const lparen = if (fn_proto.getNameToken()) |name_token| blk: {
......@@ -1541,7 +1539,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
15411539
15421540 // try renderToken(ais, tree, align_kw, Space.None); // align
15431541 // try renderToken(ais, tree, align_lparen, Space.None); // (
1544 // try renderExpression(allocator, ais, tree, align_expr, Space.None);
1542 // try renderExpression(ais, tree, align_expr, Space.None);
15451543 // try renderToken(ais, tree, align_rparen, Space.Space); // )
15461544 // }
15471545
......@@ -1552,7 +1550,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
15521550
15531551 // try renderToken(ais, tree, section_kw, Space.None); // section
15541552 // try renderToken(ais, tree, section_lparen, Space.None); // (
1555 // try renderExpression(allocator, ais, tree, section_expr, Space.None);
1553 // try renderExpression(ais, tree, section_expr, Space.None);
15561554 // try renderToken(ais, tree, section_rparen, Space.Space); // )
15571555 // }
15581556
......@@ -1563,7 +1561,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
15631561
15641562 // try renderToken(ais, tree, callconv_kw, Space.None); // callconv
15651563 // try renderToken(ais, tree, callconv_lparen, Space.None); // (
1566 // try renderExpression(allocator, ais, tree, callconv_expr, Space.None);
1564 // try renderExpression(ais, tree, callconv_expr, Space.None);
15671565 // try renderToken(ais, tree, callconv_rparen, Space.Space); // )
15681566 // } else if (fn_proto.getIsExternPrototype() != null) {
15691567 // try ais.writer().writeAll("callconv(.C) ");
......@@ -1573,11 +1571,11 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
15731571
15741572 // switch (fn_proto.return_type) {
15751573 // .Explicit => |node| {
1576 // return renderExpression(allocator, ais, tree, node, space);
1574 // return renderExpression(ais, tree, node, space);
15771575 // },
15781576 // .InferErrorSet => |node| {
15791577 // try renderToken(ais, tree, tree.prevToken(node.firstToken()), Space.None); // !
1580 // return renderExpression(allocator, ais, tree, node, space);
1578 // return renderExpression(ais, tree, node, space);
15811579 // },
15821580 // .Invalid => unreachable,
15831581 // }
......@@ -1589,7 +1587,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
15891587 // if (anyframe_type.result) |result| {
15901588 // try renderToken(ais, tree, anyframe_type.anyframe_token, Space.None); // anyframe
15911589 // try renderToken(ais, tree, result.arrow_token, Space.None); // ->
1592 // return renderExpression(allocator, ais, tree, result.return_type, space);
1590 // return renderExpression(ais, tree, result.return_type, space);
15931591 // } else {
15941592 // return renderToken(ais, tree, anyframe_type.anyframe_token, space); // anyframe
15951593 // }
......@@ -1607,13 +1605,13 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
16071605 // const lbrace = tree.nextToken(rparen);
16081606
16091607 // if (switch_node.cases_len == 0) {
1610 // try renderExpression(allocator, ais, tree, switch_node.expr, Space.None);
1608 // try renderExpression(ais, tree, switch_node.expr, Space.None);
16111609 // try renderToken(ais, tree, rparen, Space.Space); // )
16121610 // try renderToken(ais, tree, lbrace, Space.None); // {
16131611 // return renderToken(ais, tree, switch_node.rbrace, space); // }
16141612 // }
16151613
1616 // try renderExpression(allocator, ais, tree, switch_node.expr, Space.None);
1614 // try renderExpression(ais, tree, switch_node.expr, Space.None);
16171615 // try renderToken(ais, tree, rparen, Space.Space); // )
16181616
16191617 // {
......@@ -1623,7 +1621,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
16231621
16241622 // const cases = switch_node.cases();
16251623 // for (cases) |node, i| {
1626 // try renderExpression(allocator, ais, tree, node, Space.Comma);
1624 // try renderExpression(ais, tree, node, Space.Comma);
16271625
16281626 // if (i + 1 < cases.len) {
16291627 // try renderExtraNewline(tree, ais, cases[i + 1]);
......@@ -1648,26 +1646,26 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
16481646 // const items = switch_case.items();
16491647 // for (items) |node, i| {
16501648 // if (i + 1 < items.len) {
1651 // try renderExpression(allocator, ais, tree, node, Space.None);
1649 // try renderExpression(ais, tree, node, Space.None);
16521650
16531651 // const comma_token = tree.nextToken(node.lastToken());
16541652 // try renderToken(ais, tree, comma_token, Space.Space); // ,
16551653 // try renderExtraNewline(tree, ais, items[i + 1]);
16561654 // } else {
1657 // try renderExpression(allocator, ais, tree, node, Space.Space);
1655 // try renderExpression(ais, tree, node, Space.Space);
16581656 // }
16591657 // }
16601658 // } else {
16611659 // const items = switch_case.items();
16621660 // for (items) |node, i| {
16631661 // if (i + 1 < items.len) {
1664 // try renderExpression(allocator, ais, tree, node, Space.None);
1662 // try renderExpression(ais, tree, node, Space.None);
16651663
16661664 // const comma_token = tree.nextToken(node.lastToken());
16671665 // try renderToken(ais, tree, comma_token, Space.Newline); // ,
16681666 // try renderExtraNewline(tree, ais, items[i + 1]);
16691667 // } else {
1670 // try renderExpression(allocator, ais, tree, node, Space.Comma);
1668 // try renderExpression(ais, tree, node, Space.Comma);
16711669 // }
16721670 // }
16731671 // }
......@@ -1675,10 +1673,10 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
16751673 // try renderToken(ais, tree, switch_case.arrow_token, Space.Space); // =>
16761674
16771675 // if (switch_case.payload) |payload| {
1678 // try renderExpression(allocator, ais, tree, payload, Space.Space);
1676 // try renderExpression(ais, tree, payload, Space.Space);
16791677 // }
16801678
1681 // return renderExpression(allocator, ais, tree, switch_case.expr, space);
1679 // return renderExpression(ais, tree, switch_case.expr, space);
16821680 //},
16831681 //.SwitchElse => {
16841682 // const switch_else = @fieldParentPtr(ast.Node.SwitchElse, "base", base);
......@@ -1695,15 +1693,15 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
16951693
16961694 // if (else_node.payload) |payload| {
16971695 // const payload_space = if (same_line) Space.Space else Space.Newline;
1698 // try renderExpression(allocator, ais, tree, payload, payload_space);
1696 // try renderExpression(ais, tree, payload, payload_space);
16991697 // }
17001698
17011699 // if (same_line) {
1702 // return renderExpression(allocator, ais, tree, else_node.body, space);
1700 // return renderExpression(ais, tree, else_node.body, space);
17031701 // } else {
17041702 // ais.pushIndent();
17051703 // defer ais.popIndent();
1706 // return renderExpression(allocator, ais, tree, else_node.body, space);
1704 // return renderExpression(ais, tree, else_node.body, space);
17071705 // }
17081706 //},
17091707
......@@ -1721,7 +1719,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
17211719
17221720 // try renderToken(ais, tree, while_node.while_token, Space.Space); // while
17231721 // try renderToken(ais, tree, tree.nextToken(while_node.while_token), Space.None); // (
1724 // try renderExpression(allocator, ais, tree, while_node.condition, Space.None);
1722 // try renderExpression(ais, tree, while_node.condition, Space.None);
17251723
17261724 // const cond_rparen = tree.nextToken(while_node.condition.lastToken());
17271725
......@@ -1748,7 +1746,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
17481746
17491747 // if (while_node.payload) |payload| {
17501748 // const payload_space = if (while_node.continue_expr != null) Space.Space else block_start_space;
1751 // try renderExpression(allocator, ais, tree, payload, payload_space);
1749 // try renderExpression(ais, tree, payload, payload_space);
17521750 // }
17531751
17541752 // if (while_node.continue_expr) |continue_expr| {
......@@ -1759,7 +1757,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
17591757 // try renderToken(ais, tree, colon, Space.Space); // :
17601758 // try renderToken(ais, tree, lparen, Space.None); // (
17611759
1762 // try renderExpression(allocator, ais, tree, continue_expr, Space.None);
1760 // try renderExpression(ais, tree, continue_expr, Space.None);
17631761
17641762 // try renderToken(ais, tree, rparen, block_start_space); // )
17651763 // }
......@@ -1767,11 +1765,11 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
17671765 // {
17681766 // if (!body_is_block) ais.pushIndent();
17691767 // defer if (!body_is_block) ais.popIndent();
1770 // try renderExpression(allocator, ais, tree, while_node.body, after_body_space);
1768 // try renderExpression(ais, tree, while_node.body, after_body_space);
17711769 // }
17721770
17731771 // if (while_node.@"else") |@"else"| {
1774 // return renderExpression(allocator, ais, tree, &@"else".base, space);
1772 // return renderExpression(ais, tree, &@"else".base, space);
17751773 // }
17761774 //},
17771775
......@@ -1789,7 +1787,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
17891787
17901788 // try renderToken(ais, tree, for_node.for_token, Space.Space); // for
17911789 // try renderToken(ais, tree, tree.nextToken(for_node.for_token), Space.None); // (
1792 // try renderExpression(allocator, ais, tree, for_node.array_expr, Space.None);
1790 // try renderExpression(ais, tree, for_node.array_expr, Space.None);
17931791
17941792 // const rparen = tree.nextToken(for_node.array_expr.lastToken());
17951793
......@@ -1800,7 +1798,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
18001798 // try renderToken(ais, tree, rparen, Space.Space); // )
18011799
18021800 // const space_after_payload = if (body_on_same_line) Space.Space else Space.Newline;
1803 // try renderExpression(allocator, ais, tree, for_node.payload, space_after_payload); // |x|
1801 // try renderExpression(ais, tree, for_node.payload, space_after_payload); // |x|
18041802
18051803 // const space_after_body = blk: {
18061804 // if (for_node.@"else") |@"else"| {
......@@ -1818,11 +1816,11 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
18181816 // {
18191817 // if (!body_on_same_line) ais.pushIndent();
18201818 // defer if (!body_on_same_line) ais.popIndent();
1821 // try renderExpression(allocator, ais, tree, for_node.body, space_after_body); // { body }
1819 // try renderExpression(ais, tree, for_node.body, space_after_body); // { body }
18221820 // }
18231821
18241822 // if (for_node.@"else") |@"else"| {
1825 // return renderExpression(allocator, ais, tree, &@"else".base, space); // else
1823 // return renderExpression(ais, tree, &@"else".base, space); // else
18261824 // }
18271825 //},
18281826
......@@ -1835,7 +1833,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
18351833 // try renderToken(ais, tree, if_node.if_token, Space.Space); // if
18361834 // try renderToken(ais, tree, lparen, Space.None); // (
18371835
1838 // try renderExpression(allocator, ais, tree, if_node.condition, Space.None); // condition
1836 // try renderExpression(ais, tree, if_node.condition, Space.None); // condition
18391837
18401838 // const body_is_if_block = if_node.body.tag == .If;
18411839 // const body_is_block = nodeIsBlock(if_node.body);
......@@ -1847,14 +1845,14 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
18471845 // try renderToken(ais, tree, rparen, after_rparen_space); // )
18481846
18491847 // if (if_node.payload) |payload| {
1850 // try renderExpression(allocator, ais, tree, payload, Space.BlockStart); // |x|
1848 // try renderExpression(ais, tree, payload, Space.BlockStart); // |x|
18511849 // }
18521850
18531851 // if (if_node.@"else") |@"else"| {
1854 // try renderExpression(allocator, ais, tree, if_node.body, Space.SpaceOrOutdent);
1855 // return renderExpression(allocator, ais, tree, &@"else".base, space);
1852 // try renderExpression(ais, tree, if_node.body, Space.SpaceOrOutdent);
1853 // return renderExpression(ais, tree, &@"else".base, space);
18561854 // } else {
1857 // return renderExpression(allocator, ais, tree, if_node.body, space);
1855 // return renderExpression(ais, tree, if_node.body, space);
18581856 // }
18591857 // }
18601858
......@@ -1870,7 +1868,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
18701868 // }
18711869
18721870 // if (if_node.payload) |payload| {
1873 // try renderExpression(allocator, ais, tree, payload, Space.Newline);
1871 // try renderExpression(ais, tree, payload, Space.Newline);
18741872 // }
18751873
18761874 // if (if_node.@"else") |@"else"| {
......@@ -1879,33 +1877,33 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
18791877 // {
18801878 // ais.pushIndent();
18811879 // defer ais.popIndent();
1882 // try renderExpression(allocator, ais, tree, if_node.body, Space.Newline);
1880 // try renderExpression(ais, tree, if_node.body, Space.Newline);
18831881 // }
18841882
18851883 // if (else_is_block) {
18861884 // try renderToken(ais, tree, @"else".else_token, Space.Space); // else
18871885
18881886 // if (@"else".payload) |payload| {
1889 // try renderExpression(allocator, ais, tree, payload, Space.Space);
1887 // try renderExpression(ais, tree, payload, Space.Space);
18901888 // }
18911889
1892 // return renderExpression(allocator, ais, tree, @"else".body, space);
1890 // return renderExpression(ais, tree, @"else".body, space);
18931891 // } else {
18941892 // const after_else_space = if (@"else".payload == null) Space.Newline else Space.Space;
18951893 // try renderToken(ais, tree, @"else".else_token, after_else_space); // else
18961894
18971895 // if (@"else".payload) |payload| {
1898 // try renderExpression(allocator, ais, tree, payload, Space.Newline);
1896 // try renderExpression(ais, tree, payload, Space.Newline);
18991897 // }
19001898
19011899 // ais.pushIndent();
19021900 // defer ais.popIndent();
1903 // return renderExpression(allocator, ais, tree, @"else".body, space);
1901 // return renderExpression(ais, tree, @"else".body, space);
19041902 // }
19051903 // } else {
19061904 // ais.pushIndent();
19071905 // defer ais.popIndent();
1908 // return renderExpression(allocator, ais, tree, if_node.body, space);
1906 // return renderExpression(ais, tree, if_node.body, space);
19091907 // }
19101908 // }
19111909
......@@ -1914,20 +1912,20 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
19141912 // try renderToken(ais, tree, rparen, Space.Space); // )
19151913
19161914 // if (if_node.payload) |payload| {
1917 // try renderExpression(allocator, ais, tree, payload, Space.Space);
1915 // try renderExpression(ais, tree, payload, Space.Space);
19181916 // }
19191917
19201918 // if (if_node.@"else") |@"else"| {
1921 // try renderExpression(allocator, ais, tree, if_node.body, Space.Space);
1919 // try renderExpression(ais, tree, if_node.body, Space.Space);
19221920 // try renderToken(ais, tree, @"else".else_token, Space.Space);
19231921
19241922 // if (@"else".payload) |payload| {
1925 // try renderExpression(allocator, ais, tree, payload, Space.Space);
1923 // try renderExpression(ais, tree, payload, Space.Space);
19261924 // }
19271925
1928 // return renderExpression(allocator, ais, tree, @"else".body, space);
1926 // return renderExpression(ais, tree, @"else".body, space);
19291927 // } else {
1930 // return renderExpression(allocator, ais, tree, if_node.body, space);
1928 // return renderExpression(ais, tree, if_node.body, space);
19311929 // }
19321930 //},
19331931
......@@ -1948,11 +1946,11 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
19481946 // defer ais.popIndent();
19491947
19501948 // if (asm_node.outputs.len == 0 and asm_node.inputs.len == 0 and asm_node.clobbers.len == 0) {
1951 // try renderExpression(allocator, ais, tree, asm_node.template, Space.None);
1949 // try renderExpression(ais, tree, asm_node.template, Space.None);
19521950 // break :asmblk;
19531951 // }
19541952
1955 // try renderExpression(allocator, ais, tree, asm_node.template, Space.Newline);
1953 // try renderExpression(ais, tree, asm_node.template, Space.Newline);
19561954
19571955 // ais.setIndentDelta(asm_indent_delta);
19581956 // defer ais.setIndentDelta(indent_delta);
......@@ -2027,10 +2025,10 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
20272025 // defer ais.popIndent();
20282026 // for (asm_node.clobbers) |clobber_node, i| {
20292027 // if (i + 1 >= asm_node.clobbers.len) {
2030 // try renderExpression(allocator, ais, tree, clobber_node, Space.Newline);
2028 // try renderExpression(ais, tree, clobber_node, Space.Newline);
20312029 // break :asmblk;
20322030 // } else {
2033 // try renderExpression(allocator, ais, tree, clobber_node, Space.None);
2031 // try renderExpression(ais, tree, clobber_node, Space.None);
20342032 // const comma = tree.nextToken(clobber_node.lastToken());
20352033 // try renderToken(ais, tree, comma, Space.Space); // ,
20362034 // }
......@@ -2081,7 +2079,7 @@ fn renderArrayType(
20812079 defer if (do_indent) ais.popIndent();
20822080
20832081 try renderToken(ais, tree, lbracket, Space.None); // [
2084 try renderExpression(allocator, ais, tree, len_expr, new_space);
2082 try renderExpression(ais, tree, len_expr, new_space);
20852083
20862084 if (starts_with_comment) {
20872085 try ais.maybeInsertNewline();
......@@ -2089,7 +2087,7 @@ fn renderArrayType(
20892087 if (opt_sentinel) |sentinel| {
20902088 const colon_token = tree.prevToken(sentinel.firstToken());
20912089 try renderToken(ais, tree, colon_token, Space.None); // :
2092 try renderExpression(allocator, ais, tree, sentinel, Space.None);
2090 try renderExpression(ais, tree, sentinel, Space.None);
20932091 }
20942092 if (starts_with_comment) {
20952093 try ais.maybeInsertNewline();
......@@ -2097,7 +2095,7 @@ fn renderArrayType(
20972095 }
20982096 try renderToken(ais, tree, rbracket, Space.None); // ]
20992097
2100 return renderExpression(allocator, ais, tree, rhs, space);
2098 return renderExpression(ais, tree, rhs, space);
21012099}
21022100
21032101fn renderAsmOutput(
......@@ -2108,18 +2106,18 @@ fn renderAsmOutput(
21082106 space: Space,
21092107) Error!void {
21102108 try ais.writer().writeAll("[");
2111 try renderExpression(allocator, ais, tree, asm_output.symbolic_name, Space.None);
2109 try renderExpression(ais, tree, asm_output.symbolic_name, Space.None);
21122110 try ais.writer().writeAll("] ");
2113 try renderExpression(allocator, ais, tree, asm_output.constraint, Space.None);
2111 try renderExpression(ais, tree, asm_output.constraint, Space.None);
21142112 try ais.writer().writeAll(" (");
21152113
21162114 switch (asm_output.kind) {
21172115 .Variable => |variable_name| {
2118 try renderExpression(allocator, ais, tree, &variable_name.base, Space.None);
2116 try renderExpression(ais, tree, &variable_name.base, Space.None);
21192117 },
21202118 .Return => |return_type| {
21212119 try ais.writer().writeAll("-> ");
2122 try renderExpression(allocator, ais, tree, return_type, Space.None);
2120 try renderExpression(ais, tree, return_type, Space.None);
21232121 },
21242122 }
21252123
......@@ -2134,11 +2132,11 @@ fn renderAsmInput(
21342132 space: Space,
21352133) Error!void {
21362134 try ais.writer().writeAll("[");
2137 try renderExpression(allocator, ais, tree, asm_input.symbolic_name, Space.None);
2135 try renderExpression(ais, tree, asm_input.symbolic_name, Space.None);
21382136 try ais.writer().writeAll("] ");
2139 try renderExpression(allocator, ais, tree, asm_input.constraint, Space.None);
2137 try renderExpression(ais, tree, asm_input.constraint, Space.None);
21402138 try ais.writer().writeAll(" (");
2141 try renderExpression(allocator, ais, tree, asm_input.expr, Space.None);
2139 try renderExpression(ais, tree, asm_input.expr, Space.None);
21422140 return renderToken(ais, tree, asm_input.lastToken(), space); // )
21432141}
21442142
......@@ -2156,7 +2154,7 @@ fn renderVarDecl(
21562154 try renderToken(ais, tree, extern_export_token, Space.Space); // extern
21572155
21582156 if (var_decl.getLibName()) |lib_name| {
2159 try renderExpression(allocator, ais, tree, lib_name, Space.Space); // "lib"
2157 try renderExpression(ais, tree, lib_name, Space.Space); // "lib"
21602158 }
21612159 }
21622160
......@@ -2183,7 +2181,7 @@ fn renderVarDecl(
21832181 const s = if (var_decl.getAlignNode() != null or
21842182 var_decl.getSectionNode() != null or
21852183 var_decl.getInitNode() != null) Space.Space else Space.None;
2186 try renderExpression(allocator, ais, tree, type_node, s);
2184 try renderExpression(ais, tree, type_node, s);
21872185 }
21882186
21892187 if (var_decl.getAlignNode()) |align_node| {
......@@ -2192,7 +2190,7 @@ fn renderVarDecl(
21922190 const rparen = tree.nextToken(align_node.lastToken());
21932191 try renderToken(ais, tree, align_kw, Space.None); // align
21942192 try renderToken(ais, tree, lparen, Space.None); // (
2195 try renderExpression(allocator, ais, tree, align_node, Space.None);
2193 try renderExpression(ais, tree, align_node, Space.None);
21962194 const s = if (var_decl.getSectionNode() != null or var_decl.getInitNode() != null) Space.Space else Space.None;
21972195 try renderToken(ais, tree, rparen, s); // )
21982196 }
......@@ -2203,7 +2201,7 @@ fn renderVarDecl(
22032201 const rparen = tree.nextToken(section_node.lastToken());
22042202 try renderToken(ais, tree, section_kw, Space.None); // linksection
22052203 try renderToken(ais, tree, lparen, Space.None); // (
2206 try renderExpression(allocator, ais, tree, section_node, Space.None);
2204 try renderExpression(ais, tree, section_node, Space.None);
22072205 const s = if (var_decl.getInitNode() != null) Space.Space else Space.None;
22082206 try renderToken(ais, tree, rparen, s); // )
22092207 }
......@@ -2221,7 +2219,7 @@ fn renderVarDecl(
22212219 try renderToken(ais, tree, eq_token, eq_space); // =
22222220 }
22232221 ais.pushIndentOneShot();
2224 try renderExpression(allocator, ais, tree, init_node, Space.None);
2222 try renderExpression(ais, tree, init_node, Space.None);
22252223 }
22262224
22272225 try renderToken(ais, tree, var_decl.semicolon_token, Space.Newline);
......@@ -2234,7 +2232,7 @@ fn renderParamDecl(
22342232 param_decl: ast.Node.FnProto.ParamDecl,
22352233 space: Space,
22362234) Error!void {
2237 try renderDocComments(tree, ais, param_decl, param_decl.doc_comments);
2235 try renderDocComments(ais, tree, param_decl, param_decl.doc_comments);
22382236
22392237 if (param_decl.comptime_token) |comptime_token| {
22402238 try renderToken(ais, tree, comptime_token, Space.Space);
......@@ -2247,7 +2245,7 @@ fn renderParamDecl(
22472245 try renderToken(ais, tree, tree.nextToken(name_token), Space.Space); // :
22482246 }
22492247 switch (param_decl.param_type) {
2250 .any_type, .type_expr => |node| try renderExpression(allocator, ais, tree, node, space),
2248 .any_type, .type_expr => |node| try renderExpression(ais, tree, node, space),
22512249 }
22522250}
22532251
......@@ -2260,13 +2258,13 @@ fn renderStatement(ais: *Ais, tree: ast.Tree, base: ast.Node.Index) Error!void {
22602258 // },
22612259 // else => {
22622260 // if (base.requireSemiColon()) {
2263 // try renderExpression(allocator, ais, tree, base, Space.None);
2261 // try renderExpression(ais, tree, base, Space.None);
22642262
22652263 // const semicolon_index = tree.nextToken(base.lastToken());
22662264 // assert(tree.token_tags[semicolon_index] == .Semicolon);
22672265 // try renderToken(ais, tree, semicolon_index, Space.Newline);
22682266 // } else {
2269 // try renderExpression(allocator, ais, tree, base, Space.Newline);
2267 // try renderExpression(ais, tree, base, Space.Newline);
22702268 // }
22712269 // },
22722270 //}
......@@ -2338,34 +2336,32 @@ fn renderToken(ais: *Ais, tree: ast.Tree, token_index: ast.TokenIndex, space: Sp
23382336 }
23392337}
23402338
2341fn renderDocComments(
2342 tree: ast.Tree,
2343 ais: *Ais,
2344 node: anytype,
2345 doc_comments: ?ast.Node.Index.DocComment,
2346) Error!void {
2347 const comment = doc_comments orelse return;
2348 return renderDocCommentsToken(tree, ais, comment, node.firstToken());
2349}
2350
2351fn renderDocCommentsToken(
2352 tree: ast.Tree,
2353 ais: *Ais,
2354 comment: ast.Node.Index.DocComment,
2355 first_token: ast.TokenIndex,
2356) Error!void {
2357 var tok_i = comment.first_line;
2358 while (true) : (tok_i += 1) {
2359 switch (tree.token_tags[tok_i]) {
2360 .DocComment, .ContainerDocComment => {
2361 if (comment.first_line < first_token) {
2362 try renderToken(ais, tree, tok_i, Space.Newline);
2339/// end_token is the token one past the last doc comment token. This function
2340/// searches backwards from there.
2341fn renderDocComments(ais: *Ais, tree: ast.Tree, end_token: ast.TokenIndex) Error!void {
2342 // Search backwards for the first doc comment.
2343 const token_tags = tree.tokens.items(.tag);
2344 if (end_token == 0) return;
2345 var tok = end_token - 1;
2346 while (token_tags[tok] == .DocComment) {
2347 if (tok == 0) break;
2348 tok -= 1;
2349 } else {
2350 tok += 1;
2351 }
2352 const first_tok = tok;
2353 if (tok == end_token) return;
2354
2355 while (true) : (tok += 1) {
2356 switch (token_tags[tok]) {
2357 .DocComment => {
2358 if (first_tok < end_token) {
2359 try renderToken(ais, tree, tok, .Newline);
23632360 } else {
2364 try renderToken(ais, tree, tok_i, Space.NoComment);
2361 try renderToken(ais, tree, tok, .NoComment);
23652362 try ais.insertNewline();
23662363 }
23672364 },
2368 .LineComment => continue,
23692365 else => break,
23702366 }
23712367 }