authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2021-02-12 01:40:13+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2021-02-12 02:14:07+02:00
log288e18059815f8c23f850dcc5cb3b2880f029ae9
tree9a75c3d97a02b21e0c75866778f30840d81f724a
parentbb22490fcc8ed7c96d665242cd18934f9d547555
signaturelock-open Commit is signed but in an unrecognized format.

snake_case render.Space


1 files changed, 386 insertions(+), 386 deletions(-)

lib/std/zig/render.zig+386-386
...@@ -86,7 +86,7 @@ fn renderRoot(ais: *Ais, tree: ast.Tree) Error!void {...@@ -86,7 +86,7 @@ fn renderRoot(ais: *Ais, tree: ast.Tree) Error!void {
86 const root_decls = tree.extra_data[nodes_data[0].lhs..nodes_data[0].rhs];86 const root_decls = tree.extra_data[nodes_data[0].lhs..nodes_data[0].rhs];
8787
88 for (root_decls) |decl| {88 for (root_decls) |decl| {
89 try renderMember(ais, tree, decl, .Newline);89 try renderMember(ais, tree, decl, .newline);
90 }90 }
91}91}
9292
...@@ -122,13 +122,13 @@ fn renderMember(ais: *Ais, tree: ast.Tree, decl: ast.Node.Index, space: Space) E...@@ -122,13 +122,13 @@ fn renderMember(ais: *Ais, tree: ast.Tree, decl: ast.Node.Index, space: Space) E
122 }122 }
123 }123 }
124 while (i < fn_token) : (i += 1) {124 while (i < fn_token) : (i += 1) {
125 try renderToken(ais, tree, i, .Space);125 try renderToken(ais, tree, i, .space);
126 }126 }
127 if (datas[decl].rhs != 0) {127 if (datas[decl].rhs != 0) {
128 try renderExpression(ais, tree, fn_proto, .Space);128 try renderExpression(ais, tree, fn_proto, .space);
129 return renderExpression(ais, tree, datas[decl].rhs, space);129 return renderExpression(ais, tree, datas[decl].rhs, space);
130 } else {130 } else {
131 try renderExpression(ais, tree, fn_proto, .None);131 try renderExpression(ais, tree, fn_proto, .none);
132 return renderToken(ais, tree, tree.lastToken(fn_proto) + 1, space); // semicolon132 return renderToken(ais, tree, tree.lastToken(fn_proto) + 1, space); // semicolon
133 }133 }
134 },134 },
...@@ -137,7 +137,7 @@ fn renderMember(ais: *Ais, tree: ast.Tree, decl: ast.Node.Index, space: Space) E...@@ -137,7 +137,7 @@ fn renderMember(ais: *Ais, tree: ast.Tree, decl: ast.Node.Index, space: Space) E
137 .fn_proto_one,137 .fn_proto_one,
138 .fn_proto,138 .fn_proto,
139 => {139 => {
140 try renderExpression(ais, tree, decl, .None);140 try renderExpression(ais, tree, decl, .none);
141 return renderToken(ais, tree, tree.lastToken(decl) + 1, space); // semicolon141 return renderToken(ais, tree, tree.lastToken(decl) + 1, space); // semicolon
142 },142 },
143143
...@@ -145,10 +145,10 @@ fn renderMember(ais: *Ais, tree: ast.Tree, decl: ast.Node.Index, space: Space) E...@@ -145,10 +145,10 @@ fn renderMember(ais: *Ais, tree: ast.Tree, decl: ast.Node.Index, space: Space) E
145 const main_token = main_tokens[decl];145 const main_token = main_tokens[decl];
146 const expr = datas[decl].lhs;146 const expr = datas[decl].lhs;
147 if (main_token > 0 and token_tags[main_token - 1] == .keyword_pub) {147 if (main_token > 0 and token_tags[main_token - 1] == .keyword_pub) {
148 try renderToken(ais, tree, main_token - 1, .Space); // pub148 try renderToken(ais, tree, main_token - 1, .space); // pub
149 }149 }
150 try renderToken(ais, tree, main_token, .Space); // usingnamespace150 try renderToken(ais, tree, main_token, .space); // usingnamespace
151 try renderExpression(ais, tree, expr, .None);151 try renderExpression(ais, tree, expr, .none);
152 return renderToken(ais, tree, tree.lastToken(expr) + 1, space); // ;152 return renderToken(ais, tree, tree.lastToken(expr) + 1, space); // ;
153 },153 },
154154
...@@ -159,9 +159,9 @@ fn renderMember(ais: *Ais, tree: ast.Tree, decl: ast.Node.Index, space: Space) E...@@ -159,9 +159,9 @@ fn renderMember(ais: *Ais, tree: ast.Tree, decl: ast.Node.Index, space: Space) E
159159
160 .test_decl => {160 .test_decl => {
161 const test_token = main_tokens[decl];161 const test_token = main_tokens[decl];
162 try renderToken(ais, tree, test_token, .Space);162 try renderToken(ais, tree, test_token, .space);
163 if (token_tags[test_token + 1] == .string_literal) {163 if (token_tags[test_token + 1] == .string_literal) {
164 try renderToken(ais, tree, test_token + 1, .Space);164 try renderToken(ais, tree, test_token + 1, .space);
165 }165 }
166 try renderExpression(ais, tree, datas[decl].rhs, space);166 try renderExpression(ais, tree, datas[decl].rhs, space);
167 },167 },
...@@ -196,8 +196,8 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -196,8 +196,8 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
196 => return renderToken(ais, tree, main_tokens[node], space),196 => return renderToken(ais, tree, main_tokens[node], space),
197197
198 .error_value => {198 .error_value => {
199 try renderToken(ais, tree, main_tokens[node], .None);199 try renderToken(ais, tree, main_tokens[node], .none);
200 try renderToken(ais, tree, main_tokens[node] + 1, .None);200 try renderToken(ais, tree, main_tokens[node] + 1, .none);
201 return renderToken(ais, tree, main_tokens[node] + 2, space);201 return renderToken(ais, tree, main_tokens[node] + 2, space);
202 },202 },
203203
...@@ -227,11 +227,11 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -227,11 +227,11 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
227 const payload_token = datas[node].lhs;227 const payload_token = datas[node].lhs;
228 const expr = datas[node].rhs;228 const expr = datas[node].rhs;
229229
230 try renderToken(ais, tree, defer_token, .Space);230 try renderToken(ais, tree, defer_token, .space);
231 if (payload_token != 0) {231 if (payload_token != 0) {
232 try renderToken(ais, tree, payload_token - 1, .None); // |232 try renderToken(ais, tree, payload_token - 1, .none); // |
233 try renderToken(ais, tree, payload_token, .None); // identifier233 try renderToken(ais, tree, payload_token, .none); // identifier
234 try renderToken(ais, tree, payload_token + 1, .Space); // |234 try renderToken(ais, tree, payload_token + 1, .space); // |
235 }235 }
236 return renderExpression(ais, tree, expr, space);236 return renderExpression(ais, tree, expr, space);
237 },237 },
...@@ -239,13 +239,13 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -239,13 +239,13 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
239 .@"defer" => {239 .@"defer" => {
240 const defer_token = main_tokens[node];240 const defer_token = main_tokens[node];
241 const expr = datas[node].rhs;241 const expr = datas[node].rhs;
242 try renderToken(ais, tree, defer_token, .Space);242 try renderToken(ais, tree, defer_token, .space);
243 return renderExpression(ais, tree, expr, space);243 return renderExpression(ais, tree, expr, space);
244 },244 },
245 .@"comptime", .@"nosuspend" => {245 .@"comptime", .@"nosuspend" => {
246 const comptime_token = main_tokens[node];246 const comptime_token = main_tokens[node];
247 const block = datas[node].lhs;247 const block = datas[node].lhs;
248 try renderToken(ais, tree, comptime_token, .Space);248 try renderToken(ais, tree, comptime_token, .space);
249 return renderExpression(ais, tree, block, space);249 return renderExpression(ais, tree, block, space);
250 },250 },
251251
...@@ -253,7 +253,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -253,7 +253,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
253 const suspend_token = main_tokens[node];253 const suspend_token = main_tokens[node];
254 const body = datas[node].lhs;254 const body = datas[node].lhs;
255 if (body != 0) {255 if (body != 0) {
256 try renderToken(ais, tree, suspend_token, .Space);256 try renderToken(ais, tree, suspend_token, .space);
257 return renderExpression(ais, tree, body, space);257 return renderExpression(ais, tree, body, space);
258 } else {258 } else {
259 return renderToken(ais, tree, suspend_token, space);259 return renderToken(ais, tree, suspend_token, space);
...@@ -265,14 +265,14 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -265,14 +265,14 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
265 const fallback_first = tree.firstToken(datas[node].rhs);265 const fallback_first = tree.firstToken(datas[node].rhs);
266266
267 const same_line = tree.tokensOnSameLine(main_token, fallback_first);267 const same_line = tree.tokensOnSameLine(main_token, fallback_first);
268 const after_op_space = if (same_line) Space.Space else Space.Newline;268 const after_op_space = if (same_line) Space.space else Space.newline;
269269
270 try renderExpression(ais, tree, datas[node].lhs, .Space); // target270 try renderExpression(ais, tree, datas[node].lhs, .space); // target
271271
272 if (token_tags[fallback_first - 1] == .pipe) {272 if (token_tags[fallback_first - 1] == .pipe) {
273 try renderToken(ais, tree, main_token, .Space); // catch keyword273 try renderToken(ais, tree, main_token, .space); // catch keyword
274 try renderToken(ais, tree, main_token + 1, .None); // pipe274 try renderToken(ais, tree, main_token + 1, .none); // pipe
275 try renderToken(ais, tree, main_token + 2, .None); // payload identifier275 try renderToken(ais, tree, main_token + 2, .none); // payload identifier
276 try renderToken(ais, tree, main_token + 3, after_op_space); // pipe276 try renderToken(ais, tree, main_token + 3, after_op_space); // pipe
277 } else {277 } else {
278 assert(token_tags[fallback_first - 1] == .keyword_catch);278 assert(token_tags[fallback_first - 1] == .keyword_catch);
...@@ -285,8 +285,8 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -285,8 +285,8 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
285285
286 .field_access => {286 .field_access => {
287 const field_access = datas[node];287 const field_access = datas[node];
288 try renderExpression(ais, tree, field_access.lhs, .None);288 try renderExpression(ais, tree, field_access.lhs, .none);
289 try renderToken(ais, tree, main_tokens[node], .None);289 try renderToken(ais, tree, main_tokens[node], .none);
290 return renderToken(ais, tree, field_access.rhs, space);290 return renderToken(ais, tree, field_access.rhs, space);
291 },291 },
292292
...@@ -294,8 +294,8 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -294,8 +294,8 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
294 .switch_range,294 .switch_range,
295 => {295 => {
296 const infix = datas[node];296 const infix = datas[node];
297 try renderExpression(ais, tree, infix.lhs, .None);297 try renderExpression(ais, tree, infix.lhs, .none);
298 try renderToken(ais, tree, main_tokens[node], .None);298 try renderToken(ais, tree, main_tokens[node], .none);
299 return renderExpression(ais, tree, infix.rhs, space);299 return renderExpression(ais, tree, infix.rhs, space);
300 },300 },
301301
...@@ -340,13 +340,13 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -340,13 +340,13 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
340 .@"orelse",340 .@"orelse",
341 => {341 => {
342 const infix = datas[node];342 const infix = datas[node];
343 try renderExpression(ais, tree, infix.lhs, .Space);343 try renderExpression(ais, tree, infix.lhs, .space);
344 const op_token = main_tokens[node];344 const op_token = main_tokens[node];
345 if (tree.tokensOnSameLine(op_token, op_token + 1)) {345 if (tree.tokensOnSameLine(op_token, op_token + 1)) {
346 try renderToken(ais, tree, op_token, .Space);346 try renderToken(ais, tree, op_token, .space);
347 } else {347 } else {
348 ais.pushIndent();348 ais.pushIndent();
349 try renderToken(ais, tree, op_token, .Newline);349 try renderToken(ais, tree, op_token, .newline);
350 ais.popIndent();350 ais.popIndent();
351 ais.pushIndentOneShot();351 ais.pushIndentOneShot();
352 }352 }
...@@ -360,7 +360,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -360,7 +360,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
360 .optional_type,360 .optional_type,
361 .address_of,361 .address_of,
362 => {362 => {
363 try renderToken(ais, tree, main_tokens[node], .None);363 try renderToken(ais, tree, main_tokens[node], .none);
364 return renderExpression(ais, tree, datas[node].lhs, space);364 return renderExpression(ais, tree, datas[node].lhs, space);
365 },365 },
366366
...@@ -368,7 +368,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -368,7 +368,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
368 .@"resume",368 .@"resume",
369 .@"await",369 .@"await",
370 => {370 => {
371 try renderToken(ais, tree, main_tokens[node], .Space);371 try renderToken(ais, tree, main_tokens[node], .space);
372 return renderExpression(ais, tree, datas[node].lhs, space);372 return renderExpression(ais, tree, datas[node].lhs, space);
373 },373 },
374374
...@@ -425,9 +425,9 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -425,9 +425,9 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
425 const suffix = datas[node];425 const suffix = datas[node];
426 const lbracket = tree.firstToken(suffix.rhs) - 1;426 const lbracket = tree.firstToken(suffix.rhs) - 1;
427 const rbracket = tree.lastToken(suffix.rhs) + 1;427 const rbracket = tree.lastToken(suffix.rhs) + 1;
428 try renderExpression(ais, tree, suffix.lhs, .None);428 try renderExpression(ais, tree, suffix.lhs, .none);
429 try renderToken(ais, tree, lbracket, .None); // [429 try renderToken(ais, tree, lbracket, .none); // [
430 try renderExpression(ais, tree, suffix.rhs, .None);430 try renderExpression(ais, tree, suffix.rhs, .none);
431 return renderToken(ais, tree, rbracket, space); // ]431 return renderToken(ais, tree, rbracket, space); // ]
432 },432 },
433433
...@@ -436,13 +436,13 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -436,13 +436,13 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
436 .slice_sentinel => try renderSlice(ais, tree, tree.sliceSentinel(node), space),436 .slice_sentinel => try renderSlice(ais, tree, tree.sliceSentinel(node), space),
437437
438 .deref => {438 .deref => {
439 try renderExpression(ais, tree, datas[node].lhs, .None);439 try renderExpression(ais, tree, datas[node].lhs, .none);
440 return renderToken(ais, tree, main_tokens[node], space);440 return renderToken(ais, tree, main_tokens[node], space);
441 },441 },
442442
443 .unwrap_optional => {443 .unwrap_optional => {
444 try renderExpression(ais, tree, datas[node].lhs, .None);444 try renderExpression(ais, tree, datas[node].lhs, .none);
445 try renderToken(ais, tree, main_tokens[node], .None);445 try renderToken(ais, tree, main_tokens[node], .none);
446 return renderToken(ais, tree, datas[node].rhs, space);446 return renderToken(ais, tree, datas[node].rhs, space);
447 },447 },
448448
...@@ -453,16 +453,16 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -453,16 +453,16 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
453 if (label_token == 0 and target == 0) {453 if (label_token == 0 and target == 0) {
454 try renderToken(ais, tree, main_token, space); // break keyword454 try renderToken(ais, tree, main_token, space); // break keyword
455 } else if (label_token == 0 and target != 0) {455 } else if (label_token == 0 and target != 0) {
456 try renderToken(ais, tree, main_token, .Space); // break keyword456 try renderToken(ais, tree, main_token, .space); // break keyword
457 try renderExpression(ais, tree, target, space);457 try renderExpression(ais, tree, target, space);
458 } else if (label_token != 0 and target == 0) {458 } else if (label_token != 0 and target == 0) {
459 try renderToken(ais, tree, main_token, .Space); // break keyword459 try renderToken(ais, tree, main_token, .space); // break keyword
460 try renderToken(ais, tree, label_token - 1, .None); // colon460 try renderToken(ais, tree, label_token - 1, .none); // colon
461 try renderToken(ais, tree, label_token, space); // identifier461 try renderToken(ais, tree, label_token, space); // identifier
462 } else if (label_token != 0 and target != 0) {462 } else if (label_token != 0 and target != 0) {
463 try renderToken(ais, tree, main_token, .Space); // break keyword463 try renderToken(ais, tree, main_token, .space); // break keyword
464 try renderToken(ais, tree, label_token - 1, .None); // colon464 try renderToken(ais, tree, label_token - 1, .none); // colon
465 try renderToken(ais, tree, label_token, .Space); // identifier465 try renderToken(ais, tree, label_token, .space); // identifier
466 try renderExpression(ais, tree, target, space);466 try renderExpression(ais, tree, target, space);
467 }467 }
468 },468 },
...@@ -471,8 +471,8 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -471,8 +471,8 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
471 const main_token = main_tokens[node];471 const main_token = main_tokens[node];
472 const label = datas[node].lhs;472 const label = datas[node].lhs;
473 if (label != 0) {473 if (label != 0) {
474 try renderToken(ais, tree, main_token, .Space); // continue474 try renderToken(ais, tree, main_token, .space); // continue
475 try renderToken(ais, tree, label - 1, .None); // :475 try renderToken(ais, tree, label - 1, .none); // :
476 return renderToken(ais, tree, label, space); // label476 return renderToken(ais, tree, label, space); // label
477 } else {477 } else {
478 return renderToken(ais, tree, main_token, space); // continue478 return renderToken(ais, tree, main_token, space); // continue
...@@ -481,7 +481,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -481,7 +481,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
481481
482 .@"return" => {482 .@"return" => {
483 if (datas[node].lhs != 0) {483 if (datas[node].lhs != 0) {
484 try renderToken(ais, tree, main_tokens[node], .Space);484 try renderToken(ais, tree, main_tokens[node], .space);
485 try renderExpression(ais, tree, datas[node].lhs, space);485 try renderExpression(ais, tree, datas[node].lhs, space);
486 } else {486 } else {
487 try renderToken(ais, tree, main_tokens[node], space);487 try renderToken(ais, tree, main_tokens[node], space);
...@@ -490,8 +490,8 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -490,8 +490,8 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
490490
491 .grouped_expression => {491 .grouped_expression => {
492 ais.pushIndentNextLine();492 ais.pushIndentNextLine();
493 try renderToken(ais, tree, main_tokens[node], .None); // lparen493 try renderToken(ais, tree, main_tokens[node], .none); // lparen
494 try renderExpression(ais, tree, datas[node].lhs, .None);494 try renderExpression(ais, tree, datas[node].lhs, .none);
495 ais.popIndent();495 ais.popIndent();
496 return renderToken(ais, tree, datas[node].rhs, space); // rparen496 return renderToken(ais, tree, datas[node].rhs, space); // rparen
497 },497 },
...@@ -526,27 +526,27 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -526,27 +526,27 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
526 const lbrace = error_token + 1;526 const lbrace = error_token + 1;
527 const rbrace = datas[node].rhs;527 const rbrace = datas[node].rhs;
528528
529 try renderToken(ais, tree, error_token, .None);529 try renderToken(ais, tree, error_token, .none);
530530
531 if (lbrace + 1 == rbrace) {531 if (lbrace + 1 == rbrace) {
532 // There is nothing between the braces so render condensed: `error{}`532 // There is nothing between the braces so render condensed: `error{}`
533 try renderToken(ais, tree, lbrace, .None);533 try renderToken(ais, tree, lbrace, .none);
534 return renderToken(ais, tree, rbrace, space);534 return renderToken(ais, tree, rbrace, space);
535 } else if (lbrace + 2 == rbrace and token_tags[lbrace + 1] == .identifier) {535 } else if (lbrace + 2 == rbrace and token_tags[lbrace + 1] == .identifier) {
536 // There is exactly one member and no trailing comma or536 // There is exactly one member and no trailing comma or
537 // comments, so render without surrounding spaces: `error{Foo}`537 // comments, so render without surrounding spaces: `error{Foo}`
538 try renderToken(ais, tree, lbrace, .None);538 try renderToken(ais, tree, lbrace, .none);
539 try renderToken(ais, tree, lbrace + 1, .None); // identifier539 try renderToken(ais, tree, lbrace + 1, .none); // identifier
540 return renderToken(ais, tree, rbrace, space);540 return renderToken(ais, tree, rbrace, space);
541 } else if (token_tags[rbrace - 1] == .comma) {541 } else if (token_tags[rbrace - 1] == .comma) {
542 // There is a trailing comma so render each member on a new line.542 // There is a trailing comma so render each member on a new line.
543 try renderToken(ais, tree, lbrace, .Newline);543 try renderToken(ais, tree, lbrace, .newline);
544 ais.pushIndent();544 ais.pushIndent();
545 var i = lbrace + 1;545 var i = lbrace + 1;
546 while (i < rbrace) : (i += 1) {546 while (i < rbrace) : (i += 1) {
547 switch (token_tags[i]) {547 switch (token_tags[i]) {
548 .doc_comment => try renderToken(ais, tree, i, .Newline),548 .doc_comment => try renderToken(ais, tree, i, .newline),
549 .identifier => try renderToken(ais, tree, i, .Comma),549 .identifier => try renderToken(ais, tree, i, .comma),
550 .comma => {},550 .comma => {},
551 else => unreachable,551 else => unreachable,
552 }552 }
...@@ -555,12 +555,12 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -555,12 +555,12 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
555 return renderToken(ais, tree, rbrace, space);555 return renderToken(ais, tree, rbrace, space);
556 } else {556 } else {
557 // There is no trailing comma so render everything on one line.557 // There is no trailing comma so render everything on one line.
558 try renderToken(ais, tree, lbrace, .Space);558 try renderToken(ais, tree, lbrace, .space);
559 var i = lbrace + 1;559 var i = lbrace + 1;
560 while (i < rbrace) : (i += 1) {560 while (i < rbrace) : (i += 1) {
561 switch (token_tags[i]) {561 switch (token_tags[i]) {
562 .doc_comment => unreachable, // TODO562 .doc_comment => unreachable, // TODO
563 .identifier => try renderToken(ais, tree, i, .CommaSpace),563 .identifier => try renderToken(ais, tree, i, .comma_space),
564 .comma => {},564 .comma => {},
565 else => unreachable,565 else => unreachable,
566 }566 }
...@@ -600,8 +600,8 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -600,8 +600,8 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
600 .anyframe_type => {600 .anyframe_type => {
601 const main_token = main_tokens[node];601 const main_token = main_tokens[node];
602 if (datas[node].rhs != 0) {602 if (datas[node].rhs != 0) {
603 try renderToken(ais, tree, main_token, .None); // anyframe603 try renderToken(ais, tree, main_token, .none); // anyframe
604 try renderToken(ais, tree, main_token + 1, .None); // ->604 try renderToken(ais, tree, main_token + 1, .none); // ->
605 return renderExpression(ais, tree, datas[node].rhs, space);605 return renderExpression(ais, tree, datas[node].rhs, space);
606 } else {606 } else {
607 return renderToken(ais, tree, main_token, space); // anyframe607 return renderToken(ais, tree, main_token, space); // anyframe
...@@ -617,19 +617,19 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -617,19 +617,19 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
617 const cases = tree.extra_data[extra.start..extra.end];617 const cases = tree.extra_data[extra.start..extra.end];
618 const rparen = tree.lastToken(condition) + 1;618 const rparen = tree.lastToken(condition) + 1;
619619
620 try renderToken(ais, tree, switch_token, .Space); // switch keyword620 try renderToken(ais, tree, switch_token, .space); // switch keyword
621 try renderToken(ais, tree, switch_token + 1, .None); // lparen621 try renderToken(ais, tree, switch_token + 1, .none); // lparen
622 try renderExpression(ais, tree, condition, .None); // condtion expression622 try renderExpression(ais, tree, condition, .none); // condtion expression
623 try renderToken(ais, tree, rparen, .Space); // rparen623 try renderToken(ais, tree, rparen, .space); // rparen
624624
625 if (cases.len == 0) {625 if (cases.len == 0) {
626 try renderToken(ais, tree, rparen + 1, .None); // lbrace626 try renderToken(ais, tree, rparen + 1, .none); // lbrace
627 return renderToken(ais, tree, rparen + 2, space); // rbrace627 return renderToken(ais, tree, rparen + 2, space); // rbrace
628 }628 }
629 ais.pushIndentNextLine();629 ais.pushIndentNextLine();
630 try renderToken(ais, tree, rparen + 1, .Newline); // lbrace630 try renderToken(ais, tree, rparen + 1, .newline); // lbrace
631 for (cases) |case| {631 for (cases) |case| {
632 try renderExpression(ais, tree, case, .Comma);632 try renderExpression(ais, tree, case, .comma);
633 }633 }
634 ais.popIndent();634 ais.popIndent();
635 return renderToken(ais, tree, tree.lastToken(node), space); // rbrace635 return renderToken(ais, tree, tree.lastToken(node), space); // rbrace
...@@ -651,7 +651,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac...@@ -651,7 +651,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac
651 .@"asm" => return renderAsm(ais, tree, tree.asmFull(node), space),651 .@"asm" => return renderAsm(ais, tree, tree.asmFull(node), space),
652652
653 .enum_literal => {653 .enum_literal => {
654 try renderToken(ais, tree, main_tokens[node] - 1, .None); // .654 try renderToken(ais, tree, main_tokens[node] - 1, .none); // .
655 return renderToken(ais, tree, main_tokens[node], space); // name655 return renderToken(ais, tree, main_tokens[node], space); // name
656 },656 },
657657
...@@ -678,13 +678,13 @@ fn renderArrayType(...@@ -678,13 +678,13 @@ fn renderArrayType(
678 array_type: ast.full.ArrayType,678 array_type: ast.full.ArrayType,
679 space: Space,679 space: Space,
680) Error!void {680) Error!void {
681 try renderToken(ais, tree, array_type.ast.lbracket, .None); // lbracket681 try renderToken(ais, tree, array_type.ast.lbracket, .none); // lbracket
682 try renderExpression(ais, tree, array_type.ast.elem_count, .None);682 try renderExpression(ais, tree, array_type.ast.elem_count, .none);
683 if (array_type.ast.sentinel) |sentinel| {683 if (array_type.ast.sentinel) |sentinel| {
684 try renderToken(ais, tree, tree.firstToken(sentinel) - 1, .None); // colon684 try renderToken(ais, tree, tree.firstToken(sentinel) - 1, .none); // colon
685 try renderExpression(ais, tree, sentinel, .None);685 try renderExpression(ais, tree, sentinel, .none);
686 }686 }
687 try renderToken(ais, tree, tree.firstToken(array_type.ast.elem_type) - 1, .None); // rbracket687 try renderToken(ais, tree, tree.firstToken(array_type.ast.elem_type) - 1, .none); // rbracket
688 return renderExpression(ais, tree, array_type.ast.elem_type, space);688 return renderExpression(ais, tree, array_type.ast.elem_type, space);
689}689}
690690
...@@ -706,65 +706,65 @@ fn renderPtrType(...@@ -706,65 +706,65 @@ fn renderPtrType(
706 {706 {
707 return renderExpression(ais, tree, ptr_type.ast.child_type, space);707 return renderExpression(ais, tree, ptr_type.ast.child_type, space);
708 }708 }
709 try renderToken(ais, tree, ptr_type.ast.main_token, .None); // asterisk709 try renderToken(ais, tree, ptr_type.ast.main_token, .none); // asterisk
710 },710 },
711 .many => {711 .many => {
712 try renderToken(ais, tree, ptr_type.ast.main_token - 1, .None); // lbracket712 try renderToken(ais, tree, ptr_type.ast.main_token - 1, .none); // lbracket
713 try renderToken(ais, tree, ptr_type.ast.main_token, .None); // asterisk713 try renderToken(ais, tree, ptr_type.ast.main_token, .none); // asterisk
714 try renderToken(ais, tree, ptr_type.ast.main_token + 1, .None); // rbracket714 try renderToken(ais, tree, ptr_type.ast.main_token + 1, .none); // rbracket
715 },715 },
716 .sentinel => {716 .sentinel => {
717 try renderToken(ais, tree, ptr_type.ast.main_token - 1, .None); // lbracket717 try renderToken(ais, tree, ptr_type.ast.main_token - 1, .none); // lbracket
718 try renderToken(ais, tree, ptr_type.ast.main_token, .None); // asterisk718 try renderToken(ais, tree, ptr_type.ast.main_token, .none); // asterisk
719 try renderToken(ais, tree, ptr_type.ast.main_token + 1, .None); // colon719 try renderToken(ais, tree, ptr_type.ast.main_token + 1, .none); // colon
720 try renderExpression(ais, tree, ptr_type.ast.sentinel, .None);720 try renderExpression(ais, tree, ptr_type.ast.sentinel, .none);
721 try renderToken(ais, tree, tree.lastToken(ptr_type.ast.sentinel) + 1, .None); // rbracket721 try renderToken(ais, tree, tree.lastToken(ptr_type.ast.sentinel) + 1, .none); // rbracket
722 },722 },
723 .c => {723 .c => {
724 try renderToken(ais, tree, ptr_type.ast.main_token - 1, .None); // lbracket724 try renderToken(ais, tree, ptr_type.ast.main_token - 1, .none); // lbracket
725 try renderToken(ais, tree, ptr_type.ast.main_token, .None); // asterisk725 try renderToken(ais, tree, ptr_type.ast.main_token, .none); // asterisk
726 try renderToken(ais, tree, ptr_type.ast.main_token + 1, .None); // c726 try renderToken(ais, tree, ptr_type.ast.main_token + 1, .none); // c
727 try renderToken(ais, tree, ptr_type.ast.main_token + 2, .None); // rbracket727 try renderToken(ais, tree, ptr_type.ast.main_token + 2, .none); // rbracket
728 },728 },
729 .slice => {729 .slice => {
730 try renderToken(ais, tree, ptr_type.ast.main_token, .None); // lbracket730 try renderToken(ais, tree, ptr_type.ast.main_token, .none); // lbracket
731 try renderToken(ais, tree, ptr_type.ast.main_token + 1, .None); // rbracket731 try renderToken(ais, tree, ptr_type.ast.main_token + 1, .none); // rbracket
732 },732 },
733 .slice_sentinel => {733 .slice_sentinel => {
734 try renderToken(ais, tree, ptr_type.ast.main_token, .None); // lbracket734 try renderToken(ais, tree, ptr_type.ast.main_token, .none); // lbracket
735 try renderToken(ais, tree, ptr_type.ast.main_token + 1, .None); // colon735 try renderToken(ais, tree, ptr_type.ast.main_token + 1, .none); // colon
736 try renderExpression(ais, tree, ptr_type.ast.sentinel, .None);736 try renderExpression(ais, tree, ptr_type.ast.sentinel, .none);
737 try renderToken(ais, tree, tree.lastToken(ptr_type.ast.sentinel) + 1, .None); // rbracket737 try renderToken(ais, tree, tree.lastToken(ptr_type.ast.sentinel) + 1, .none); // rbracket
738 },738 },
739 }739 }
740740
741 if (ptr_type.allowzero_token) |allowzero_token| {741 if (ptr_type.allowzero_token) |allowzero_token| {
742 try renderToken(ais, tree, allowzero_token, .Space);742 try renderToken(ais, tree, allowzero_token, .space);
743 }743 }
744744
745 if (ptr_type.ast.align_node != 0) {745 if (ptr_type.ast.align_node != 0) {
746 const align_first = tree.firstToken(ptr_type.ast.align_node);746 const align_first = tree.firstToken(ptr_type.ast.align_node);
747 try renderToken(ais, tree, align_first - 2, .None); // align747 try renderToken(ais, tree, align_first - 2, .none); // align
748 try renderToken(ais, tree, align_first - 1, .None); // lparen748 try renderToken(ais, tree, align_first - 1, .none); // lparen
749 try renderExpression(ais, tree, ptr_type.ast.align_node, .None);749 try renderExpression(ais, tree, ptr_type.ast.align_node, .none);
750 if (ptr_type.ast.bit_range_start != 0) {750 if (ptr_type.ast.bit_range_start != 0) {
751 assert(ptr_type.ast.bit_range_end != 0);751 assert(ptr_type.ast.bit_range_end != 0);
752 try renderToken(ais, tree, tree.firstToken(ptr_type.ast.bit_range_start) - 1, .None); // colon752 try renderToken(ais, tree, tree.firstToken(ptr_type.ast.bit_range_start) - 1, .none); // colon
753 try renderExpression(ais, tree, ptr_type.ast.bit_range_start, .None);753 try renderExpression(ais, tree, ptr_type.ast.bit_range_start, .none);
754 try renderToken(ais, tree, tree.firstToken(ptr_type.ast.bit_range_end) - 1, .None); // colon754 try renderToken(ais, tree, tree.firstToken(ptr_type.ast.bit_range_end) - 1, .none); // colon
755 try renderExpression(ais, tree, ptr_type.ast.bit_range_end, .None);755 try renderExpression(ais, tree, ptr_type.ast.bit_range_end, .none);
756 try renderToken(ais, tree, tree.lastToken(ptr_type.ast.bit_range_end) + 1, .Space); // rparen756 try renderToken(ais, tree, tree.lastToken(ptr_type.ast.bit_range_end) + 1, .space); // rparen
757 } else {757 } else {
758 try renderToken(ais, tree, tree.lastToken(ptr_type.ast.align_node) + 1, .Space); // rparen758 try renderToken(ais, tree, tree.lastToken(ptr_type.ast.align_node) + 1, .space); // rparen
759 }759 }
760 }760 }
761761
762 if (ptr_type.const_token) |const_token| {762 if (ptr_type.const_token) |const_token| {
763 try renderToken(ais, tree, const_token, .Space);763 try renderToken(ais, tree, const_token, .space);
764 }764 }
765765
766 if (ptr_type.volatile_token) |volatile_token| {766 if (ptr_type.volatile_token) |volatile_token| {
767 try renderToken(ais, tree, volatile_token, .Space);767 try renderToken(ais, tree, volatile_token, .space);
768 }768 }
769769
770 try renderExpression(ais, tree, ptr_type.ast.child_type, space);770 try renderExpression(ais, tree, ptr_type.ast.child_type, space);
...@@ -779,11 +779,11 @@ fn renderSlice(...@@ -779,11 +779,11 @@ fn renderSlice(
779 const node_tags = tree.nodes.items(.tag);779 const node_tags = tree.nodes.items(.tag);
780 const after_start_space_bool = nodeCausesSliceOpSpace(node_tags[slice.ast.start]) or780 const after_start_space_bool = nodeCausesSliceOpSpace(node_tags[slice.ast.start]) or
781 if (slice.ast.end != 0) nodeCausesSliceOpSpace(node_tags[slice.ast.end]) else false;781 if (slice.ast.end != 0) nodeCausesSliceOpSpace(node_tags[slice.ast.end]) else false;
782 const after_start_space = if (after_start_space_bool) Space.Space else Space.None;782 const after_start_space = if (after_start_space_bool) Space.space else Space.none;
783 const after_dots_space = if (slice.ast.end != 0) after_start_space else Space.None;783 const after_dots_space = if (slice.ast.end != 0) after_start_space else Space.none;
784784
785 try renderExpression(ais, tree, slice.ast.sliced, .None);785 try renderExpression(ais, tree, slice.ast.sliced, .none);
786 try renderToken(ais, tree, slice.ast.lbracket, .None); // lbracket786 try renderToken(ais, tree, slice.ast.lbracket, .none); // lbracket
787787
788 const start_last = tree.lastToken(slice.ast.start);788 const start_last = tree.lastToken(slice.ast.start);
789 try renderExpression(ais, tree, slice.ast.start, after_start_space);789 try renderExpression(ais, tree, slice.ast.start, after_start_space);
...@@ -793,14 +793,14 @@ fn renderSlice(...@@ -793,14 +793,14 @@ fn renderSlice(
793 }793 }
794794
795 const end_last = tree.lastToken(slice.ast.end);795 const end_last = tree.lastToken(slice.ast.end);
796 const after_end_space = if (slice.ast.sentinel != 0) Space.Space else Space.None;796 const after_end_space = if (slice.ast.sentinel != 0) Space.space else Space.none;
797 try renderExpression(ais, tree, slice.ast.end, after_end_space);797 try renderExpression(ais, tree, slice.ast.end, after_end_space);
798 if (slice.ast.sentinel == 0) {798 if (slice.ast.sentinel == 0) {
799 return renderToken(ais, tree, end_last + 1, space); // rbracket799 return renderToken(ais, tree, end_last + 1, space); // rbracket
800 }800 }
801801
802 try renderToken(ais, tree, end_last + 1, .None); // colon802 try renderToken(ais, tree, end_last + 1, .none); // colon
803 try renderExpression(ais, tree, slice.ast.sentinel, .None);803 try renderExpression(ais, tree, slice.ast.sentinel, .none);
804 try renderToken(ais, tree, tree.lastToken(slice.ast.sentinel) + 1, space); // rbracket804 try renderToken(ais, tree, tree.lastToken(slice.ast.sentinel) + 1, space); // rbracket
805}805}
806806
...@@ -817,18 +817,18 @@ fn renderAsmOutput(...@@ -817,18 +817,18 @@ fn renderAsmOutput(
817 assert(node_tags[asm_output] == .asm_output);817 assert(node_tags[asm_output] == .asm_output);
818 const symbolic_name = main_tokens[asm_output];818 const symbolic_name = main_tokens[asm_output];
819819
820 try renderToken(ais, tree, symbolic_name - 1, .None); // lbracket820 try renderToken(ais, tree, symbolic_name - 1, .none); // lbracket
821 try renderToken(ais, tree, symbolic_name, .None); // ident821 try renderToken(ais, tree, symbolic_name, .none); // ident
822 try renderToken(ais, tree, symbolic_name + 1, .Space); // rbracket822 try renderToken(ais, tree, symbolic_name + 1, .space); // rbracket
823 try renderToken(ais, tree, symbolic_name + 2, .Space); // "constraint"823 try renderToken(ais, tree, symbolic_name + 2, .space); // "constraint"
824 try renderToken(ais, tree, symbolic_name + 3, .None); // lparen824 try renderToken(ais, tree, symbolic_name + 3, .none); // lparen
825825
826 if (token_tags[symbolic_name + 4] == .arrow) {826 if (token_tags[symbolic_name + 4] == .arrow) {
827 try renderToken(ais, tree, symbolic_name + 4, .Space); // ->827 try renderToken(ais, tree, symbolic_name + 4, .space); // ->
828 try renderExpression(ais, tree, datas[asm_output].lhs, Space.None);828 try renderExpression(ais, tree, datas[asm_output].lhs, Space.none);
829 return renderToken(ais, tree, datas[asm_output].rhs, space); // rparen829 return renderToken(ais, tree, datas[asm_output].rhs, space); // rparen
830 } else {830 } else {
831 try renderToken(ais, tree, symbolic_name + 4, .None); // ident831 try renderToken(ais, tree, symbolic_name + 4, .none); // ident
832 return renderToken(ais, tree, symbolic_name + 5, space); // rparen832 return renderToken(ais, tree, symbolic_name + 5, space); // rparen
833 }833 }
834}834}
...@@ -845,57 +845,57 @@ fn renderAsmInput(...@@ -845,57 +845,57 @@ fn renderAsmInput(
845 assert(node_tags[asm_input] == .asm_input);845 assert(node_tags[asm_input] == .asm_input);
846 const symbolic_name = main_tokens[asm_input];846 const symbolic_name = main_tokens[asm_input];
847847
848 try renderToken(ais, tree, symbolic_name - 1, .None); // lbracket848 try renderToken(ais, tree, symbolic_name - 1, .none); // lbracket
849 try renderToken(ais, tree, symbolic_name, .None); // ident849 try renderToken(ais, tree, symbolic_name, .none); // ident
850 try renderToken(ais, tree, symbolic_name + 1, .Space); // rbracket850 try renderToken(ais, tree, symbolic_name + 1, .space); // rbracket
851 try renderToken(ais, tree, symbolic_name + 2, .Space); // "constraint"851 try renderToken(ais, tree, symbolic_name + 2, .space); // "constraint"
852 try renderToken(ais, tree, symbolic_name + 3, .None); // lparen852 try renderToken(ais, tree, symbolic_name + 3, .none); // lparen
853 try renderExpression(ais, tree, datas[asm_input].lhs, Space.None);853 try renderExpression(ais, tree, datas[asm_input].lhs, Space.none);
854 return renderToken(ais, tree, datas[asm_input].rhs, space); // rparen854 return renderToken(ais, tree, datas[asm_input].rhs, space); // rparen
855}855}
856856
857fn renderVarDecl(ais: *Ais, tree: ast.Tree, var_decl: ast.full.VarDecl) Error!void {857fn renderVarDecl(ais: *Ais, tree: ast.Tree, var_decl: ast.full.VarDecl) Error!void {
858 if (var_decl.visib_token) |visib_token| {858 if (var_decl.visib_token) |visib_token| {
859 try renderToken(ais, tree, visib_token, Space.Space); // pub859 try renderToken(ais, tree, visib_token, Space.space); // pub
860 }860 }
861861
862 if (var_decl.extern_export_token) |extern_export_token| {862 if (var_decl.extern_export_token) |extern_export_token| {
863 try renderToken(ais, tree, extern_export_token, Space.Space); // extern863 try renderToken(ais, tree, extern_export_token, Space.space); // extern
864864
865 if (var_decl.lib_name) |lib_name| {865 if (var_decl.lib_name) |lib_name| {
866 try renderExpression(ais, tree, lib_name, Space.Space); // "lib"866 try renderExpression(ais, tree, lib_name, Space.space); // "lib"
867 }867 }
868 }868 }
869869
870 if (var_decl.threadlocal_token) |thread_local_token| {870 if (var_decl.threadlocal_token) |thread_local_token| {
871 try renderToken(ais, tree, thread_local_token, Space.Space); // threadlocal871 try renderToken(ais, tree, thread_local_token, Space.space); // threadlocal
872 }872 }
873873
874 if (var_decl.comptime_token) |comptime_token| {874 if (var_decl.comptime_token) |comptime_token| {
875 try renderToken(ais, tree, comptime_token, Space.Space); // comptime875 try renderToken(ais, tree, comptime_token, Space.space); // comptime
876 }876 }
877877
878 try renderToken(ais, tree, var_decl.ast.mut_token, .Space); // var878 try renderToken(ais, tree, var_decl.ast.mut_token, .space); // var
879879
880 const name_space = if (var_decl.ast.type_node == 0 and880 const name_space = if (var_decl.ast.type_node == 0 and
881 (var_decl.ast.align_node != 0 or881 (var_decl.ast.align_node != 0 or
882 var_decl.ast.section_node != 0 or882 var_decl.ast.section_node != 0 or
883 var_decl.ast.init_node != 0))883 var_decl.ast.init_node != 0))
884 Space.Space884 Space.space
885 else885 else
886 Space.None;886 Space.none;
887 try renderToken(ais, tree, var_decl.ast.mut_token + 1, name_space); // name887 try renderToken(ais, tree, var_decl.ast.mut_token + 1, name_space); // name
888888
889 if (var_decl.ast.type_node != 0) {889 if (var_decl.ast.type_node != 0) {
890 try renderToken(ais, tree, var_decl.ast.mut_token + 2, Space.Space); // :890 try renderToken(ais, tree, var_decl.ast.mut_token + 2, Space.space); // :
891 if (var_decl.ast.align_node != 0 or var_decl.ast.section_node != 0 or891 if (var_decl.ast.align_node != 0 or var_decl.ast.section_node != 0 or
892 var_decl.ast.init_node != 0)892 var_decl.ast.init_node != 0)
893 {893 {
894 try renderExpression(ais, tree, var_decl.ast.type_node, .Space);894 try renderExpression(ais, tree, var_decl.ast.type_node, .space);
895 } else {895 } else {
896 try renderExpression(ais, tree, var_decl.ast.type_node, .None);896 try renderExpression(ais, tree, var_decl.ast.type_node, .none);
897 const semicolon = tree.lastToken(var_decl.ast.type_node) + 1;897 const semicolon = tree.lastToken(var_decl.ast.type_node) + 1;
898 return renderToken(ais, tree, semicolon, Space.Newline); // ;898 return renderToken(ais, tree, semicolon, Space.newline); // ;
899 }899 }
900 }900 }
901901
...@@ -903,14 +903,14 @@ fn renderVarDecl(ais: *Ais, tree: ast.Tree, var_decl: ast.full.VarDecl) Error!vo...@@ -903,14 +903,14 @@ fn renderVarDecl(ais: *Ais, tree: ast.Tree, var_decl: ast.full.VarDecl) Error!vo
903 const lparen = tree.firstToken(var_decl.ast.align_node) - 1;903 const lparen = tree.firstToken(var_decl.ast.align_node) - 1;
904 const align_kw = lparen - 1;904 const align_kw = lparen - 1;
905 const rparen = tree.lastToken(var_decl.ast.align_node) + 1;905 const rparen = tree.lastToken(var_decl.ast.align_node) + 1;
906 try renderToken(ais, tree, align_kw, Space.None); // align906 try renderToken(ais, tree, align_kw, Space.none); // align
907 try renderToken(ais, tree, lparen, Space.None); // (907 try renderToken(ais, tree, lparen, Space.none); // (
908 try renderExpression(ais, tree, var_decl.ast.align_node, Space.None);908 try renderExpression(ais, tree, var_decl.ast.align_node, Space.none);
909 if (var_decl.ast.section_node != 0 or var_decl.ast.init_node != 0) {909 if (var_decl.ast.section_node != 0 or var_decl.ast.init_node != 0) {
910 try renderToken(ais, tree, rparen, .Space); // )910 try renderToken(ais, tree, rparen, .space); // )
911 } else {911 } else {
912 try renderToken(ais, tree, rparen, .None); // )912 try renderToken(ais, tree, rparen, .none); // )
913 return renderToken(ais, tree, rparen + 1, Space.Newline); // ;913 return renderToken(ais, tree, rparen + 1, Space.newline); // ;
914 }914 }
915 }915 }
916916
...@@ -918,27 +918,27 @@ fn renderVarDecl(ais: *Ais, tree: ast.Tree, var_decl: ast.full.VarDecl) Error!vo...@@ -918,27 +918,27 @@ fn renderVarDecl(ais: *Ais, tree: ast.Tree, var_decl: ast.full.VarDecl) Error!vo
918 const lparen = tree.firstToken(var_decl.ast.section_node) - 1;918 const lparen = tree.firstToken(var_decl.ast.section_node) - 1;
919 const section_kw = lparen - 1;919 const section_kw = lparen - 1;
920 const rparen = tree.lastToken(var_decl.ast.section_node) + 1;920 const rparen = tree.lastToken(var_decl.ast.section_node) + 1;
921 try renderToken(ais, tree, section_kw, Space.None); // linksection921 try renderToken(ais, tree, section_kw, Space.none); // linksection
922 try renderToken(ais, tree, lparen, Space.None); // (922 try renderToken(ais, tree, lparen, Space.none); // (
923 try renderExpression(ais, tree, var_decl.ast.section_node, Space.None);923 try renderExpression(ais, tree, var_decl.ast.section_node, Space.none);
924 if (var_decl.ast.init_node != 0) {924 if (var_decl.ast.init_node != 0) {
925 try renderToken(ais, tree, rparen, .Space); // )925 try renderToken(ais, tree, rparen, .space); // )
926 } else {926 } else {
927 try renderToken(ais, tree, rparen, .None); // )927 try renderToken(ais, tree, rparen, .none); // )
928 return renderToken(ais, tree, rparen + 1, Space.Newline); // ;928 return renderToken(ais, tree, rparen + 1, Space.newline); // ;
929 }929 }
930 }930 }
931931
932 assert(var_decl.ast.init_node != 0);932 assert(var_decl.ast.init_node != 0);
933 const eq_token = tree.firstToken(var_decl.ast.init_node) - 1;933 const eq_token = tree.firstToken(var_decl.ast.init_node) - 1;
934 const eq_space: Space = if (tree.tokensOnSameLine(eq_token, eq_token + 1)) .Space else .Newline;934 const eq_space: Space = if (tree.tokensOnSameLine(eq_token, eq_token + 1)) .space else .newline;
935 {935 {
936 ais.pushIndent();936 ais.pushIndent();
937 try renderToken(ais, tree, eq_token, eq_space); // =937 try renderToken(ais, tree, eq_token, eq_space); // =
938 ais.popIndent();938 ais.popIndent();
939 }939 }
940 ais.pushIndentOneShot();940 ais.pushIndentOneShot();
941 try renderExpression(ais, tree, var_decl.ast.init_node, .Semicolon);941 try renderExpression(ais, tree, var_decl.ast.init_node, .semicolon);
942}942}
943943
944fn renderIf(ais: *Ais, tree: ast.Tree, if_node: ast.full.If, space: Space) Error!void {944fn renderIf(ais: *Ais, tree: ast.Tree, if_node: ast.full.If, space: Space) Error!void {
...@@ -965,60 +965,60 @@ fn renderWhile(ais: *Ais, tree: ast.Tree, while_node: ast.full.While, space: Spa...@@ -965,60 +965,60 @@ fn renderWhile(ais: *Ais, tree: ast.Tree, while_node: ast.full.While, space: Spa
965 const token_tags = tree.tokens.items(.tag);965 const token_tags = tree.tokens.items(.tag);
966966
967 if (while_node.label_token) |label| {967 if (while_node.label_token) |label| {
968 try renderToken(ais, tree, label, .None); // label968 try renderToken(ais, tree, label, .none); // label
969 try renderToken(ais, tree, label + 1, .Space); // :969 try renderToken(ais, tree, label + 1, .space); // :
970 }970 }
971971
972 if (while_node.inline_token) |inline_token| {972 if (while_node.inline_token) |inline_token| {
973 try renderToken(ais, tree, inline_token, .Space); // inline973 try renderToken(ais, tree, inline_token, .space); // inline
974 }974 }
975975
976 try renderToken(ais, tree, while_node.ast.while_token, .Space); // if976 try renderToken(ais, tree, while_node.ast.while_token, .space); // if
977 try renderToken(ais, tree, while_node.ast.while_token + 1, .None); // (977 try renderToken(ais, tree, while_node.ast.while_token + 1, .none); // (
978 try renderExpression(ais, tree, while_node.ast.cond_expr, .None); // condition978 try renderExpression(ais, tree, while_node.ast.cond_expr, .none); // condition
979979
980 if (nodeIsBlock(node_tags[while_node.ast.then_expr])) {980 if (nodeIsBlock(node_tags[while_node.ast.then_expr])) {
981 if (while_node.payload_token) |payload_token| {981 if (while_node.payload_token) |payload_token| {
982 try renderToken(ais, tree, payload_token - 2, .Space); // )982 try renderToken(ais, tree, payload_token - 2, .space); // )
983 try renderToken(ais, tree, payload_token - 1, .None); // |983 try renderToken(ais, tree, payload_token - 1, .none); // |
984 const ident = blk: {984 const ident = blk: {
985 if (token_tags[payload_token] == .asterisk) {985 if (token_tags[payload_token] == .asterisk) {
986 try renderToken(ais, tree, payload_token, .None); // *986 try renderToken(ais, tree, payload_token, .none); // *
987 break :blk payload_token + 1;987 break :blk payload_token + 1;
988 } else {988 } else {
989 break :blk payload_token;989 break :blk payload_token;
990 }990 }
991 };991 };
992 try renderToken(ais, tree, ident, .None); // identifier992 try renderToken(ais, tree, ident, .none); // identifier
993 const pipe = blk: {993 const pipe = blk: {
994 if (token_tags[ident + 1] == .comma) {994 if (token_tags[ident + 1] == .comma) {
995 try renderToken(ais, tree, ident + 1, .Space); // ,995 try renderToken(ais, tree, ident + 1, .space); // ,
996 try renderToken(ais, tree, ident + 2, .None); // index996 try renderToken(ais, tree, ident + 2, .none); // index
997 break :blk payload_token + 3;997 break :blk payload_token + 3;
998 } else {998 } else {
999 break :blk ident + 1;999 break :blk ident + 1;
1000 }1000 }
1001 };1001 };
1002 try renderToken(ais, tree, pipe, .Space); // |1002 try renderToken(ais, tree, pipe, .space); // |
1003 } else {1003 } else {
1004 const rparen = tree.lastToken(while_node.ast.cond_expr) + 1;1004 const rparen = tree.lastToken(while_node.ast.cond_expr) + 1;
1005 try renderToken(ais, tree, rparen, .Space); // )1005 try renderToken(ais, tree, rparen, .space); // )
1006 }1006 }
1007 if (while_node.ast.cont_expr != 0) {1007 if (while_node.ast.cont_expr != 0) {
1008 const rparen = tree.lastToken(while_node.ast.cont_expr) + 1;1008 const rparen = tree.lastToken(while_node.ast.cont_expr) + 1;
1009 const lparen = tree.firstToken(while_node.ast.cont_expr) - 1;1009 const lparen = tree.firstToken(while_node.ast.cont_expr) - 1;
1010 try renderToken(ais, tree, lparen - 1, .Space); // :1010 try renderToken(ais, tree, lparen - 1, .space); // :
1011 try renderToken(ais, tree, lparen, .None); // lparen1011 try renderToken(ais, tree, lparen, .none); // lparen
1012 try renderExpression(ais, tree, while_node.ast.cont_expr, .None);1012 try renderExpression(ais, tree, while_node.ast.cont_expr, .none);
1013 try renderToken(ais, tree, rparen, .Space); // rparen1013 try renderToken(ais, tree, rparen, .space); // rparen
1014 }1014 }
1015 if (while_node.ast.else_expr != 0) {1015 if (while_node.ast.else_expr != 0) {
1016 try renderExpression(ais, tree, while_node.ast.then_expr, Space.Space);1016 try renderExpression(ais, tree, while_node.ast.then_expr, Space.space);
1017 try renderToken(ais, tree, while_node.else_token, .Space); // else1017 try renderToken(ais, tree, while_node.else_token, .space); // else
1018 if (while_node.error_token) |error_token| {1018 if (while_node.error_token) |error_token| {
1019 try renderToken(ais, tree, error_token - 1, .None); // |1019 try renderToken(ais, tree, error_token - 1, .none); // |
1020 try renderToken(ais, tree, error_token, .None); // identifier1020 try renderToken(ais, tree, error_token, .none); // identifier
1021 try renderToken(ais, tree, error_token + 1, .Space); // |1021 try renderToken(ais, tree, error_token + 1, .space); // |
1022 }1022 }
1023 return renderExpression(ais, tree, while_node.ast.else_expr, space);1023 return renderExpression(ais, tree, while_node.ast.else_expr, space);
1024 } else {1024 } else {
...@@ -1032,61 +1032,61 @@ fn renderWhile(ais: *Ais, tree: ast.Tree, while_node: ast.full.While, space: Spa...@@ -1032,61 +1032,61 @@ fn renderWhile(ais: *Ais, tree: ast.Tree, while_node: ast.full.While, space: Spa
10321032
1033 if (src_has_newline) {1033 if (src_has_newline) {
1034 if (while_node.payload_token) |payload_token| {1034 if (while_node.payload_token) |payload_token| {
1035 try renderToken(ais, tree, payload_token - 2, .Space); // )1035 try renderToken(ais, tree, payload_token - 2, .space); // )
1036 try renderToken(ais, tree, payload_token - 1, .None); // |1036 try renderToken(ais, tree, payload_token - 1, .none); // |
1037 const ident = blk: {1037 const ident = blk: {
1038 if (token_tags[payload_token] == .asterisk) {1038 if (token_tags[payload_token] == .asterisk) {
1039 try renderToken(ais, tree, payload_token, .None); // *1039 try renderToken(ais, tree, payload_token, .none); // *
1040 break :blk payload_token + 1;1040 break :blk payload_token + 1;
1041 } else {1041 } else {
1042 break :blk payload_token;1042 break :blk payload_token;
1043 }1043 }
1044 };1044 };
1045 try renderToken(ais, tree, ident, .None); // identifier1045 try renderToken(ais, tree, ident, .none); // identifier
1046 const pipe = blk: {1046 const pipe = blk: {
1047 if (token_tags[ident + 1] == .comma) {1047 if (token_tags[ident + 1] == .comma) {
1048 try renderToken(ais, tree, ident + 1, .Space); // ,1048 try renderToken(ais, tree, ident + 1, .space); // ,
1049 try renderToken(ais, tree, ident + 2, .None); // index1049 try renderToken(ais, tree, ident + 2, .none); // index
1050 break :blk payload_token + 3;1050 break :blk payload_token + 3;
1051 } else {1051 } else {
1052 break :blk ident + 1;1052 break :blk ident + 1;
1053 }1053 }
1054 };1054 };
1055 try renderToken(ais, tree, pipe, .Newline); // |1055 try renderToken(ais, tree, pipe, .newline); // |
1056 } else {1056 } else {
1057 ais.pushIndent();1057 ais.pushIndent();
1058 try renderToken(ais, tree, rparen, .Newline); // )1058 try renderToken(ais, tree, rparen, .newline); // )
1059 ais.popIndent();1059 ais.popIndent();
1060 }1060 }
1061 if (while_node.ast.cont_expr != 0) {1061 if (while_node.ast.cont_expr != 0) {
1062 const cont_rparen = tree.lastToken(while_node.ast.cont_expr) + 1;1062 const cont_rparen = tree.lastToken(while_node.ast.cont_expr) + 1;
1063 const cont_lparen = tree.firstToken(while_node.ast.cont_expr) - 1;1063 const cont_lparen = tree.firstToken(while_node.ast.cont_expr) - 1;
1064 try renderToken(ais, tree, cont_lparen - 1, .Space); // :1064 try renderToken(ais, tree, cont_lparen - 1, .space); // :
1065 try renderToken(ais, tree, cont_lparen, .None); // lparen1065 try renderToken(ais, tree, cont_lparen, .none); // lparen
1066 try renderExpression(ais, tree, while_node.ast.cont_expr, .None);1066 try renderExpression(ais, tree, while_node.ast.cont_expr, .none);
1067 try renderToken(ais, tree, cont_rparen, .Newline); // rparen1067 try renderToken(ais, tree, cont_rparen, .newline); // rparen
1068 }1068 }
1069 if (while_node.ast.else_expr != 0) {1069 if (while_node.ast.else_expr != 0) {
1070 ais.pushIndent();1070 ais.pushIndent();
1071 try renderExpression(ais, tree, while_node.ast.then_expr, Space.Newline);1071 try renderExpression(ais, tree, while_node.ast.then_expr, Space.newline);
1072 ais.popIndent();1072 ais.popIndent();
1073 const else_is_block = nodeIsBlock(node_tags[while_node.ast.else_expr]);1073 const else_is_block = nodeIsBlock(node_tags[while_node.ast.else_expr]);
1074 if (else_is_block) {1074 if (else_is_block) {
1075 try renderToken(ais, tree, while_node.else_token, .Space); // else1075 try renderToken(ais, tree, while_node.else_token, .space); // else
1076 if (while_node.error_token) |error_token| {1076 if (while_node.error_token) |error_token| {
1077 try renderToken(ais, tree, error_token - 1, .None); // |1077 try renderToken(ais, tree, error_token - 1, .none); // |
1078 try renderToken(ais, tree, error_token, .None); // identifier1078 try renderToken(ais, tree, error_token, .none); // identifier
1079 try renderToken(ais, tree, error_token + 1, .Space); // |1079 try renderToken(ais, tree, error_token + 1, .space); // |
1080 }1080 }
1081 return renderExpression(ais, tree, while_node.ast.else_expr, space);1081 return renderExpression(ais, tree, while_node.ast.else_expr, space);
1082 } else {1082 } else {
1083 if (while_node.error_token) |error_token| {1083 if (while_node.error_token) |error_token| {
1084 try renderToken(ais, tree, while_node.else_token, .Space); // else1084 try renderToken(ais, tree, while_node.else_token, .space); // else
1085 try renderToken(ais, tree, error_token - 1, .None); // |1085 try renderToken(ais, tree, error_token - 1, .none); // |
1086 try renderToken(ais, tree, error_token, .None); // identifier1086 try renderToken(ais, tree, error_token, .none); // identifier
1087 try renderToken(ais, tree, error_token + 1, .Space); // |1087 try renderToken(ais, tree, error_token + 1, .space); // |
1088 } else {1088 } else {
1089 try renderToken(ais, tree, while_node.else_token, .Newline); // else1089 try renderToken(ais, tree, while_node.else_token, .newline); // else
1090 }1090 }
1091 ais.pushIndent();1091 ais.pushIndent();
1092 try renderExpression(ais, tree, while_node.ast.else_expr, space);1092 try renderExpression(ais, tree, while_node.ast.else_expr, space);
...@@ -1105,48 +1105,48 @@ fn renderWhile(ais: *Ais, tree: ast.Tree, while_node: ast.full.While, space: Spa...@@ -1105,48 +1105,48 @@ fn renderWhile(ais: *Ais, tree: ast.Tree, while_node: ast.full.While, space: Spa
11051105
1106 if (while_node.payload_token) |payload_token| {1106 if (while_node.payload_token) |payload_token| {
1107 assert(payload_token - 2 == rparen);1107 assert(payload_token - 2 == rparen);
1108 try renderToken(ais, tree, payload_token - 2, .Space); // )1108 try renderToken(ais, tree, payload_token - 2, .space); // )
1109 try renderToken(ais, tree, payload_token - 1, .None); // |1109 try renderToken(ais, tree, payload_token - 1, .none); // |
1110 const ident = blk: {1110 const ident = blk: {
1111 if (token_tags[payload_token] == .asterisk) {1111 if (token_tags[payload_token] == .asterisk) {
1112 try renderToken(ais, tree, payload_token, .None); // *1112 try renderToken(ais, tree, payload_token, .none); // *
1113 break :blk payload_token + 1;1113 break :blk payload_token + 1;
1114 } else {1114 } else {
1115 break :blk payload_token;1115 break :blk payload_token;
1116 }1116 }
1117 };1117 };
1118 try renderToken(ais, tree, ident, .None); // identifier1118 try renderToken(ais, tree, ident, .none); // identifier
1119 const pipe = blk: {1119 const pipe = blk: {
1120 if (token_tags[ident + 1] == .comma) {1120 if (token_tags[ident + 1] == .comma) {
1121 try renderToken(ais, tree, ident + 1, .Space); // ,1121 try renderToken(ais, tree, ident + 1, .space); // ,
1122 try renderToken(ais, tree, ident + 2, .None); // index1122 try renderToken(ais, tree, ident + 2, .none); // index
1123 break :blk payload_token + 3;1123 break :blk payload_token + 3;
1124 } else {1124 } else {
1125 break :blk ident + 1;1125 break :blk ident + 1;
1126 }1126 }
1127 };1127 };
1128 try renderToken(ais, tree, pipe, .Space); // |1128 try renderToken(ais, tree, pipe, .space); // |
1129 } else {1129 } else {
1130 try renderToken(ais, tree, rparen, .Space); // )1130 try renderToken(ais, tree, rparen, .space); // )
1131 }1131 }
11321132
1133 if (while_node.ast.cont_expr != 0) {1133 if (while_node.ast.cont_expr != 0) {
1134 const cont_rparen = tree.lastToken(while_node.ast.cont_expr) + 1;1134 const cont_rparen = tree.lastToken(while_node.ast.cont_expr) + 1;
1135 const cont_lparen = tree.firstToken(while_node.ast.cont_expr) - 1;1135 const cont_lparen = tree.firstToken(while_node.ast.cont_expr) - 1;
1136 try renderToken(ais, tree, cont_lparen - 1, .Space); // :1136 try renderToken(ais, tree, cont_lparen - 1, .space); // :
1137 try renderToken(ais, tree, cont_lparen, .None); // lparen1137 try renderToken(ais, tree, cont_lparen, .none); // lparen
1138 try renderExpression(ais, tree, while_node.ast.cont_expr, .None);1138 try renderExpression(ais, tree, while_node.ast.cont_expr, .none);
1139 try renderToken(ais, tree, cont_rparen, .Space); // rparen1139 try renderToken(ais, tree, cont_rparen, .space); // rparen
1140 }1140 }
11411141
1142 if (while_node.ast.else_expr != 0) {1142 if (while_node.ast.else_expr != 0) {
1143 try renderExpression(ais, tree, while_node.ast.then_expr, .Space);1143 try renderExpression(ais, tree, while_node.ast.then_expr, .space);
1144 try renderToken(ais, tree, while_node.else_token, .Space); // else1144 try renderToken(ais, tree, while_node.else_token, .space); // else
11451145
1146 if (while_node.error_token) |error_token| {1146 if (while_node.error_token) |error_token| {
1147 try renderToken(ais, tree, error_token - 1, .None); // |1147 try renderToken(ais, tree, error_token - 1, .none); // |
1148 try renderToken(ais, tree, error_token, .None); // identifier1148 try renderToken(ais, tree, error_token, .none); // identifier
1149 try renderToken(ais, tree, error_token + 1, .Space); // |1149 try renderToken(ais, tree, error_token + 1, .space); // |
1150 }1150 }
11511151
1152 return renderExpression(ais, tree, while_node.ast.else_expr, space);1152 return renderExpression(ais, tree, while_node.ast.else_expr, space);
...@@ -1163,21 +1163,21 @@ fn renderContainerField(...@@ -1163,21 +1163,21 @@ fn renderContainerField(
1163) Error!void {1163) Error!void {
1164 const main_tokens = tree.nodes.items(.main_token);1164 const main_tokens = tree.nodes.items(.main_token);
1165 if (field.comptime_token) |t| {1165 if (field.comptime_token) |t| {
1166 try renderToken(ais, tree, t, .Space); // comptime1166 try renderToken(ais, tree, t, .space); // comptime
1167 }1167 }
1168 if (field.ast.type_expr == 0 and field.ast.value_expr == 0) {1168 if (field.ast.type_expr == 0 and field.ast.value_expr == 0) {
1169 return renderTokenComma(ais, tree, field.ast.name_token, space); // name1169 return renderTokenComma(ais, tree, field.ast.name_token, space); // name
1170 }1170 }
1171 if (field.ast.type_expr != 0 and field.ast.value_expr == 0) {1171 if (field.ast.type_expr != 0 and field.ast.value_expr == 0) {
1172 try renderToken(ais, tree, field.ast.name_token, .None); // name1172 try renderToken(ais, tree, field.ast.name_token, .none); // name
1173 try renderToken(ais, tree, field.ast.name_token + 1, .Space); // :1173 try renderToken(ais, tree, field.ast.name_token + 1, .space); // :
11741174
1175 if (field.ast.align_expr != 0) {1175 if (field.ast.align_expr != 0) {
1176 try renderExpression(ais, tree, field.ast.type_expr, .Space); // type1176 try renderExpression(ais, tree, field.ast.type_expr, .space); // type
1177 const align_token = tree.firstToken(field.ast.align_expr) - 2;1177 const align_token = tree.firstToken(field.ast.align_expr) - 2;
1178 try renderToken(ais, tree, align_token, .None); // align1178 try renderToken(ais, tree, align_token, .none); // align
1179 try renderToken(ais, tree, align_token + 1, .None); // (1179 try renderToken(ais, tree, align_token + 1, .none); // (
1180 try renderExpression(ais, tree, field.ast.align_expr, .None); // alignment1180 try renderExpression(ais, tree, field.ast.align_expr, .none); // alignment
1181 const rparen = tree.lastToken(field.ast.align_expr) + 1;1181 const rparen = tree.lastToken(field.ast.align_expr) + 1;
1182 return renderTokenComma(ais, tree, rparen, space); // )1182 return renderTokenComma(ais, tree, rparen, space); // )
1183 } else {1183 } else {
...@@ -1185,26 +1185,26 @@ fn renderContainerField(...@@ -1185,26 +1185,26 @@ fn renderContainerField(
1185 }1185 }
1186 }1186 }
1187 if (field.ast.type_expr == 0 and field.ast.value_expr != 0) {1187 if (field.ast.type_expr == 0 and field.ast.value_expr != 0) {
1188 try renderToken(ais, tree, field.ast.name_token, .Space); // name1188 try renderToken(ais, tree, field.ast.name_token, .space); // name
1189 try renderToken(ais, tree, field.ast.name_token + 1, .Space); // =1189 try renderToken(ais, tree, field.ast.name_token + 1, .space); // =
1190 return renderExpressionComma(ais, tree, field.ast.value_expr, space); // value1190 return renderExpressionComma(ais, tree, field.ast.value_expr, space); // value
1191 }1191 }
11921192
1193 try renderToken(ais, tree, field.ast.name_token, .None); // name1193 try renderToken(ais, tree, field.ast.name_token, .none); // name
1194 try renderToken(ais, tree, field.ast.name_token + 1, .Space); // :1194 try renderToken(ais, tree, field.ast.name_token + 1, .space); // :
1195 try renderExpression(ais, tree, field.ast.type_expr, .Space); // type1195 try renderExpression(ais, tree, field.ast.type_expr, .space); // type
11961196
1197 if (field.ast.align_expr != 0) {1197 if (field.ast.align_expr != 0) {
1198 const lparen_token = tree.firstToken(field.ast.align_expr) - 1;1198 const lparen_token = tree.firstToken(field.ast.align_expr) - 1;
1199 const align_kw = lparen_token - 1;1199 const align_kw = lparen_token - 1;
1200 const rparen_token = tree.lastToken(field.ast.align_expr) + 1;1200 const rparen_token = tree.lastToken(field.ast.align_expr) + 1;
1201 try renderToken(ais, tree, align_kw, .None); // align1201 try renderToken(ais, tree, align_kw, .none); // align
1202 try renderToken(ais, tree, lparen_token, .None); // (1202 try renderToken(ais, tree, lparen_token, .none); // (
1203 try renderExpression(ais, tree, field.ast.align_expr, .None); // alignment1203 try renderExpression(ais, tree, field.ast.align_expr, .none); // alignment
1204 try renderToken(ais, tree, rparen_token, .Space); // )1204 try renderToken(ais, tree, rparen_token, .space); // )
1205 }1205 }
1206 const eq_token = tree.firstToken(field.ast.value_expr) - 1;1206 const eq_token = tree.firstToken(field.ast.value_expr) - 1;
1207 try renderToken(ais, tree, eq_token, .Space); // =1207 try renderToken(ais, tree, eq_token, .space); // =
1208 return renderExpressionComma(ais, tree, field.ast.value_expr, space); // value1208 return renderExpressionComma(ais, tree, field.ast.value_expr, space); // value
1209}1209}
12101210
...@@ -1217,10 +1217,10 @@ fn renderBuiltinCall(...@@ -1217,10 +1217,10 @@ fn renderBuiltinCall(
1217) Error!void {1217) Error!void {
1218 const token_tags = tree.tokens.items(.tag);1218 const token_tags = tree.tokens.items(.tag);
12191219
1220 try renderToken(ais, tree, builtin_token, .None); // @name1220 try renderToken(ais, tree, builtin_token, .none); // @name
12211221
1222 if (params.len == 0) {1222 if (params.len == 0) {
1223 try renderToken(ais, tree, builtin_token + 1, .None); // (1223 try renderToken(ais, tree, builtin_token + 1, .none); // (
1224 return renderToken(ais, tree, builtin_token + 2, space); // )1224 return renderToken(ais, tree, builtin_token + 2, space); // )
1225 }1225 }
12261226
...@@ -1229,24 +1229,24 @@ fn renderBuiltinCall(...@@ -1229,24 +1229,24 @@ fn renderBuiltinCall(
12291229
1230 if (token_tags[after_last_param_token] != .comma) {1230 if (token_tags[after_last_param_token] != .comma) {
1231 // Render all on one line, no trailing comma.1231 // Render all on one line, no trailing comma.
1232 try renderToken(ais, tree, builtin_token + 1, .None); // (1232 try renderToken(ais, tree, builtin_token + 1, .none); // (
12331233
1234 for (params) |param_node, i| {1234 for (params) |param_node, i| {
1235 try renderExpression(ais, tree, param_node, .None);1235 try renderExpression(ais, tree, param_node, .none);
12361236
1237 if (i + 1 < params.len) {1237 if (i + 1 < params.len) {
1238 const comma_token = tree.lastToken(param_node) + 1;1238 const comma_token = tree.lastToken(param_node) + 1;
1239 try renderToken(ais, tree, comma_token, .Space); // ,1239 try renderToken(ais, tree, comma_token, .space); // ,
1240 }1240 }
1241 }1241 }
1242 return renderToken(ais, tree, after_last_param_token, space); // )1242 return renderToken(ais, tree, after_last_param_token, space); // )
1243 } else {1243 } else {
1244 // Render one param per line.1244 // Render one param per line.
1245 ais.pushIndent();1245 ais.pushIndent();
1246 try renderToken(ais, tree, builtin_token + 1, Space.Newline); // (1246 try renderToken(ais, tree, builtin_token + 1, Space.newline); // (
12471247
1248 for (params) |param_node| {1248 for (params) |param_node| {
1249 try renderExpression(ais, tree, param_node, .Comma);1249 try renderExpression(ais, tree, param_node, .comma);
1250 }1250 }
1251 ais.popIndent();1251 ais.popIndent();
12521252
...@@ -1260,11 +1260,11 @@ fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.full.FnProto, space: S...@@ -1260,11 +1260,11 @@ fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.full.FnProto, space: S
12601260
1261 const after_fn_token = fn_proto.ast.fn_token + 1;1261 const after_fn_token = fn_proto.ast.fn_token + 1;
1262 const lparen = if (token_tags[after_fn_token] == .identifier) blk: {1262 const lparen = if (token_tags[after_fn_token] == .identifier) blk: {
1263 try renderToken(ais, tree, fn_proto.ast.fn_token, .Space); // fn1263 try renderToken(ais, tree, fn_proto.ast.fn_token, .space); // fn
1264 try renderToken(ais, tree, after_fn_token, .None); // name1264 try renderToken(ais, tree, after_fn_token, .none); // name
1265 break :blk after_fn_token + 1;1265 break :blk after_fn_token + 1;
1266 } else blk: {1266 } else blk: {
1267 try renderToken(ais, tree, fn_proto.ast.fn_token, .Space); // fn1267 try renderToken(ais, tree, fn_proto.ast.fn_token, .space); // fn
1268 break :blk fn_proto.ast.fn_token + 1;1268 break :blk fn_proto.ast.fn_token + 1;
1269 };1269 };
1270 assert(token_tags[lparen] == .l_paren);1270 assert(token_tags[lparen] == .l_paren);
...@@ -1307,7 +1307,7 @@ fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.full.FnProto, space: S...@@ -1307,7 +1307,7 @@ fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.full.FnProto, space: S
13071307
1308 if (token_tags[rparen - 1] != .comma) {1308 if (token_tags[rparen - 1] != .comma) {
1309 // Render all on one line, no trailing comma.1309 // Render all on one line, no trailing comma.
1310 try renderToken(ais, tree, lparen, .None); // (1310 try renderToken(ais, tree, lparen, .none); // (
13111311
1312 var param_i: usize = 0;1312 var param_i: usize = 0;
1313 var last_param_token = lparen;1313 var last_param_token = lparen;
...@@ -1315,25 +1315,25 @@ fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.full.FnProto, space: S...@@ -1315,25 +1315,25 @@ fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.full.FnProto, space: S
1315 last_param_token += 1;1315 last_param_token += 1;
1316 switch (token_tags[last_param_token]) {1316 switch (token_tags[last_param_token]) {
1317 .doc_comment => {1317 .doc_comment => {
1318 try renderToken(ais, tree, last_param_token, .Newline);1318 try renderToken(ais, tree, last_param_token, .newline);
1319 continue;1319 continue;
1320 },1320 },
1321 .ellipsis3 => {1321 .ellipsis3 => {
1322 try renderToken(ais, tree, last_param_token, .None); // ...1322 try renderToken(ais, tree, last_param_token, .none); // ...
1323 break;1323 break;
1324 },1324 },
1325 .keyword_noalias, .keyword_comptime => {1325 .keyword_noalias, .keyword_comptime => {
1326 try renderToken(ais, tree, last_param_token, .Space);1326 try renderToken(ais, tree, last_param_token, .space);
1327 last_param_token += 1;1327 last_param_token += 1;
1328 },1328 },
1329 .identifier => {},1329 .identifier => {},
1330 .keyword_anytype => {1330 .keyword_anytype => {
1331 try renderToken(ais, tree, last_param_token, .None); // anytype1331 try renderToken(ais, tree, last_param_token, .none); // anytype
1332 continue;1332 continue;
1333 },1333 },
1334 .r_paren => break,1334 .r_paren => break,
1335 .comma => {1335 .comma => {
1336 try renderToken(ais, tree, last_param_token, .Space); // ,1336 try renderToken(ais, tree, last_param_token, .space); // ,
1337 last_param_token += 1;1337 last_param_token += 1;
1338 },1338 },
1339 else => {}, // Parameter type without a name.1339 else => {}, // Parameter type without a name.
...@@ -1341,24 +1341,24 @@ fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.full.FnProto, space: S...@@ -1341,24 +1341,24 @@ fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.full.FnProto, space: S
1341 if (token_tags[last_param_token] == .identifier and1341 if (token_tags[last_param_token] == .identifier and
1342 token_tags[last_param_token + 1] == .colon)1342 token_tags[last_param_token + 1] == .colon)
1343 {1343 {
1344 try renderToken(ais, tree, last_param_token, .None); // name1344 try renderToken(ais, tree, last_param_token, .none); // name
1345 last_param_token += 1;1345 last_param_token += 1;
1346 try renderToken(ais, tree, last_param_token, .Space); // :1346 try renderToken(ais, tree, last_param_token, .space); // :
1347 last_param_token += 1;1347 last_param_token += 1;
1348 }1348 }
1349 if (token_tags[last_param_token] == .keyword_anytype) {1349 if (token_tags[last_param_token] == .keyword_anytype) {
1350 try renderToken(ais, tree, last_param_token, .None); // anytype1350 try renderToken(ais, tree, last_param_token, .none); // anytype
1351 continue;1351 continue;
1352 }1352 }
1353 const param = fn_proto.ast.params[param_i];1353 const param = fn_proto.ast.params[param_i];
1354 param_i += 1;1354 param_i += 1;
1355 try renderExpression(ais, tree, param, .None);1355 try renderExpression(ais, tree, param, .none);
1356 last_param_token = tree.lastToken(param);1356 last_param_token = tree.lastToken(param);
1357 }1357 }
1358 } else {1358 } else {
1359 // One param per line.1359 // One param per line.
1360 ais.pushIndent();1360 ais.pushIndent();
1361 try renderToken(ais, tree, lparen, .Newline); // (1361 try renderToken(ais, tree, lparen, .newline); // (
13621362
1363 var param_i: usize = 0;1363 var param_i: usize = 0;
1364 var last_param_token = lparen;1364 var last_param_token = lparen;
...@@ -1366,77 +1366,77 @@ fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.full.FnProto, space: S...@@ -1366,77 +1366,77 @@ fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.full.FnProto, space: S
1366 last_param_token += 1;1366 last_param_token += 1;
1367 switch (token_tags[last_param_token]) {1367 switch (token_tags[last_param_token]) {
1368 .doc_comment => {1368 .doc_comment => {
1369 try renderToken(ais, tree, last_param_token, .Newline);1369 try renderToken(ais, tree, last_param_token, .newline);
1370 continue;1370 continue;
1371 },1371 },
1372 .ellipsis3 => {1372 .ellipsis3 => {
1373 try renderToken(ais, tree, last_param_token, .Comma); // ...1373 try renderToken(ais, tree, last_param_token, .comma); // ...
1374 break;1374 break;
1375 },1375 },
1376 .keyword_noalias, .keyword_comptime => {1376 .keyword_noalias, .keyword_comptime => {
1377 try renderToken(ais, tree, last_param_token, .Space);1377 try renderToken(ais, tree, last_param_token, .space);
1378 last_param_token += 1;1378 last_param_token += 1;
1379 },1379 },
1380 .identifier => {},1380 .identifier => {},
1381 .keyword_anytype => {1381 .keyword_anytype => {
1382 try renderToken(ais, tree, last_param_token, .Comma); // anytype1382 try renderToken(ais, tree, last_param_token, .comma); // anytype
1383 continue;1383 continue;
1384 },1384 },
1385 .r_paren => break,1385 .r_paren => break,
1386 else => unreachable,1386 else => unreachable,
1387 }1387 }
1388 if (token_tags[last_param_token] == .identifier) {1388 if (token_tags[last_param_token] == .identifier) {
1389 try renderToken(ais, tree, last_param_token, .None); // name1389 try renderToken(ais, tree, last_param_token, .none); // name
1390 last_param_token += 1;1390 last_param_token += 1;
1391 try renderToken(ais, tree, last_param_token, .Space); // :1391 try renderToken(ais, tree, last_param_token, .space); // :
1392 last_param_token += 1;1392 last_param_token += 1;
1393 }1393 }
1394 if (token_tags[last_param_token] == .keyword_anytype) {1394 if (token_tags[last_param_token] == .keyword_anytype) {
1395 try renderToken(ais, tree, last_param_token, .Comma); // anytype1395 try renderToken(ais, tree, last_param_token, .comma); // anytype
1396 continue;1396 continue;
1397 }1397 }
1398 const param = fn_proto.ast.params[param_i];1398 const param = fn_proto.ast.params[param_i];
1399 param_i += 1;1399 param_i += 1;
1400 try renderExpression(ais, tree, param, .Comma);1400 try renderExpression(ais, tree, param, .comma);
1401 last_param_token = tree.lastToken(param) + 1;1401 last_param_token = tree.lastToken(param) + 1;
1402 }1402 }
1403 ais.popIndent();1403 ais.popIndent();
1404 }1404 }
14051405
1406 try renderToken(ais, tree, rparen, .Space); // )1406 try renderToken(ais, tree, rparen, .space); // )
14071407
1408 if (fn_proto.ast.align_expr != 0) {1408 if (fn_proto.ast.align_expr != 0) {
1409 const align_lparen = tree.firstToken(fn_proto.ast.align_expr) - 1;1409 const align_lparen = tree.firstToken(fn_proto.ast.align_expr) - 1;
1410 const align_rparen = tree.lastToken(fn_proto.ast.align_expr) + 1;1410 const align_rparen = tree.lastToken(fn_proto.ast.align_expr) + 1;
14111411
1412 try renderToken(ais, tree, align_lparen - 1, .None); // align1412 try renderToken(ais, tree, align_lparen - 1, .none); // align
1413 try renderToken(ais, tree, align_lparen, .None); // (1413 try renderToken(ais, tree, align_lparen, .none); // (
1414 try renderExpression(ais, tree, fn_proto.ast.align_expr, .None);1414 try renderExpression(ais, tree, fn_proto.ast.align_expr, .none);
1415 try renderToken(ais, tree, align_rparen, .Space); // )1415 try renderToken(ais, tree, align_rparen, .space); // )
1416 }1416 }
14171417
1418 if (fn_proto.ast.section_expr != 0) {1418 if (fn_proto.ast.section_expr != 0) {
1419 const section_lparen = tree.firstToken(fn_proto.ast.section_expr) - 1;1419 const section_lparen = tree.firstToken(fn_proto.ast.section_expr) - 1;
1420 const section_rparen = tree.lastToken(fn_proto.ast.section_expr) + 1;1420 const section_rparen = tree.lastToken(fn_proto.ast.section_expr) + 1;
14211421
1422 try renderToken(ais, tree, section_lparen - 1, .None); // section1422 try renderToken(ais, tree, section_lparen - 1, .none); // section
1423 try renderToken(ais, tree, section_lparen, .None); // (1423 try renderToken(ais, tree, section_lparen, .none); // (
1424 try renderExpression(ais, tree, fn_proto.ast.section_expr, .None);1424 try renderExpression(ais, tree, fn_proto.ast.section_expr, .none);
1425 try renderToken(ais, tree, section_rparen, .Space); // )1425 try renderToken(ais, tree, section_rparen, .space); // )
1426 }1426 }
14271427
1428 if (fn_proto.ast.callconv_expr != 0) {1428 if (fn_proto.ast.callconv_expr != 0) {
1429 const callconv_lparen = tree.firstToken(fn_proto.ast.callconv_expr) - 1;1429 const callconv_lparen = tree.firstToken(fn_proto.ast.callconv_expr) - 1;
1430 const callconv_rparen = tree.lastToken(fn_proto.ast.callconv_expr) + 1;1430 const callconv_rparen = tree.lastToken(fn_proto.ast.callconv_expr) + 1;
14311431
1432 try renderToken(ais, tree, callconv_lparen - 1, .None); // callconv1432 try renderToken(ais, tree, callconv_lparen - 1, .none); // callconv
1433 try renderToken(ais, tree, callconv_lparen, .None); // (1433 try renderToken(ais, tree, callconv_lparen, .none); // (
1434 try renderExpression(ais, tree, fn_proto.ast.callconv_expr, .None);1434 try renderExpression(ais, tree, fn_proto.ast.callconv_expr, .none);
1435 try renderToken(ais, tree, callconv_rparen, .Space); // )1435 try renderToken(ais, tree, callconv_rparen, .space); // )
1436 }1436 }
14371437
1438 if (token_tags[maybe_bang] == .bang) {1438 if (token_tags[maybe_bang] == .bang) {
1439 try renderToken(ais, tree, maybe_bang, .None); // !1439 try renderToken(ais, tree, maybe_bang, .none); // !
1440 }1440 }
1441 return renderExpression(ais, tree, fn_proto.ast.return_type, space);1441 return renderExpression(ais, tree, fn_proto.ast.return_type, space);
1442}1442}
...@@ -1452,34 +1452,34 @@ fn renderSwitchCase(...@@ -1452,34 +1452,34 @@ fn renderSwitchCase(
14521452
1453 // Render everything before the arrow1453 // Render everything before the arrow
1454 if (switch_case.ast.values.len == 0) {1454 if (switch_case.ast.values.len == 0) {
1455 try renderToken(ais, tree, switch_case.ast.arrow_token - 1, .Space); // else keyword1455 try renderToken(ais, tree, switch_case.ast.arrow_token - 1, .space); // else keyword
1456 } else if (switch_case.ast.values.len == 1) {1456 } else if (switch_case.ast.values.len == 1) {
1457 // render on one line and drop the trailing comma if any1457 // render on one line and drop the trailing comma if any
1458 try renderExpression(ais, tree, switch_case.ast.values[0], .Space);1458 try renderExpression(ais, tree, switch_case.ast.values[0], .space);
1459 } else if (trailing_comma) {1459 } else if (trailing_comma) {
1460 // Render each value on a new line1460 // Render each value on a new line
1461 for (switch_case.ast.values) |value_expr| {1461 for (switch_case.ast.values) |value_expr| {
1462 try renderExpression(ais, tree, value_expr, .Comma);1462 try renderExpression(ais, tree, value_expr, .comma);
1463 }1463 }
1464 } else {1464 } else {
1465 // Render on one line1465 // Render on one line
1466 for (switch_case.ast.values) |value_expr| {1466 for (switch_case.ast.values) |value_expr| {
1467 try renderExpression(ais, tree, value_expr, .CommaSpace);1467 try renderExpression(ais, tree, value_expr, .comma_space);
1468 }1468 }
1469 }1469 }
14701470
1471 // Render the arrow and everything after it1471 // Render the arrow and everything after it
1472 try renderToken(ais, tree, switch_case.ast.arrow_token, .Space);1472 try renderToken(ais, tree, switch_case.ast.arrow_token, .space);
14731473
1474 if (switch_case.payload_token) |payload_token| {1474 if (switch_case.payload_token) |payload_token| {
1475 try renderToken(ais, tree, payload_token - 1, .None); // pipe1475 try renderToken(ais, tree, payload_token - 1, .none); // pipe
1476 if (token_tags[payload_token] == .asterisk) {1476 if (token_tags[payload_token] == .asterisk) {
1477 try renderToken(ais, tree, payload_token, .None); // asterisk1477 try renderToken(ais, tree, payload_token, .none); // asterisk
1478 try renderToken(ais, tree, payload_token + 1, .None); // identifier1478 try renderToken(ais, tree, payload_token + 1, .none); // identifier
1479 try renderToken(ais, tree, payload_token + 2, .Space); // pipe1479 try renderToken(ais, tree, payload_token + 2, .space); // pipe
1480 } else {1480 } else {
1481 try renderToken(ais, tree, payload_token, .None); // identifier1481 try renderToken(ais, tree, payload_token, .none); // identifier
1482 try renderToken(ais, tree, payload_token + 1, .Space); // pipe1482 try renderToken(ais, tree, payload_token + 1, .space); // pipe
1483 }1483 }
1484 }1484 }
14851485
...@@ -1501,26 +1501,26 @@ fn renderBlock(...@@ -1501,26 +1501,26 @@ fn renderBlock(
1501 if (token_tags[lbrace - 1] == .colon and1501 if (token_tags[lbrace - 1] == .colon and
1502 token_tags[lbrace - 2] == .identifier)1502 token_tags[lbrace - 2] == .identifier)
1503 {1503 {
1504 try renderToken(ais, tree, lbrace - 2, .None);1504 try renderToken(ais, tree, lbrace - 2, .none);
1505 try renderToken(ais, tree, lbrace - 1, .Space);1505 try renderToken(ais, tree, lbrace - 1, .space);
1506 }1506 }
15071507
1508 if (statements.len == 0) {1508 if (statements.len == 0) {
1509 ais.pushIndentNextLine();1509 ais.pushIndentNextLine();
1510 try renderToken(ais, tree, lbrace, .None);1510 try renderToken(ais, tree, lbrace, .none);
1511 ais.popIndent();1511 ais.popIndent();
1512 return renderToken(ais, tree, lbrace + 1, space); // rbrace1512 return renderToken(ais, tree, lbrace + 1, space); // rbrace
1513 }1513 }
15141514
1515 ais.pushIndentNextLine();1515 ais.pushIndentNextLine();
1516 try renderToken(ais, tree, lbrace, .Newline);1516 try renderToken(ais, tree, lbrace, .newline);
1517 for (statements) |stmt, i| {1517 for (statements) |stmt, i| {
1518 switch (node_tags[stmt]) {1518 switch (node_tags[stmt]) {
1519 .global_var_decl => try renderVarDecl(ais, tree, tree.globalVarDecl(stmt)),1519 .global_var_decl => try renderVarDecl(ais, tree, tree.globalVarDecl(stmt)),
1520 .local_var_decl => try renderVarDecl(ais, tree, tree.localVarDecl(stmt)),1520 .local_var_decl => try renderVarDecl(ais, tree, tree.localVarDecl(stmt)),
1521 .simple_var_decl => try renderVarDecl(ais, tree, tree.simpleVarDecl(stmt)),1521 .simple_var_decl => try renderVarDecl(ais, tree, tree.simpleVarDecl(stmt)),
1522 .aligned_var_decl => try renderVarDecl(ais, tree, tree.alignedVarDecl(stmt)),1522 .aligned_var_decl => try renderVarDecl(ais, tree, tree.alignedVarDecl(stmt)),
1523 else => try renderExpression(ais, tree, stmt, .Semicolon),1523 else => try renderExpression(ais, tree, stmt, .semicolon),
1524 }1524 }
1525 }1525 }
1526 ais.popIndent();1526 ais.popIndent();
...@@ -1537,12 +1537,12 @@ fn renderStructInit(...@@ -1537,12 +1537,12 @@ fn renderStructInit(
1537) Error!void {1537) Error!void {
1538 const token_tags = tree.tokens.items(.tag);1538 const token_tags = tree.tokens.items(.tag);
1539 if (struct_init.ast.type_expr == 0) {1539 if (struct_init.ast.type_expr == 0) {
1540 try renderToken(ais, tree, struct_init.ast.lbrace - 1, .None); // .1540 try renderToken(ais, tree, struct_init.ast.lbrace - 1, .none); // .
1541 } else {1541 } else {
1542 try renderExpression(ais, tree, struct_init.ast.type_expr, .None); // T1542 try renderExpression(ais, tree, struct_init.ast.type_expr, .none); // T
1543 }1543 }
1544 if (struct_init.ast.fields.len == 0) {1544 if (struct_init.ast.fields.len == 0) {
1545 try renderToken(ais, tree, struct_init.ast.lbrace, .None); // lbrace1545 try renderToken(ais, tree, struct_init.ast.lbrace, .none); // lbrace
1546 return renderToken(ais, tree, struct_init.ast.lbrace + 1, space); // rbrace1546 return renderToken(ais, tree, struct_init.ast.lbrace + 1, space); // rbrace
1547 }1547 }
1548 const last_field = struct_init.ast.fields[struct_init.ast.fields.len - 1];1548 const last_field = struct_init.ast.fields[struct_init.ast.fields.len - 1];
...@@ -1550,28 +1550,28 @@ fn renderStructInit(...@@ -1550,28 +1550,28 @@ fn renderStructInit(
1550 if (token_tags[last_field_token + 1] == .comma) {1550 if (token_tags[last_field_token + 1] == .comma) {
1551 // Render one field init per line.1551 // Render one field init per line.
1552 ais.pushIndent();1552 ais.pushIndent();
1553 try renderToken(ais, tree, struct_init.ast.lbrace, .Newline);1553 try renderToken(ais, tree, struct_init.ast.lbrace, .newline);
15541554
1555 for (struct_init.ast.fields) |field_init| {1555 for (struct_init.ast.fields) |field_init| {
1556 const init_token = tree.firstToken(field_init);1556 const init_token = tree.firstToken(field_init);
1557 try renderToken(ais, tree, init_token - 3, .None); // .1557 try renderToken(ais, tree, init_token - 3, .none); // .
1558 try renderToken(ais, tree, init_token - 2, .Space); // name1558 try renderToken(ais, tree, init_token - 2, .space); // name
1559 try renderToken(ais, tree, init_token - 1, .Space); // =1559 try renderToken(ais, tree, init_token - 1, .space); // =
1560 try renderExpression(ais, tree, field_init, .Comma);1560 try renderExpression(ais, tree, field_init, .comma);
1561 }1561 }
15621562
1563 ais.popIndent();1563 ais.popIndent();
1564 return renderToken(ais, tree, last_field_token + 2, space); // rbrace1564 return renderToken(ais, tree, last_field_token + 2, space); // rbrace
1565 } else {1565 } else {
1566 // Render all on one line, no trailing comma.1566 // Render all on one line, no trailing comma.
1567 try renderToken(ais, tree, struct_init.ast.lbrace, .Space);1567 try renderToken(ais, tree, struct_init.ast.lbrace, .space);
15681568
1569 for (struct_init.ast.fields) |field_init| {1569 for (struct_init.ast.fields) |field_init| {
1570 const init_token = tree.firstToken(field_init);1570 const init_token = tree.firstToken(field_init);
1571 try renderToken(ais, tree, init_token - 3, .None); // .1571 try renderToken(ais, tree, init_token - 3, .none); // .
1572 try renderToken(ais, tree, init_token - 2, .Space); // name1572 try renderToken(ais, tree, init_token - 2, .space); // name
1573 try renderToken(ais, tree, init_token - 1, .Space); // =1573 try renderToken(ais, tree, init_token - 1, .space); // =
1574 try renderExpression(ais, tree, field_init, .CommaSpace);1574 try renderExpression(ais, tree, field_init, .comma_space);
1575 }1575 }
15761576
1577 return renderToken(ais, tree, last_field_token + 1, space); // rbrace1577 return renderToken(ais, tree, last_field_token + 1, space); // rbrace
...@@ -1587,12 +1587,12 @@ fn renderArrayInit(...@@ -1587,12 +1587,12 @@ fn renderArrayInit(
1587) Error!void {1587) Error!void {
1588 const token_tags = tree.tokens.items(.tag);1588 const token_tags = tree.tokens.items(.tag);
1589 if (array_init.ast.type_expr == 0) {1589 if (array_init.ast.type_expr == 0) {
1590 try renderToken(ais, tree, array_init.ast.lbrace - 1, .None); // .1590 try renderToken(ais, tree, array_init.ast.lbrace - 1, .none); // .
1591 } else {1591 } else {
1592 try renderExpression(ais, tree, array_init.ast.type_expr, .None); // T1592 try renderExpression(ais, tree, array_init.ast.type_expr, .none); // T
1593 }1593 }
1594 if (array_init.ast.elements.len == 0) {1594 if (array_init.ast.elements.len == 0) {
1595 try renderToken(ais, tree, array_init.ast.lbrace, .None); // lbrace1595 try renderToken(ais, tree, array_init.ast.lbrace, .none); // lbrace
1596 return renderToken(ais, tree, array_init.ast.lbrace + 1, space); // rbrace1596 return renderToken(ais, tree, array_init.ast.lbrace + 1, space); // rbrace
1597 }1597 }
1598 const last_elem = array_init.ast.elements[array_init.ast.elements.len - 1];1598 const last_elem = array_init.ast.elements[array_init.ast.elements.len - 1];
...@@ -1600,10 +1600,10 @@ fn renderArrayInit(...@@ -1600,10 +1600,10 @@ fn renderArrayInit(
1600 if (token_tags[last_elem_token + 1] == .comma) {1600 if (token_tags[last_elem_token + 1] == .comma) {
1601 // Render one element per line.1601 // Render one element per line.
1602 ais.pushIndent();1602 ais.pushIndent();
1603 try renderToken(ais, tree, array_init.ast.lbrace, .Newline);1603 try renderToken(ais, tree, array_init.ast.lbrace, .newline);
16041604
1605 for (array_init.ast.elements) |elem| {1605 for (array_init.ast.elements) |elem| {
1606 try renderExpression(ais, tree, elem, .Comma);1606 try renderExpression(ais, tree, elem, .comma);
1607 }1607 }
16081608
1609 ais.popIndent();1609 ais.popIndent();
...@@ -1612,12 +1612,12 @@ fn renderArrayInit(...@@ -1612,12 +1612,12 @@ fn renderArrayInit(
1612 // Render all on one line, no trailing comma.1612 // Render all on one line, no trailing comma.
1613 if (array_init.ast.elements.len == 1) {1613 if (array_init.ast.elements.len == 1) {
1614 // If there is only one element, we don't use spaces1614 // If there is only one element, we don't use spaces
1615 try renderToken(ais, tree, array_init.ast.lbrace, .None);1615 try renderToken(ais, tree, array_init.ast.lbrace, .none);
1616 try renderExpression(ais, tree, array_init.ast.elements[0], .None);1616 try renderExpression(ais, tree, array_init.ast.elements[0], .none);
1617 } else {1617 } else {
1618 try renderToken(ais, tree, array_init.ast.lbrace, .Space);1618 try renderToken(ais, tree, array_init.ast.lbrace, .space);
1619 for (array_init.ast.elements) |elem| {1619 for (array_init.ast.elements) |elem| {
1620 try renderExpression(ais, tree, elem, .CommaSpace);1620 try renderExpression(ais, tree, elem, .comma_space);
1621 }1621 }
1622 }1622 }
1623 return renderToken(ais, tree, last_elem_token + 1, space); // rbrace1623 return renderToken(ais, tree, last_elem_token + 1, space); // rbrace
...@@ -1634,39 +1634,39 @@ fn renderContainerDecl(...@@ -1634,39 +1634,39 @@ fn renderContainerDecl(
1634 const node_tags = tree.nodes.items(.tag);1634 const node_tags = tree.nodes.items(.tag);
16351635
1636 if (container_decl.layout_token) |layout_token| {1636 if (container_decl.layout_token) |layout_token| {
1637 try renderToken(ais, tree, layout_token, .Space);1637 try renderToken(ais, tree, layout_token, .space);
1638 }1638 }
16391639
1640 var lbrace: ast.TokenIndex = undefined;1640 var lbrace: ast.TokenIndex = undefined;
1641 if (container_decl.ast.enum_token) |enum_token| {1641 if (container_decl.ast.enum_token) |enum_token| {
1642 try renderToken(ais, tree, container_decl.ast.main_token, .None); // union1642 try renderToken(ais, tree, container_decl.ast.main_token, .none); // union
1643 try renderToken(ais, tree, enum_token - 1, .None); // lparen1643 try renderToken(ais, tree, enum_token - 1, .none); // lparen
1644 try renderToken(ais, tree, enum_token, .None); // enum1644 try renderToken(ais, tree, enum_token, .none); // enum
1645 if (container_decl.ast.arg != 0) {1645 if (container_decl.ast.arg != 0) {
1646 try renderToken(ais, tree, enum_token + 1, .None); // lparen1646 try renderToken(ais, tree, enum_token + 1, .none); // lparen
1647 try renderExpression(ais, tree, container_decl.ast.arg, .None);1647 try renderExpression(ais, tree, container_decl.ast.arg, .none);
1648 const rparen = tree.lastToken(container_decl.ast.arg) + 1;1648 const rparen = tree.lastToken(container_decl.ast.arg) + 1;
1649 try renderToken(ais, tree, rparen, .None); // rparen1649 try renderToken(ais, tree, rparen, .none); // rparen
1650 try renderToken(ais, tree, rparen + 1, .Space); // rparen1650 try renderToken(ais, tree, rparen + 1, .space); // rparen
1651 lbrace = rparen + 2;1651 lbrace = rparen + 2;
1652 } else {1652 } else {
1653 try renderToken(ais, tree, enum_token + 1, .Space); // rparen1653 try renderToken(ais, tree, enum_token + 1, .space); // rparen
1654 lbrace = enum_token + 2;1654 lbrace = enum_token + 2;
1655 }1655 }
1656 } else if (container_decl.ast.arg != 0) {1656 } else if (container_decl.ast.arg != 0) {
1657 try renderToken(ais, tree, container_decl.ast.main_token, .None); // union1657 try renderToken(ais, tree, container_decl.ast.main_token, .none); // union
1658 try renderToken(ais, tree, container_decl.ast.main_token + 1, .None); // lparen1658 try renderToken(ais, tree, container_decl.ast.main_token + 1, .none); // lparen
1659 try renderExpression(ais, tree, container_decl.ast.arg, .None);1659 try renderExpression(ais, tree, container_decl.ast.arg, .none);
1660 const rparen = tree.lastToken(container_decl.ast.arg) + 1;1660 const rparen = tree.lastToken(container_decl.ast.arg) + 1;
1661 try renderToken(ais, tree, rparen, .Space); // rparen1661 try renderToken(ais, tree, rparen, .space); // rparen
1662 lbrace = rparen + 1;1662 lbrace = rparen + 1;
1663 } else {1663 } else {
1664 try renderToken(ais, tree, container_decl.ast.main_token, .Space); // union1664 try renderToken(ais, tree, container_decl.ast.main_token, .space); // union
1665 lbrace = container_decl.ast.main_token + 1;1665 lbrace = container_decl.ast.main_token + 1;
1666 }1666 }
16671667
1668 if (container_decl.ast.members.len == 0) {1668 if (container_decl.ast.members.len == 0) {
1669 try renderToken(ais, tree, lbrace, Space.None); // lbrace1669 try renderToken(ais, tree, lbrace, Space.none); // lbrace
1670 return renderToken(ais, tree, lbrace + 1, space); // rbrace1670 return renderToken(ais, tree, lbrace + 1, space); // rbrace
1671 }1671 }
16721672
...@@ -1690,18 +1690,18 @@ fn renderContainerDecl(...@@ -1690,18 +1690,18 @@ fn renderContainerDecl(
1690 if (!node_tags[member].isContainerField()) break :one_line;1690 if (!node_tags[member].isContainerField()) break :one_line;
1691 }1691 }
1692 // All the declarations on the same line.1692 // All the declarations on the same line.
1693 try renderToken(ais, tree, lbrace, .Space); // lbrace1693 try renderToken(ais, tree, lbrace, .space); // lbrace
1694 for (container_decl.ast.members) |member| {1694 for (container_decl.ast.members) |member| {
1695 try renderMember(ais, tree, member, .Space);1695 try renderMember(ais, tree, member, .space);
1696 }1696 }
1697 return renderToken(ais, tree, rbrace, space); // rbrace1697 return renderToken(ais, tree, rbrace, space); // rbrace
1698 }1698 }
16991699
1700 // One member per line.1700 // One member per line.
1701 ais.pushIndent();1701 ais.pushIndent();
1702 try renderToken(ais, tree, lbrace, .Newline); // lbrace1702 try renderToken(ais, tree, lbrace, .newline); // lbrace
1703 for (container_decl.ast.members) |member| {1703 for (container_decl.ast.members) |member| {
1704 try renderMember(ais, tree, member, .Newline);1704 try renderMember(ais, tree, member, .newline);
1705 }1705 }
1706 ais.popIndent();1706 ais.popIndent();
17071707
...@@ -1716,26 +1716,26 @@ fn renderAsm(...@@ -1716,26 +1716,26 @@ fn renderAsm(
1716) Error!void {1716) Error!void {
1717 const token_tags = tree.tokens.items(.tag);1717 const token_tags = tree.tokens.items(.tag);
17181718
1719 try renderToken(ais, tree, asm_node.ast.asm_token, .Space); // asm1719 try renderToken(ais, tree, asm_node.ast.asm_token, .space); // asm
17201720
1721 if (asm_node.volatile_token) |volatile_token| {1721 if (asm_node.volatile_token) |volatile_token| {
1722 try renderToken(ais, tree, volatile_token, .Space); // volatile1722 try renderToken(ais, tree, volatile_token, .space); // volatile
1723 try renderToken(ais, tree, volatile_token + 1, .None); // lparen1723 try renderToken(ais, tree, volatile_token + 1, .none); // lparen
1724 } else {1724 } else {
1725 try renderToken(ais, tree, asm_node.ast.asm_token + 1, .None); // lparen1725 try renderToken(ais, tree, asm_node.ast.asm_token + 1, .none); // lparen
1726 }1726 }
17271727
1728 if (asm_node.ast.items.len == 0) {1728 if (asm_node.ast.items.len == 0) {
1729 try renderExpression(ais, tree, asm_node.ast.template, .None);1729 try renderExpression(ais, tree, asm_node.ast.template, .none);
1730 if (asm_node.first_clobber) |first_clobber| {1730 if (asm_node.first_clobber) |first_clobber| {
1731 // asm ("foo" ::: "a", "b")1731 // asm ("foo" ::: "a", "b")
1732 var tok_i = first_clobber;1732 var tok_i = first_clobber;
1733 while (true) : (tok_i += 1) {1733 while (true) : (tok_i += 1) {
1734 try renderToken(ais, tree, tok_i, .None);1734 try renderToken(ais, tree, tok_i, .none);
1735 tok_i += 1;1735 tok_i += 1;
1736 switch (token_tags[tok_i]) {1736 switch (token_tags[tok_i]) {
1737 .r_paren => return renderToken(ais, tree, tok_i, space),1737 .r_paren => return renderToken(ais, tree, tok_i, space),
1738 .comma => try renderToken(ais, tree, tok_i, .Space),1738 .comma => try renderToken(ais, tree, tok_i, .space),
1739 else => unreachable,1739 else => unreachable,
1740 }1740 }
1741 }1741 }
...@@ -1746,32 +1746,32 @@ fn renderAsm(...@@ -1746,32 +1746,32 @@ fn renderAsm(
1746 }1746 }
17471747
1748 ais.pushIndent();1748 ais.pushIndent();
1749 try renderExpression(ais, tree, asm_node.ast.template, .Newline);1749 try renderExpression(ais, tree, asm_node.ast.template, .newline);
1750 ais.setIndentDelta(asm_indent_delta);1750 ais.setIndentDelta(asm_indent_delta);
1751 const colon1 = tree.lastToken(asm_node.ast.template) + 1;1751 const colon1 = tree.lastToken(asm_node.ast.template) + 1;
17521752
1753 const colon2 = if (asm_node.outputs.len == 0) colon2: {1753 const colon2 = if (asm_node.outputs.len == 0) colon2: {
1754 try renderToken(ais, tree, colon1, .Newline); // :1754 try renderToken(ais, tree, colon1, .newline); // :
1755 break :colon2 colon1 + 1;1755 break :colon2 colon1 + 1;
1756 } else colon2: {1756 } else colon2: {
1757 try renderToken(ais, tree, colon1, .Space); // :1757 try renderToken(ais, tree, colon1, .space); // :
17581758
1759 ais.pushIndent();1759 ais.pushIndent();
1760 for (asm_node.outputs) |asm_output, i| {1760 for (asm_node.outputs) |asm_output, i| {
1761 if (i + 1 < asm_node.outputs.len) {1761 if (i + 1 < asm_node.outputs.len) {
1762 const next_asm_output = asm_node.outputs[i + 1];1762 const next_asm_output = asm_node.outputs[i + 1];
1763 try renderAsmOutput(ais, tree, asm_output, .None);1763 try renderAsmOutput(ais, tree, asm_output, .none);
17641764
1765 const comma = tree.firstToken(next_asm_output) - 1;1765 const comma = tree.firstToken(next_asm_output) - 1;
1766 try renderToken(ais, tree, comma, .Newline); // ,1766 try renderToken(ais, tree, comma, .newline); // ,
1767 } else if (asm_node.inputs.len == 0 and asm_node.first_clobber == null) {1767 } else if (asm_node.inputs.len == 0 and asm_node.first_clobber == null) {
1768 try renderAsmOutput(ais, tree, asm_output, .Newline);1768 try renderAsmOutput(ais, tree, asm_output, .newline);
1769 ais.popIndent();1769 ais.popIndent();
1770 ais.setIndentDelta(indent_delta);1770 ais.setIndentDelta(indent_delta);
1771 ais.popIndent();1771 ais.popIndent();
1772 return renderToken(ais, tree, asm_node.ast.rparen, space); // rparen1772 return renderToken(ais, tree, asm_node.ast.rparen, space); // rparen
1773 } else {1773 } else {
1774 try renderAsmOutput(ais, tree, asm_output, .Newline);1774 try renderAsmOutput(ais, tree, asm_output, .newline);
1775 const comma_or_colon = tree.lastToken(asm_output) + 1;1775 const comma_or_colon = tree.lastToken(asm_output) + 1;
1776 ais.popIndent();1776 ais.popIndent();
1777 break :colon2 switch (token_tags[comma_or_colon]) {1777 break :colon2 switch (token_tags[comma_or_colon]) {
...@@ -1783,26 +1783,26 @@ fn renderAsm(...@@ -1783,26 +1783,26 @@ fn renderAsm(
1783 };1783 };
17841784
1785 const colon3 = if (asm_node.inputs.len == 0) colon3: {1785 const colon3 = if (asm_node.inputs.len == 0) colon3: {
1786 try renderToken(ais, tree, colon2, .Newline); // :1786 try renderToken(ais, tree, colon2, .newline); // :
1787 break :colon3 colon2 + 1;1787 break :colon3 colon2 + 1;
1788 } else colon3: {1788 } else colon3: {
1789 try renderToken(ais, tree, colon2, .Space); // :1789 try renderToken(ais, tree, colon2, .space); // :
1790 ais.pushIndent();1790 ais.pushIndent();
1791 for (asm_node.inputs) |asm_input, i| {1791 for (asm_node.inputs) |asm_input, i| {
1792 if (i + 1 < asm_node.inputs.len) {1792 if (i + 1 < asm_node.inputs.len) {
1793 const next_asm_input = asm_node.inputs[i + 1];1793 const next_asm_input = asm_node.inputs[i + 1];
1794 try renderAsmInput(ais, tree, asm_input, .None);1794 try renderAsmInput(ais, tree, asm_input, .none);
17951795
1796 const first_token = tree.firstToken(next_asm_input);1796 const first_token = tree.firstToken(next_asm_input);
1797 try renderToken(ais, tree, first_token - 1, .Newline); // ,1797 try renderToken(ais, tree, first_token - 1, .newline); // ,
1798 } else if (asm_node.first_clobber == null) {1798 } else if (asm_node.first_clobber == null) {
1799 try renderAsmInput(ais, tree, asm_input, .Newline);1799 try renderAsmInput(ais, tree, asm_input, .newline);
1800 ais.popIndent();1800 ais.popIndent();
1801 ais.setIndentDelta(indent_delta);1801 ais.setIndentDelta(indent_delta);
1802 ais.popIndent();1802 ais.popIndent();
1803 return renderToken(ais, tree, asm_node.ast.rparen, space); // rparen1803 return renderToken(ais, tree, asm_node.ast.rparen, space); // rparen
1804 } else {1804 } else {
1805 try renderAsmInput(ais, tree, asm_input, .Newline);1805 try renderAsmInput(ais, tree, asm_input, .newline);
1806 const comma_or_colon = tree.lastToken(asm_input) + 1;1806 const comma_or_colon = tree.lastToken(asm_input) + 1;
1807 ais.popIndent();1807 ais.popIndent();
1808 break :colon3 switch (token_tags[comma_or_colon]) {1808 break :colon3 switch (token_tags[comma_or_colon]) {
...@@ -1814,7 +1814,7 @@ fn renderAsm(...@@ -1814,7 +1814,7 @@ fn renderAsm(
1814 unreachable;1814 unreachable;
1815 };1815 };
18161816
1817 try renderToken(ais, tree, colon3, .Space); // :1817 try renderToken(ais, tree, colon3, .space); // :
1818 const first_clobber = asm_node.first_clobber.?;1818 const first_clobber = asm_node.first_clobber.?;
1819 var tok_i = first_clobber;1819 var tok_i = first_clobber;
1820 while (true) {1820 while (true) {
...@@ -1822,12 +1822,12 @@ fn renderAsm(...@@ -1822,12 +1822,12 @@ fn renderAsm(
1822 .r_paren => {1822 .r_paren => {
1823 ais.setIndentDelta(indent_delta);1823 ais.setIndentDelta(indent_delta);
1824 ais.popIndent();1824 ais.popIndent();
1825 try renderToken(ais, tree, tok_i, .Newline);1825 try renderToken(ais, tree, tok_i, .newline);
1826 return renderToken(ais, tree, tok_i + 1, space);1826 return renderToken(ais, tree, tok_i + 1, space);
1827 },1827 },
1828 .comma => {1828 .comma => {
1829 try renderToken(ais, tree, tok_i, .None);1829 try renderToken(ais, tree, tok_i, .none);
1830 try renderToken(ais, tree, tok_i + 1, .Space);1830 try renderToken(ais, tree, tok_i + 1, .space);
1831 tok_i += 2;1831 tok_i += 2;
1832 },1832 },
1833 else => unreachable,1833 else => unreachable,
...@@ -1846,14 +1846,14 @@ fn renderCall(...@@ -1846,14 +1846,14 @@ fn renderCall(
1846 const main_tokens = tree.nodes.items(.main_token);1846 const main_tokens = tree.nodes.items(.main_token);
18471847
1848 if (call.async_token) |async_token| {1848 if (call.async_token) |async_token| {
1849 try renderToken(ais, tree, async_token, .Space);1849 try renderToken(ais, tree, async_token, .space);
1850 }1850 }
1851 try renderExpression(ais, tree, call.ast.fn_expr, .None);1851 try renderExpression(ais, tree, call.ast.fn_expr, .none);
18521852
1853 const lparen = call.ast.lparen;1853 const lparen = call.ast.lparen;
1854 const params = call.ast.params;1854 const params = call.ast.params;
1855 if (params.len == 0) {1855 if (params.len == 0) {
1856 try renderToken(ais, tree, lparen, .None);1856 try renderToken(ais, tree, lparen, .none);
1857 return renderToken(ais, tree, lparen + 1, space); // )1857 return renderToken(ais, tree, lparen + 1, space); // )
1858 }1858 }
18591859
...@@ -1861,10 +1861,10 @@ fn renderCall(...@@ -1861,10 +1861,10 @@ fn renderCall(
1861 const after_last_param_tok = tree.lastToken(last_param) + 1;1861 const after_last_param_tok = tree.lastToken(last_param) + 1;
1862 if (token_tags[after_last_param_tok] == .comma) {1862 if (token_tags[after_last_param_tok] == .comma) {
1863 ais.pushIndent();1863 ais.pushIndent();
1864 try renderToken(ais, tree, lparen, Space.Newline); // (1864 try renderToken(ais, tree, lparen, Space.newline); // (
1865 for (params) |param_node, i| {1865 for (params) |param_node, i| {
1866 if (i + 1 < params.len) {1866 if (i + 1 < params.len) {
1867 try renderExpression(ais, tree, param_node, Space.None);1867 try renderExpression(ais, tree, param_node, Space.none);
18681868
1869 // Unindent the comma for multiline string literals1869 // Unindent the comma for multiline string literals
1870 const is_multiline_string = node_tags[param_node] == .string_literal and1870 const is_multiline_string = node_tags[param_node] == .string_literal and
...@@ -1872,25 +1872,25 @@ fn renderCall(...@@ -1872,25 +1872,25 @@ fn renderCall(
1872 if (is_multiline_string) ais.popIndent();1872 if (is_multiline_string) ais.popIndent();
18731873
1874 const comma = tree.lastToken(param_node) + 1;1874 const comma = tree.lastToken(param_node) + 1;
1875 try renderToken(ais, tree, comma, Space.Newline); // ,1875 try renderToken(ais, tree, comma, Space.newline); // ,
18761876
1877 if (is_multiline_string) ais.pushIndent();1877 if (is_multiline_string) ais.pushIndent();
1878 } else {1878 } else {
1879 try renderExpression(ais, tree, param_node, Space.Comma);1879 try renderExpression(ais, tree, param_node, Space.comma);
1880 }1880 }
1881 }1881 }
1882 ais.popIndent();1882 ais.popIndent();
1883 return renderToken(ais, tree, after_last_param_tok + 1, space); // )1883 return renderToken(ais, tree, after_last_param_tok + 1, space); // )
1884 }1884 }
18851885
1886 try renderToken(ais, tree, lparen, Space.None); // (1886 try renderToken(ais, tree, lparen, Space.none); // (
18871887
1888 for (params) |param_node, i| {1888 for (params) |param_node, i| {
1889 try renderExpression(ais, tree, param_node, Space.None);1889 try renderExpression(ais, tree, param_node, Space.none);
18901890
1891 if (i + 1 < params.len) {1891 if (i + 1 < params.len) {
1892 const comma = tree.lastToken(param_node) + 1;1892 const comma = tree.lastToken(param_node) + 1;
1893 try renderToken(ais, tree, comma, Space.Space);1893 try renderToken(ais, tree, comma, Space.space);
1894 }1894 }
1895 }1895 }
1896 return renderToken(ais, tree, after_last_param_tok, space); // )1896 return renderToken(ais, tree, after_last_param_tok, space); // )
...@@ -1901,7 +1901,7 @@ fn renderExpressionComma(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space:...@@ -1901,7 +1901,7 @@ fn renderExpressionComma(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space:
1901 const token_tags = tree.tokens.items(.tag);1901 const token_tags = tree.tokens.items(.tag);
1902 const maybe_comma = tree.lastToken(node) + 1;1902 const maybe_comma = tree.lastToken(node) + 1;
1903 if (token_tags[maybe_comma] == .comma) {1903 if (token_tags[maybe_comma] == .comma) {
1904 try renderExpression(ais, tree, node, .None);1904 try renderExpression(ais, tree, node, .none);
1905 return renderToken(ais, tree, maybe_comma, space);1905 return renderToken(ais, tree, maybe_comma, space);
1906 } else {1906 } else {
1907 return renderExpression(ais, tree, node, space);1907 return renderExpression(ais, tree, node, space);
...@@ -1912,7 +1912,7 @@ fn renderTokenComma(ais: *Ais, tree: ast.Tree, token: ast.TokenIndex, space: Spa...@@ -1912,7 +1912,7 @@ fn renderTokenComma(ais: *Ais, tree: ast.Tree, token: ast.TokenIndex, space: Spa
1912 const token_tags = tree.tokens.items(.tag);1912 const token_tags = tree.tokens.items(.tag);
1913 const maybe_comma = token + 1;1913 const maybe_comma = token + 1;
1914 if (token_tags[maybe_comma] == .comma) {1914 if (token_tags[maybe_comma] == .comma) {
1915 try renderToken(ais, tree, token, .None);1915 try renderToken(ais, tree, token, .none);
1916 return renderToken(ais, tree, maybe_comma, space);1916 return renderToken(ais, tree, maybe_comma, space);
1917 } else {1917 } else {
1918 return renderToken(ais, tree, token, space);1918 return renderToken(ais, tree, token, space);
...@@ -1921,22 +1921,22 @@ fn renderTokenComma(ais: *Ais, tree: ast.Tree, token: ast.TokenIndex, space: Spa...@@ -1921,22 +1921,22 @@ fn renderTokenComma(ais: *Ais, tree: ast.Tree, token: ast.TokenIndex, space: Spa
19211921
1922const Space = enum {1922const Space = enum {
1923 /// Output the token lexeme only.1923 /// Output the token lexeme only.
1924 None,1924 none,
1925 /// Output the token lexeme followed by a single space.1925 /// Output the token lexeme followed by a single space.
1926 Space,1926 space,
1927 /// Output the token lexeme followed by a newline.1927 /// Output the token lexeme followed by a newline.
1928 Newline,1928 newline,
1929 /// Additionally consume the next token if it is a comma.1929 /// Additionally consume the next token if it is a comma.
1930 /// In either case, a newline will be inserted afterwards.1930 /// In either case, a newline will be inserted afterwards.
1931 Comma,1931 comma,
1932 /// Additionally consume the next token if it is a comma.1932 /// Additionally consume the next token if it is a comma.
1933 /// In either case, a space will be inserted afterwards.1933 /// In either case, a space will be inserted afterwards.
1934 CommaSpace,1934 comma_space,
1935 /// Additionally consume the next token if it is a semicolon.1935 /// Additionally consume the next token if it is a semicolon.
1936 /// In either case, a newline will be inserted afterwards.1936 /// In either case, a newline will be inserted afterwards.
1937 Semicolon,1937 semicolon,
1938 /// Skips writing the possible line comment after the token.1938 /// Skips writing the possible line comment after the token.
1939 NoComment,1939 no_comment,
1940};1940};
19411941
1942fn renderToken(ais: *Ais, tree: ast.Tree, token_index: ast.TokenIndex, space: Space) Error!void {1942fn renderToken(ais: *Ais, tree: ast.Tree, token_index: ast.TokenIndex, space: Space) Error!void {
...@@ -1958,39 +1958,39 @@ fn renderToken(ais: *Ais, tree: ast.Tree, token_index: ast.TokenIndex, space: Sp...@@ -1958,39 +1958,39 @@ fn renderToken(ais: *Ais, tree: ast.Tree, token_index: ast.TokenIndex, space: Sp
1958 try ais.writer().writeAll(lexeme);1958 try ais.writer().writeAll(lexeme);
19591959
1960 switch (space) {1960 switch (space) {
1961 .NoComment => {},1961 .no_comment => {},
1962 .None => _ = try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]),1962 .none => _ = try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]),
1963 .Comma => {1963 .comma => {
1964 const comment = try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]);1964 const comment = try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]);
1965 if (token_tags[token_index + 1] == .comma) {1965 if (token_tags[token_index + 1] == .comma) {
1966 return renderToken(ais, tree, token_index + 1, .Newline);1966 return renderToken(ais, tree, token_index + 1, .newline);
1967 } else if (!comment) {1967 } else if (!comment) {
1968 return ais.insertNewline();1968 return ais.insertNewline();
1969 }1969 }
1970 },1970 },
1971 .CommaSpace => {1971 .comma_space => {
1972 const comment = try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]);1972 const comment = try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]);
1973 if (token_tags[token_index + 1] == .comma) {1973 if (token_tags[token_index + 1] == .comma) {
1974 return renderToken(ais, tree, token_index + 1, .Space);1974 return renderToken(ais, tree, token_index + 1, .space);
1975 } else if (!comment) {1975 } else if (!comment) {
1976 return ais.writer().writeByte(' ');1976 return ais.writer().writeByte(' ');
1977 }1977 }
1978 },1978 },
1979 .Semicolon => {1979 .semicolon => {
1980 const comment = try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]);1980 const comment = try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]);
1981 if (token_tags[token_index + 1] == .semicolon) {1981 if (token_tags[token_index + 1] == .semicolon) {
1982 return renderToken(ais, tree, token_index + 1, .Newline);1982 return renderToken(ais, tree, token_index + 1, .newline);
1983 } else if (!comment) {1983 } else if (!comment) {
1984 return ais.insertNewline();1984 return ais.insertNewline();
1985 }1985 }
1986 },1986 },
1987 .Space => {1987 .space => {
1988 const comment = try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]);1988 const comment = try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]);
1989 if (!comment) {1989 if (!comment) {
1990 return ais.writer().writeByte(' ');1990 return ais.writer().writeByte(' ');
1991 }1991 }
1992 },1992 },
1993 .Newline => {1993 .newline => {
1994 if (!try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1])) {1994 if (!try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1])) {
1995 try ais.insertNewline();1995 try ais.insertNewline();
1996 }1996 }
...@@ -2018,9 +2018,9 @@ fn renderDocComments(ais: *Ais, tree: ast.Tree, end_token: ast.TokenIndex) Error...@@ -2018,9 +2018,9 @@ fn renderDocComments(ais: *Ais, tree: ast.Tree, end_token: ast.TokenIndex) Error
2018 switch (token_tags[tok]) {2018 switch (token_tags[tok]) {
2019 .doc_comment => {2019 .doc_comment => {
2020 if (first_tok < end_token) {2020 if (first_tok < end_token) {
2021 try renderToken(ais, tree, tok, .Newline);2021 try renderToken(ais, tree, tok, .newline);
2022 } else {2022 } else {
2023 try renderToken(ais, tree, tok, .NoComment);2023 try renderToken(ais, tree, tok, .no_comment);
2024 try ais.insertNewline();2024 try ais.insertNewline();
2025 }2025 }
2026 },2026 },