| ... | ... | @@ -86,7 +86,7 @@ fn renderRoot(ais: *Ais, tree: ast.Tree) Error!void { |
| 86 | 86 | const root_decls = tree.extra_data[nodes_data[0].lhs..nodes_data[0].rhs]; |
| 87 | 87 | |
| 88 | 88 | for (root_decls) |decl| { |
| 89 | | try renderMember(ais, tree, decl, .Newline); |
| 89 | try renderMember(ais, tree, decl, .newline); |
| 90 | 90 | } |
| 91 | 91 | } |
| 92 | 92 | |
| ... | ... | @@ -122,13 +122,13 @@ fn renderMember(ais: *Ais, tree: ast.Tree, decl: ast.Node.Index, space: Space) E |
| 122 | 122 | } |
| 123 | 123 | } |
| 124 | 124 | while (i < fn_token) : (i += 1) { |
| 125 | | try renderToken(ais, tree, i, .Space); |
| 125 | try renderToken(ais, tree, i, .space); |
| 126 | 126 | } |
| 127 | 127 | if (datas[decl].rhs != 0) { |
| 128 | | try renderExpression(ais, tree, fn_proto, .Space); |
| 128 | try renderExpression(ais, tree, fn_proto, .space); |
| 129 | 129 | return renderExpression(ais, tree, datas[decl].rhs, space); |
| 130 | 130 | } else { |
| 131 | | try renderExpression(ais, tree, fn_proto, .None); |
| 131 | try renderExpression(ais, tree, fn_proto, .none); |
| 132 | 132 | 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 | 137 | .fn_proto_one, |
| 138 | 138 | .fn_proto, |
| 139 | 139 | => { |
| 140 | | try renderExpression(ais, tree, decl, .None); |
| 140 | try renderExpression(ais, tree, decl, .none); |
| 141 | 141 | return renderToken(ais, tree, tree.lastToken(decl) + 1, space); // semicolon |
| 142 | 142 | }, |
| 143 | 143 | |
| ... | ... | @@ -145,10 +145,10 @@ fn renderMember(ais: *Ais, tree: ast.Tree, decl: ast.Node.Index, space: Space) E |
| 145 | 145 | const main_token = main_tokens[decl]; |
| 146 | 146 | const expr = datas[decl].lhs; |
| 147 | 147 | if (main_token > 0 and token_tags[main_token - 1] == .keyword_pub) { |
| 148 | | try renderToken(ais, tree, main_token - 1, .Space); // pub |
| 148 | try renderToken(ais, tree, main_token - 1, .space); // pub |
| 149 | 149 | } |
| 150 | | try renderToken(ais, tree, main_token, .Space); // usingnamespace |
| 151 | | try renderExpression(ais, tree, expr, .None); |
| 150 | try renderToken(ais, tree, main_token, .space); // usingnamespace |
| 151 | try renderExpression(ais, tree, expr, .none); |
| 152 | 152 | return renderToken(ais, tree, tree.lastToken(expr) + 1, space); // ; |
| 153 | 153 | }, |
| 154 | 154 | |
| ... | ... | @@ -159,9 +159,9 @@ fn renderMember(ais: *Ais, tree: ast.Tree, decl: ast.Node.Index, space: Space) E |
| 159 | 159 | |
| 160 | 160 | .test_decl => { |
| 161 | 161 | const test_token = main_tokens[decl]; |
| 162 | | try renderToken(ais, tree, test_token, .Space); |
| 162 | try renderToken(ais, tree, test_token, .space); |
| 163 | 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 | 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 | 196 | => return renderToken(ais, tree, main_tokens[node], space), |
| 197 | 197 | |
| 198 | 198 | .error_value => { |
| 199 | | try renderToken(ais, tree, main_tokens[node], .None); |
| 200 | | try renderToken(ais, tree, main_tokens[node] + 1, .None); |
| 199 | try renderToken(ais, tree, main_tokens[node], .none); |
| 200 | try renderToken(ais, tree, main_tokens[node] + 1, .none); |
| 201 | 201 | return renderToken(ais, tree, main_tokens[node] + 2, space); |
| 202 | 202 | }, |
| 203 | 203 | |
| ... | ... | @@ -227,11 +227,11 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac |
| 227 | 227 | const payload_token = datas[node].lhs; |
| 228 | 228 | const expr = datas[node].rhs; |
| 229 | 229 | |
| 230 | | try renderToken(ais, tree, defer_token, .Space); |
| 230 | try renderToken(ais, tree, defer_token, .space); |
| 231 | 231 | if (payload_token != 0) { |
| 232 | | try renderToken(ais, tree, payload_token - 1, .None); // | |
| 233 | | try renderToken(ais, tree, payload_token, .None); // identifier |
| 234 | | try renderToken(ais, tree, payload_token + 1, .Space); // | |
| 232 | try renderToken(ais, tree, payload_token - 1, .none); // | |
| 233 | try renderToken(ais, tree, payload_token, .none); // identifier |
| 234 | try renderToken(ais, tree, payload_token + 1, .space); // | |
| 235 | 235 | } |
| 236 | 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 | 239 | .@"defer" => { |
| 240 | 240 | const defer_token = main_tokens[node]; |
| 241 | 241 | const expr = datas[node].rhs; |
| 242 | | try renderToken(ais, tree, defer_token, .Space); |
| 242 | try renderToken(ais, tree, defer_token, .space); |
| 243 | 243 | return renderExpression(ais, tree, expr, space); |
| 244 | 244 | }, |
| 245 | 245 | .@"comptime", .@"nosuspend" => { |
| 246 | 246 | const comptime_token = main_tokens[node]; |
| 247 | 247 | const block = datas[node].lhs; |
| 248 | | try renderToken(ais, tree, comptime_token, .Space); |
| 248 | try renderToken(ais, tree, comptime_token, .space); |
| 249 | 249 | return renderExpression(ais, tree, block, space); |
| 250 | 250 | }, |
| 251 | 251 | |
| ... | ... | @@ -253,7 +253,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac |
| 253 | 253 | const suspend_token = main_tokens[node]; |
| 254 | 254 | const body = datas[node].lhs; |
| 255 | 255 | if (body != 0) { |
| 256 | | try renderToken(ais, tree, suspend_token, .Space); |
| 256 | try renderToken(ais, tree, suspend_token, .space); |
| 257 | 257 | return renderExpression(ais, tree, body, space); |
| 258 | 258 | } else { |
| 259 | 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 | 265 | const fallback_first = tree.firstToken(datas[node].rhs); |
| 266 | 266 | |
| 267 | 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; |
| 269 | 269 | |
| 270 | | try renderExpression(ais, tree, datas[node].lhs, .Space); // target |
| 270 | try renderExpression(ais, tree, datas[node].lhs, .space); // target |
| 271 | 271 | |
| 272 | 272 | if (token_tags[fallback_first - 1] == .pipe) { |
| 273 | | try renderToken(ais, tree, main_token, .Space); // catch keyword |
| 274 | | try renderToken(ais, tree, main_token + 1, .None); // pipe |
| 275 | | try renderToken(ais, tree, main_token + 2, .None); // payload identifier |
| 273 | try renderToken(ais, tree, main_token, .space); // catch keyword |
| 274 | try renderToken(ais, tree, main_token + 1, .none); // pipe |
| 275 | try renderToken(ais, tree, main_token + 2, .none); // payload identifier |
| 276 | 276 | try renderToken(ais, tree, main_token + 3, after_op_space); // pipe |
| 277 | 277 | } else { |
| 278 | 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 | 285 | |
| 286 | 286 | .field_access => { |
| 287 | 287 | const field_access = datas[node]; |
| 288 | | try renderExpression(ais, tree, field_access.lhs, .None); |
| 289 | | try renderToken(ais, tree, main_tokens[node], .None); |
| 288 | try renderExpression(ais, tree, field_access.lhs, .none); |
| 289 | try renderToken(ais, tree, main_tokens[node], .none); |
| 290 | 290 | return renderToken(ais, tree, field_access.rhs, space); |
| 291 | 291 | }, |
| 292 | 292 | |
| ... | ... | @@ -294,8 +294,8 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac |
| 294 | 294 | .switch_range, |
| 295 | 295 | => { |
| 296 | 296 | const infix = datas[node]; |
| 297 | | try renderExpression(ais, tree, infix.lhs, .None); |
| 298 | | try renderToken(ais, tree, main_tokens[node], .None); |
| 297 | try renderExpression(ais, tree, infix.lhs, .none); |
| 298 | try renderToken(ais, tree, main_tokens[node], .none); |
| 299 | 299 | return renderExpression(ais, tree, infix.rhs, space); |
| 300 | 300 | }, |
| 301 | 301 | |
| ... | ... | @@ -340,13 +340,13 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac |
| 340 | 340 | .@"orelse", |
| 341 | 341 | => { |
| 342 | 342 | const infix = datas[node]; |
| 343 | | try renderExpression(ais, tree, infix.lhs, .Space); |
| 343 | try renderExpression(ais, tree, infix.lhs, .space); |
| 344 | 344 | const op_token = main_tokens[node]; |
| 345 | 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 | 347 | } else { |
| 348 | 348 | ais.pushIndent(); |
| 349 | | try renderToken(ais, tree, op_token, .Newline); |
| 349 | try renderToken(ais, tree, op_token, .newline); |
| 350 | 350 | ais.popIndent(); |
| 351 | 351 | ais.pushIndentOneShot(); |
| 352 | 352 | } |
| ... | ... | @@ -360,7 +360,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac |
| 360 | 360 | .optional_type, |
| 361 | 361 | .address_of, |
| 362 | 362 | => { |
| 363 | | try renderToken(ais, tree, main_tokens[node], .None); |
| 363 | try renderToken(ais, tree, main_tokens[node], .none); |
| 364 | 364 | return renderExpression(ais, tree, datas[node].lhs, space); |
| 365 | 365 | }, |
| 366 | 366 | |
| ... | ... | @@ -368,7 +368,7 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac |
| 368 | 368 | .@"resume", |
| 369 | 369 | .@"await", |
| 370 | 370 | => { |
| 371 | | try renderToken(ais, tree, main_tokens[node], .Space); |
| 371 | try renderToken(ais, tree, main_tokens[node], .space); |
| 372 | 372 | return renderExpression(ais, tree, datas[node].lhs, space); |
| 373 | 373 | }, |
| 374 | 374 | |
| ... | ... | @@ -425,9 +425,9 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac |
| 425 | 425 | const suffix = datas[node]; |
| 426 | 426 | const lbracket = tree.firstToken(suffix.rhs) - 1; |
| 427 | 427 | const rbracket = tree.lastToken(suffix.rhs) + 1; |
| 428 | | try renderExpression(ais, tree, suffix.lhs, .None); |
| 429 | | try renderToken(ais, tree, lbracket, .None); // [ |
| 430 | | try renderExpression(ais, tree, suffix.rhs, .None); |
| 428 | try renderExpression(ais, tree, suffix.lhs, .none); |
| 429 | try renderToken(ais, tree, lbracket, .none); // [ |
| 430 | try renderExpression(ais, tree, suffix.rhs, .none); |
| 431 | 431 | return renderToken(ais, tree, rbracket, space); // ] |
| 432 | 432 | }, |
| 433 | 433 | |
| ... | ... | @@ -436,13 +436,13 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac |
| 436 | 436 | .slice_sentinel => try renderSlice(ais, tree, tree.sliceSentinel(node), space), |
| 437 | 437 | |
| 438 | 438 | .deref => { |
| 439 | | try renderExpression(ais, tree, datas[node].lhs, .None); |
| 439 | try renderExpression(ais, tree, datas[node].lhs, .none); |
| 440 | 440 | return renderToken(ais, tree, main_tokens[node], space); |
| 441 | 441 | }, |
| 442 | 442 | |
| 443 | 443 | .unwrap_optional => { |
| 444 | | try renderExpression(ais, tree, datas[node].lhs, .None); |
| 445 | | try renderToken(ais, tree, main_tokens[node], .None); |
| 444 | try renderExpression(ais, tree, datas[node].lhs, .none); |
| 445 | try renderToken(ais, tree, main_tokens[node], .none); |
| 446 | 446 | return renderToken(ais, tree, datas[node].rhs, space); |
| 447 | 447 | }, |
| 448 | 448 | |
| ... | ... | @@ -453,16 +453,16 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac |
| 453 | 453 | if (label_token == 0 and target == 0) { |
| 454 | 454 | try renderToken(ais, tree, main_token, space); // break keyword |
| 455 | 455 | } else if (label_token == 0 and target != 0) { |
| 456 | | try renderToken(ais, tree, main_token, .Space); // break keyword |
| 456 | try renderToken(ais, tree, main_token, .space); // break keyword |
| 457 | 457 | try renderExpression(ais, tree, target, space); |
| 458 | 458 | } else if (label_token != 0 and target == 0) { |
| 459 | | try renderToken(ais, tree, main_token, .Space); // break keyword |
| 460 | | try renderToken(ais, tree, label_token - 1, .None); // colon |
| 459 | try renderToken(ais, tree, main_token, .space); // break keyword |
| 460 | try renderToken(ais, tree, label_token - 1, .none); // colon |
| 461 | 461 | try renderToken(ais, tree, label_token, space); // identifier |
| 462 | 462 | } else if (label_token != 0 and target != 0) { |
| 463 | | try renderToken(ais, tree, main_token, .Space); // break keyword |
| 464 | | try renderToken(ais, tree, label_token - 1, .None); // colon |
| 465 | | try renderToken(ais, tree, label_token, .Space); // identifier |
| 463 | try renderToken(ais, tree, main_token, .space); // break keyword |
| 464 | try renderToken(ais, tree, label_token - 1, .none); // colon |
| 465 | try renderToken(ais, tree, label_token, .space); // identifier |
| 466 | 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 | 471 | const main_token = main_tokens[node]; |
| 472 | 472 | const label = datas[node].lhs; |
| 473 | 473 | if (label != 0) { |
| 474 | | try renderToken(ais, tree, main_token, .Space); // continue |
| 475 | | try renderToken(ais, tree, label - 1, .None); // : |
| 474 | try renderToken(ais, tree, main_token, .space); // continue |
| 475 | try renderToken(ais, tree, label - 1, .none); // : |
| 476 | 476 | return renderToken(ais, tree, label, space); // label |
| 477 | 477 | } else { |
| 478 | 478 | 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 | 481 | |
| 482 | 482 | .@"return" => { |
| 483 | 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 | 485 | try renderExpression(ais, tree, datas[node].lhs, space); |
| 486 | 486 | } else { |
| 487 | 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 | 490 | |
| 491 | 491 | .grouped_expression => { |
| 492 | 492 | ais.pushIndentNextLine(); |
| 493 | | try renderToken(ais, tree, main_tokens[node], .None); // lparen |
| 494 | | try renderExpression(ais, tree, datas[node].lhs, .None); |
| 493 | try renderToken(ais, tree, main_tokens[node], .none); // lparen |
| 494 | try renderExpression(ais, tree, datas[node].lhs, .none); |
| 495 | 495 | ais.popIndent(); |
| 496 | 496 | 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 | 526 | const lbrace = error_token + 1; |
| 527 | 527 | const rbrace = datas[node].rhs; |
| 528 | 528 | |
| 529 | | try renderToken(ais, tree, error_token, .None); |
| 529 | try renderToken(ais, tree, error_token, .none); |
| 530 | 530 | |
| 531 | 531 | if (lbrace + 1 == rbrace) { |
| 532 | 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 | 534 | return renderToken(ais, tree, rbrace, space); |
| 535 | 535 | } else if (lbrace + 2 == rbrace and token_tags[lbrace + 1] == .identifier) { |
| 536 | 536 | // There is exactly one member and no trailing comma or |
| 537 | 537 | // comments, so render without surrounding spaces: `error{Foo}` |
| 538 | | try renderToken(ais, tree, lbrace, .None); |
| 539 | | try renderToken(ais, tree, lbrace + 1, .None); // identifier |
| 538 | try renderToken(ais, tree, lbrace, .none); |
| 539 | try renderToken(ais, tree, lbrace + 1, .none); // identifier |
| 540 | 540 | return renderToken(ais, tree, rbrace, space); |
| 541 | 541 | } else if (token_tags[rbrace - 1] == .comma) { |
| 542 | 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 | 544 | ais.pushIndent(); |
| 545 | 545 | var i = lbrace + 1; |
| 546 | 546 | while (i < rbrace) : (i += 1) { |
| 547 | 547 | switch (token_tags[i]) { |
| 548 | | .doc_comment => try renderToken(ais, tree, i, .Newline), |
| 549 | | .identifier => try renderToken(ais, tree, i, .Comma), |
| 548 | .doc_comment => try renderToken(ais, tree, i, .newline), |
| 549 | .identifier => try renderToken(ais, tree, i, .comma), |
| 550 | 550 | .comma => {}, |
| 551 | 551 | else => unreachable, |
| 552 | 552 | } |
| ... | ... | @@ -555,12 +555,12 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac |
| 555 | 555 | return renderToken(ais, tree, rbrace, space); |
| 556 | 556 | } else { |
| 557 | 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 | 559 | var i = lbrace + 1; |
| 560 | 560 | while (i < rbrace) : (i += 1) { |
| 561 | 561 | switch (token_tags[i]) { |
| 562 | 562 | .doc_comment => unreachable, // TODO |
| 563 | | .identifier => try renderToken(ais, tree, i, .CommaSpace), |
| 563 | .identifier => try renderToken(ais, tree, i, .comma_space), |
| 564 | 564 | .comma => {}, |
| 565 | 565 | else => unreachable, |
| 566 | 566 | } |
| ... | ... | @@ -600,8 +600,8 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac |
| 600 | 600 | .anyframe_type => { |
| 601 | 601 | const main_token = main_tokens[node]; |
| 602 | 602 | if (datas[node].rhs != 0) { |
| 603 | | try renderToken(ais, tree, main_token, .None); // anyframe |
| 604 | | try renderToken(ais, tree, main_token + 1, .None); // -> |
| 603 | try renderToken(ais, tree, main_token, .none); // anyframe |
| 604 | try renderToken(ais, tree, main_token + 1, .none); // -> |
| 605 | 605 | return renderExpression(ais, tree, datas[node].rhs, space); |
| 606 | 606 | } else { |
| 607 | 607 | 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 | 617 | const cases = tree.extra_data[extra.start..extra.end]; |
| 618 | 618 | const rparen = tree.lastToken(condition) + 1; |
| 619 | 619 | |
| 620 | | try renderToken(ais, tree, switch_token, .Space); // switch keyword |
| 621 | | try renderToken(ais, tree, switch_token + 1, .None); // lparen |
| 622 | | try renderExpression(ais, tree, condition, .None); // condtion expression |
| 623 | | try renderToken(ais, tree, rparen, .Space); // rparen |
| 620 | try renderToken(ais, tree, switch_token, .space); // switch keyword |
| 621 | try renderToken(ais, tree, switch_token + 1, .none); // lparen |
| 622 | try renderExpression(ais, tree, condition, .none); // condtion expression |
| 623 | try renderToken(ais, tree, rparen, .space); // rparen |
| 624 | 624 | |
| 625 | 625 | if (cases.len == 0) { |
| 626 | | try renderToken(ais, tree, rparen + 1, .None); // lbrace |
| 626 | try renderToken(ais, tree, rparen + 1, .none); // lbrace |
| 627 | 627 | return renderToken(ais, tree, rparen + 2, space); // rbrace |
| 628 | 628 | } |
| 629 | 629 | ais.pushIndentNextLine(); |
| 630 | | try renderToken(ais, tree, rparen + 1, .Newline); // lbrace |
| 630 | try renderToken(ais, tree, rparen + 1, .newline); // lbrace |
| 631 | 631 | for (cases) |case| { |
| 632 | | try renderExpression(ais, tree, case, .Comma); |
| 632 | try renderExpression(ais, tree, case, .comma); |
| 633 | 633 | } |
| 634 | 634 | ais.popIndent(); |
| 635 | 635 | 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 | 651 | .@"asm" => return renderAsm(ais, tree, tree.asmFull(node), space), |
| 652 | 652 | |
| 653 | 653 | .enum_literal => { |
| 654 | | try renderToken(ais, tree, main_tokens[node] - 1, .None); // . |
| 654 | try renderToken(ais, tree, main_tokens[node] - 1, .none); // . |
| 655 | 655 | return renderToken(ais, tree, main_tokens[node], space); // name |
| 656 | 656 | }, |
| 657 | 657 | |
| ... | ... | @@ -678,13 +678,13 @@ fn renderArrayType( |
| 678 | 678 | array_type: ast.full.ArrayType, |
| 679 | 679 | space: Space, |
| 680 | 680 | ) Error!void { |
| 681 | | try renderToken(ais, tree, array_type.ast.lbracket, .None); // lbracket |
| 682 | | try renderExpression(ais, tree, array_type.ast.elem_count, .None); |
| 681 | try renderToken(ais, tree, array_type.ast.lbracket, .none); // lbracket |
| 682 | try renderExpression(ais, tree, array_type.ast.elem_count, .none); |
| 683 | 683 | if (array_type.ast.sentinel) |sentinel| { |
| 684 | | try renderToken(ais, tree, tree.firstToken(sentinel) - 1, .None); // colon |
| 685 | | try renderExpression(ais, tree, sentinel, .None); |
| 684 | try renderToken(ais, tree, tree.firstToken(sentinel) - 1, .none); // colon |
| 685 | try renderExpression(ais, tree, sentinel, .none); |
| 686 | 686 | } |
| 687 | | try renderToken(ais, tree, tree.firstToken(array_type.ast.elem_type) - 1, .None); // rbracket |
| 687 | try renderToken(ais, tree, tree.firstToken(array_type.ast.elem_type) - 1, .none); // rbracket |
| 688 | 688 | return renderExpression(ais, tree, array_type.ast.elem_type, space); |
| 689 | 689 | } |
| 690 | 690 | |
| ... | ... | @@ -706,65 +706,65 @@ fn renderPtrType( |
| 706 | 706 | { |
| 707 | 707 | return renderExpression(ais, tree, ptr_type.ast.child_type, space); |
| 708 | 708 | } |
| 709 | | try renderToken(ais, tree, ptr_type.ast.main_token, .None); // asterisk |
| 709 | try renderToken(ais, tree, ptr_type.ast.main_token, .none); // asterisk |
| 710 | 710 | }, |
| 711 | 711 | .many => { |
| 712 | | try renderToken(ais, tree, ptr_type.ast.main_token - 1, .None); // lbracket |
| 713 | | try renderToken(ais, tree, ptr_type.ast.main_token, .None); // asterisk |
| 714 | | try renderToken(ais, tree, ptr_type.ast.main_token + 1, .None); // rbracket |
| 712 | try renderToken(ais, tree, ptr_type.ast.main_token - 1, .none); // lbracket |
| 713 | try renderToken(ais, tree, ptr_type.ast.main_token, .none); // asterisk |
| 714 | try renderToken(ais, tree, ptr_type.ast.main_token + 1, .none); // rbracket |
| 715 | 715 | }, |
| 716 | 716 | .sentinel => { |
| 717 | | try renderToken(ais, tree, ptr_type.ast.main_token - 1, .None); // lbracket |
| 718 | | try renderToken(ais, tree, ptr_type.ast.main_token, .None); // asterisk |
| 719 | | try renderToken(ais, tree, ptr_type.ast.main_token + 1, .None); // colon |
| 720 | | try renderExpression(ais, tree, ptr_type.ast.sentinel, .None); |
| 721 | | try renderToken(ais, tree, tree.lastToken(ptr_type.ast.sentinel) + 1, .None); // rbracket |
| 717 | try renderToken(ais, tree, ptr_type.ast.main_token - 1, .none); // lbracket |
| 718 | try renderToken(ais, tree, ptr_type.ast.main_token, .none); // asterisk |
| 719 | try renderToken(ais, tree, ptr_type.ast.main_token + 1, .none); // colon |
| 720 | try renderExpression(ais, tree, ptr_type.ast.sentinel, .none); |
| 721 | try renderToken(ais, tree, tree.lastToken(ptr_type.ast.sentinel) + 1, .none); // rbracket |
| 722 | 722 | }, |
| 723 | 723 | .c => { |
| 724 | | try renderToken(ais, tree, ptr_type.ast.main_token - 1, .None); // lbracket |
| 725 | | try renderToken(ais, tree, ptr_type.ast.main_token, .None); // asterisk |
| 726 | | try renderToken(ais, tree, ptr_type.ast.main_token + 1, .None); // c |
| 727 | | try renderToken(ais, tree, ptr_type.ast.main_token + 2, .None); // rbracket |
| 724 | try renderToken(ais, tree, ptr_type.ast.main_token - 1, .none); // lbracket |
| 725 | try renderToken(ais, tree, ptr_type.ast.main_token, .none); // asterisk |
| 726 | try renderToken(ais, tree, ptr_type.ast.main_token + 1, .none); // c |
| 727 | try renderToken(ais, tree, ptr_type.ast.main_token + 2, .none); // rbracket |
| 728 | 728 | }, |
| 729 | 729 | .slice => { |
| 730 | | try renderToken(ais, tree, ptr_type.ast.main_token, .None); // lbracket |
| 731 | | try renderToken(ais, tree, ptr_type.ast.main_token + 1, .None); // rbracket |
| 730 | try renderToken(ais, tree, ptr_type.ast.main_token, .none); // lbracket |
| 731 | try renderToken(ais, tree, ptr_type.ast.main_token + 1, .none); // rbracket |
| 732 | 732 | }, |
| 733 | 733 | .slice_sentinel => { |
| 734 | | try renderToken(ais, tree, ptr_type.ast.main_token, .None); // lbracket |
| 735 | | try renderToken(ais, tree, ptr_type.ast.main_token + 1, .None); // colon |
| 736 | | try renderExpression(ais, tree, ptr_type.ast.sentinel, .None); |
| 737 | | try renderToken(ais, tree, tree.lastToken(ptr_type.ast.sentinel) + 1, .None); // rbracket |
| 734 | try renderToken(ais, tree, ptr_type.ast.main_token, .none); // lbracket |
| 735 | try renderToken(ais, tree, ptr_type.ast.main_token + 1, .none); // colon |
| 736 | try renderExpression(ais, tree, ptr_type.ast.sentinel, .none); |
| 737 | try renderToken(ais, tree, tree.lastToken(ptr_type.ast.sentinel) + 1, .none); // rbracket |
| 738 | 738 | }, |
| 739 | 739 | } |
| 740 | 740 | |
| 741 | 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 | } |
| 744 | 744 | |
| 745 | 745 | if (ptr_type.ast.align_node != 0) { |
| 746 | 746 | const align_first = tree.firstToken(ptr_type.ast.align_node); |
| 747 | | try renderToken(ais, tree, align_first - 2, .None); // align |
| 748 | | try renderToken(ais, tree, align_first - 1, .None); // lparen |
| 749 | | try renderExpression(ais, tree, ptr_type.ast.align_node, .None); |
| 747 | try renderToken(ais, tree, align_first - 2, .none); // align |
| 748 | try renderToken(ais, tree, align_first - 1, .none); // lparen |
| 749 | try renderExpression(ais, tree, ptr_type.ast.align_node, .none); |
| 750 | 750 | if (ptr_type.ast.bit_range_start != 0) { |
| 751 | 751 | assert(ptr_type.ast.bit_range_end != 0); |
| 752 | | 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); |
| 754 | | 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); |
| 756 | | try renderToken(ais, tree, tree.lastToken(ptr_type.ast.bit_range_end) + 1, .Space); // rparen |
| 752 | 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); |
| 754 | 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); |
| 756 | try renderToken(ais, tree, tree.lastToken(ptr_type.ast.bit_range_end) + 1, .space); // rparen |
| 757 | 757 | } else { |
| 758 | | try renderToken(ais, tree, tree.lastToken(ptr_type.ast.align_node) + 1, .Space); // rparen |
| 758 | try renderToken(ais, tree, tree.lastToken(ptr_type.ast.align_node) + 1, .space); // rparen |
| 759 | 759 | } |
| 760 | 760 | } |
| 761 | 761 | |
| 762 | 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 | } |
| 765 | 765 | |
| 766 | 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 | } |
| 769 | 769 | |
| 770 | 770 | try renderExpression(ais, tree, ptr_type.ast.child_type, space); |
| ... | ... | @@ -779,11 +779,11 @@ fn renderSlice( |
| 779 | 779 | const node_tags = tree.nodes.items(.tag); |
| 780 | 780 | const after_start_space_bool = nodeCausesSliceOpSpace(node_tags[slice.ast.start]) or |
| 781 | 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; |
| 783 | | const after_dots_space = if (slice.ast.end != 0) after_start_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; |
| 784 | 784 | |
| 785 | | try renderExpression(ais, tree, slice.ast.sliced, .None); |
| 786 | | try renderToken(ais, tree, slice.ast.lbracket, .None); // lbracket |
| 785 | try renderExpression(ais, tree, slice.ast.sliced, .none); |
| 786 | try renderToken(ais, tree, slice.ast.lbracket, .none); // lbracket |
| 787 | 787 | |
| 788 | 788 | const start_last = tree.lastToken(slice.ast.start); |
| 789 | 789 | try renderExpression(ais, tree, slice.ast.start, after_start_space); |
| ... | ... | @@ -793,14 +793,14 @@ fn renderSlice( |
| 793 | 793 | } |
| 794 | 794 | |
| 795 | 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 | 797 | try renderExpression(ais, tree, slice.ast.end, after_end_space); |
| 798 | 798 | if (slice.ast.sentinel == 0) { |
| 799 | 799 | return renderToken(ais, tree, end_last + 1, space); // rbracket |
| 800 | 800 | } |
| 801 | 801 | |
| 802 | | try renderToken(ais, tree, end_last + 1, .None); // colon |
| 803 | | try renderExpression(ais, tree, slice.ast.sentinel, .None); |
| 802 | try renderToken(ais, tree, end_last + 1, .none); // colon |
| 803 | try renderExpression(ais, tree, slice.ast.sentinel, .none); |
| 804 | 804 | try renderToken(ais, tree, tree.lastToken(slice.ast.sentinel) + 1, space); // rbracket |
| 805 | 805 | } |
| 806 | 806 | |
| ... | ... | @@ -817,18 +817,18 @@ fn renderAsmOutput( |
| 817 | 817 | assert(node_tags[asm_output] == .asm_output); |
| 818 | 818 | const symbolic_name = main_tokens[asm_output]; |
| 819 | 819 | |
| 820 | | try renderToken(ais, tree, symbolic_name - 1, .None); // lbracket |
| 821 | | try renderToken(ais, tree, symbolic_name, .None); // ident |
| 822 | | try renderToken(ais, tree, symbolic_name + 1, .Space); // rbracket |
| 823 | | try renderToken(ais, tree, symbolic_name + 2, .Space); // "constraint" |
| 824 | | try renderToken(ais, tree, symbolic_name + 3, .None); // lparen |
| 820 | try renderToken(ais, tree, symbolic_name - 1, .none); // lbracket |
| 821 | try renderToken(ais, tree, symbolic_name, .none); // ident |
| 822 | try renderToken(ais, tree, symbolic_name + 1, .space); // rbracket |
| 823 | try renderToken(ais, tree, symbolic_name + 2, .space); // "constraint" |
| 824 | try renderToken(ais, tree, symbolic_name + 3, .none); // lparen |
| 825 | 825 | |
| 826 | 826 | if (token_tags[symbolic_name + 4] == .arrow) { |
| 827 | | try renderToken(ais, tree, symbolic_name + 4, .Space); // -> |
| 828 | | try renderExpression(ais, tree, datas[asm_output].lhs, Space.None); |
| 827 | try renderToken(ais, tree, symbolic_name + 4, .space); // -> |
| 828 | try renderExpression(ais, tree, datas[asm_output].lhs, Space.none); |
| 829 | 829 | return renderToken(ais, tree, datas[asm_output].rhs, space); // rparen |
| 830 | 830 | } else { |
| 831 | | try renderToken(ais, tree, symbolic_name + 4, .None); // ident |
| 831 | try renderToken(ais, tree, symbolic_name + 4, .none); // ident |
| 832 | 832 | return renderToken(ais, tree, symbolic_name + 5, space); // rparen |
| 833 | 833 | } |
| 834 | 834 | } |
| ... | ... | @@ -845,57 +845,57 @@ fn renderAsmInput( |
| 845 | 845 | assert(node_tags[asm_input] == .asm_input); |
| 846 | 846 | const symbolic_name = main_tokens[asm_input]; |
| 847 | 847 | |
| 848 | | try renderToken(ais, tree, symbolic_name - 1, .None); // lbracket |
| 849 | | try renderToken(ais, tree, symbolic_name, .None); // ident |
| 850 | | try renderToken(ais, tree, symbolic_name + 1, .Space); // rbracket |
| 851 | | try renderToken(ais, tree, symbolic_name + 2, .Space); // "constraint" |
| 852 | | try renderToken(ais, tree, symbolic_name + 3, .None); // lparen |
| 853 | | try renderExpression(ais, tree, datas[asm_input].lhs, Space.None); |
| 848 | try renderToken(ais, tree, symbolic_name - 1, .none); // lbracket |
| 849 | try renderToken(ais, tree, symbolic_name, .none); // ident |
| 850 | try renderToken(ais, tree, symbolic_name + 1, .space); // rbracket |
| 851 | try renderToken(ais, tree, symbolic_name + 2, .space); // "constraint" |
| 852 | try renderToken(ais, tree, symbolic_name + 3, .none); // lparen |
| 853 | try renderExpression(ais, tree, datas[asm_input].lhs, Space.none); |
| 854 | 854 | return renderToken(ais, tree, datas[asm_input].rhs, space); // rparen |
| 855 | 855 | } |
| 856 | 856 | |
| 857 | 857 | fn renderVarDecl(ais: *Ais, tree: ast.Tree, var_decl: ast.full.VarDecl) Error!void { |
| 858 | 858 | if (var_decl.visib_token) |visib_token| { |
| 859 | | try renderToken(ais, tree, visib_token, Space.Space); // pub |
| 859 | try renderToken(ais, tree, visib_token, Space.space); // pub |
| 860 | 860 | } |
| 861 | 861 | |
| 862 | 862 | if (var_decl.extern_export_token) |extern_export_token| { |
| 863 | | try renderToken(ais, tree, extern_export_token, Space.Space); // extern |
| 863 | try renderToken(ais, tree, extern_export_token, Space.space); // extern |
| 864 | 864 | |
| 865 | 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 | } |
| 869 | 869 | |
| 870 | 870 | if (var_decl.threadlocal_token) |thread_local_token| { |
| 871 | | try renderToken(ais, tree, thread_local_token, Space.Space); // threadlocal |
| 871 | try renderToken(ais, tree, thread_local_token, Space.space); // threadlocal |
| 872 | 872 | } |
| 873 | 873 | |
| 874 | 874 | if (var_decl.comptime_token) |comptime_token| { |
| 875 | | try renderToken(ais, tree, comptime_token, Space.Space); // comptime |
| 875 | try renderToken(ais, tree, comptime_token, Space.space); // comptime |
| 876 | 876 | } |
| 877 | 877 | |
| 878 | | try renderToken(ais, tree, var_decl.ast.mut_token, .Space); // var |
| 878 | try renderToken(ais, tree, var_decl.ast.mut_token, .space); // var |
| 879 | 879 | |
| 880 | 880 | const name_space = if (var_decl.ast.type_node == 0 and |
| 881 | 881 | (var_decl.ast.align_node != 0 or |
| 882 | 882 | var_decl.ast.section_node != 0 or |
| 883 | 883 | var_decl.ast.init_node != 0)) |
| 884 | | Space.Space |
| 884 | Space.space |
| 885 | 885 | else |
| 886 | | Space.None; |
| 886 | Space.none; |
| 887 | 887 | try renderToken(ais, tree, var_decl.ast.mut_token + 1, name_space); // name |
| 888 | 888 | |
| 889 | 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 | 891 | if (var_decl.ast.align_node != 0 or var_decl.ast.section_node != 0 or |
| 892 | 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 | 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 | 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 | } |
| 901 | 901 | |
| ... | ... | @@ -903,14 +903,14 @@ fn renderVarDecl(ais: *Ais, tree: ast.Tree, var_decl: ast.full.VarDecl) Error!vo |
| 903 | 903 | const lparen = tree.firstToken(var_decl.ast.align_node) - 1; |
| 904 | 904 | const align_kw = lparen - 1; |
| 905 | 905 | const rparen = tree.lastToken(var_decl.ast.align_node) + 1; |
| 906 | | try renderToken(ais, tree, align_kw, Space.None); // align |
| 907 | | try renderToken(ais, tree, lparen, Space.None); // ( |
| 908 | | try renderExpression(ais, tree, var_decl.ast.align_node, Space.None); |
| 906 | try renderToken(ais, tree, align_kw, Space.none); // align |
| 907 | try renderToken(ais, tree, lparen, Space.none); // ( |
| 908 | try renderExpression(ais, tree, var_decl.ast.align_node, Space.none); |
| 909 | 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 | 911 | } else { |
| 912 | | try renderToken(ais, tree, rparen, .None); // ) |
| 913 | | return renderToken(ais, tree, rparen + 1, Space.Newline); // ; |
| 912 | try renderToken(ais, tree, rparen, .none); // ) |
| 913 | return renderToken(ais, tree, rparen + 1, Space.newline); // ; |
| 914 | 914 | } |
| 915 | 915 | } |
| 916 | 916 | |
| ... | ... | @@ -918,27 +918,27 @@ fn renderVarDecl(ais: *Ais, tree: ast.Tree, var_decl: ast.full.VarDecl) Error!vo |
| 918 | 918 | const lparen = tree.firstToken(var_decl.ast.section_node) - 1; |
| 919 | 919 | const section_kw = lparen - 1; |
| 920 | 920 | const rparen = tree.lastToken(var_decl.ast.section_node) + 1; |
| 921 | | try renderToken(ais, tree, section_kw, Space.None); // linksection |
| 922 | | try renderToken(ais, tree, lparen, Space.None); // ( |
| 923 | | try renderExpression(ais, tree, var_decl.ast.section_node, Space.None); |
| 921 | try renderToken(ais, tree, section_kw, Space.none); // linksection |
| 922 | try renderToken(ais, tree, lparen, Space.none); // ( |
| 923 | try renderExpression(ais, tree, var_decl.ast.section_node, Space.none); |
| 924 | 924 | if (var_decl.ast.init_node != 0) { |
| 925 | | try renderToken(ais, tree, rparen, .Space); // ) |
| 925 | try renderToken(ais, tree, rparen, .space); // ) |
| 926 | 926 | } else { |
| 927 | | try renderToken(ais, tree, rparen, .None); // ) |
| 928 | | return renderToken(ais, tree, rparen + 1, Space.Newline); // ; |
| 927 | try renderToken(ais, tree, rparen, .none); // ) |
| 928 | return renderToken(ais, tree, rparen + 1, Space.newline); // ; |
| 929 | 929 | } |
| 930 | 930 | } |
| 931 | 931 | |
| 932 | 932 | assert(var_decl.ast.init_node != 0); |
| 933 | 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 | 936 | ais.pushIndent(); |
| 937 | 937 | try renderToken(ais, tree, eq_token, eq_space); // = |
| 938 | 938 | ais.popIndent(); |
| 939 | 939 | } |
| 940 | 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 | } |
| 943 | 943 | |
| 944 | 944 | fn 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 | 965 | const token_tags = tree.tokens.items(.tag); |
| 966 | 966 | |
| 967 | 967 | if (while_node.label_token) |label| { |
| 968 | | try renderToken(ais, tree, label, .None); // label |
| 969 | | try renderToken(ais, tree, label + 1, .Space); // : |
| 968 | try renderToken(ais, tree, label, .none); // label |
| 969 | try renderToken(ais, tree, label + 1, .space); // : |
| 970 | 970 | } |
| 971 | 971 | |
| 972 | 972 | if (while_node.inline_token) |inline_token| { |
| 973 | | try renderToken(ais, tree, inline_token, .Space); // inline |
| 973 | try renderToken(ais, tree, inline_token, .space); // inline |
| 974 | 974 | } |
| 975 | 975 | |
| 976 | | try renderToken(ais, tree, while_node.ast.while_token, .Space); // if |
| 977 | | try renderToken(ais, tree, while_node.ast.while_token + 1, .None); // ( |
| 978 | | try renderExpression(ais, tree, while_node.ast.cond_expr, .None); // condition |
| 976 | try renderToken(ais, tree, while_node.ast.while_token, .space); // if |
| 977 | try renderToken(ais, tree, while_node.ast.while_token + 1, .none); // ( |
| 978 | try renderExpression(ais, tree, while_node.ast.cond_expr, .none); // condition |
| 979 | 979 | |
| 980 | 980 | if (nodeIsBlock(node_tags[while_node.ast.then_expr])) { |
| 981 | 981 | if (while_node.payload_token) |payload_token| { |
| 982 | | try renderToken(ais, tree, payload_token - 2, .Space); // ) |
| 983 | | try renderToken(ais, tree, payload_token - 1, .None); // | |
| 982 | try renderToken(ais, tree, payload_token - 2, .space); // ) |
| 983 | try renderToken(ais, tree, payload_token - 1, .none); // | |
| 984 | 984 | const ident = blk: { |
| 985 | 985 | if (token_tags[payload_token] == .asterisk) { |
| 986 | | try renderToken(ais, tree, payload_token, .None); // * |
| 986 | try renderToken(ais, tree, payload_token, .none); // * |
| 987 | 987 | break :blk payload_token + 1; |
| 988 | 988 | } else { |
| 989 | 989 | break :blk payload_token; |
| 990 | 990 | } |
| 991 | 991 | }; |
| 992 | | try renderToken(ais, tree, ident, .None); // identifier |
| 992 | try renderToken(ais, tree, ident, .none); // identifier |
| 993 | 993 | const pipe = blk: { |
| 994 | 994 | if (token_tags[ident + 1] == .comma) { |
| 995 | | try renderToken(ais, tree, ident + 1, .Space); // , |
| 996 | | try renderToken(ais, tree, ident + 2, .None); // index |
| 995 | try renderToken(ais, tree, ident + 1, .space); // , |
| 996 | try renderToken(ais, tree, ident + 2, .none); // index |
| 997 | 997 | break :blk payload_token + 3; |
| 998 | 998 | } else { |
| 999 | 999 | break :blk ident + 1; |
| 1000 | 1000 | } |
| 1001 | 1001 | }; |
| 1002 | | try renderToken(ais, tree, pipe, .Space); // | |
| 1002 | try renderToken(ais, tree, pipe, .space); // | |
| 1003 | 1003 | } else { |
| 1004 | 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 | 1007 | if (while_node.ast.cont_expr != 0) { |
| 1008 | 1008 | const rparen = tree.lastToken(while_node.ast.cont_expr) + 1; |
| 1009 | 1009 | const lparen = tree.firstToken(while_node.ast.cont_expr) - 1; |
| 1010 | | try renderToken(ais, tree, lparen - 1, .Space); // : |
| 1011 | | try renderToken(ais, tree, lparen, .None); // lparen |
| 1012 | | try renderExpression(ais, tree, while_node.ast.cont_expr, .None); |
| 1013 | | try renderToken(ais, tree, rparen, .Space); // rparen |
| 1010 | try renderToken(ais, tree, lparen - 1, .space); // : |
| 1011 | try renderToken(ais, tree, lparen, .none); // lparen |
| 1012 | try renderExpression(ais, tree, while_node.ast.cont_expr, .none); |
| 1013 | try renderToken(ais, tree, rparen, .space); // rparen |
| 1014 | 1014 | } |
| 1015 | 1015 | if (while_node.ast.else_expr != 0) { |
| 1016 | | try renderExpression(ais, tree, while_node.ast.then_expr, Space.Space); |
| 1017 | | try renderToken(ais, tree, while_node.else_token, .Space); // else |
| 1016 | try renderExpression(ais, tree, while_node.ast.then_expr, Space.space); |
| 1017 | try renderToken(ais, tree, while_node.else_token, .space); // else |
| 1018 | 1018 | if (while_node.error_token) |error_token| { |
| 1019 | | try renderToken(ais, tree, error_token - 1, .None); // | |
| 1020 | | try renderToken(ais, tree, error_token, .None); // identifier |
| 1021 | | try renderToken(ais, tree, error_token + 1, .Space); // | |
| 1019 | try renderToken(ais, tree, error_token - 1, .none); // | |
| 1020 | try renderToken(ais, tree, error_token, .none); // identifier |
| 1021 | try renderToken(ais, tree, error_token + 1, .space); // | |
| 1022 | 1022 | } |
| 1023 | 1023 | return renderExpression(ais, tree, while_node.ast.else_expr, space); |
| 1024 | 1024 | } else { |
| ... | ... | @@ -1032,61 +1032,61 @@ fn renderWhile(ais: *Ais, tree: ast.Tree, while_node: ast.full.While, space: Spa |
| 1032 | 1032 | |
| 1033 | 1033 | if (src_has_newline) { |
| 1034 | 1034 | if (while_node.payload_token) |payload_token| { |
| 1035 | | try renderToken(ais, tree, payload_token - 2, .Space); // ) |
| 1036 | | try renderToken(ais, tree, payload_token - 1, .None); // | |
| 1035 | try renderToken(ais, tree, payload_token - 2, .space); // ) |
| 1036 | try renderToken(ais, tree, payload_token - 1, .none); // | |
| 1037 | 1037 | const ident = blk: { |
| 1038 | 1038 | if (token_tags[payload_token] == .asterisk) { |
| 1039 | | try renderToken(ais, tree, payload_token, .None); // * |
| 1039 | try renderToken(ais, tree, payload_token, .none); // * |
| 1040 | 1040 | break :blk payload_token + 1; |
| 1041 | 1041 | } else { |
| 1042 | 1042 | break :blk payload_token; |
| 1043 | 1043 | } |
| 1044 | 1044 | }; |
| 1045 | | try renderToken(ais, tree, ident, .None); // identifier |
| 1045 | try renderToken(ais, tree, ident, .none); // identifier |
| 1046 | 1046 | const pipe = blk: { |
| 1047 | 1047 | if (token_tags[ident + 1] == .comma) { |
| 1048 | | try renderToken(ais, tree, ident + 1, .Space); // , |
| 1049 | | try renderToken(ais, tree, ident + 2, .None); // index |
| 1048 | try renderToken(ais, tree, ident + 1, .space); // , |
| 1049 | try renderToken(ais, tree, ident + 2, .none); // index |
| 1050 | 1050 | break :blk payload_token + 3; |
| 1051 | 1051 | } else { |
| 1052 | 1052 | break :blk ident + 1; |
| 1053 | 1053 | } |
| 1054 | 1054 | }; |
| 1055 | | try renderToken(ais, tree, pipe, .Newline); // | |
| 1055 | try renderToken(ais, tree, pipe, .newline); // | |
| 1056 | 1056 | } else { |
| 1057 | 1057 | ais.pushIndent(); |
| 1058 | | try renderToken(ais, tree, rparen, .Newline); // ) |
| 1058 | try renderToken(ais, tree, rparen, .newline); // ) |
| 1059 | 1059 | ais.popIndent(); |
| 1060 | 1060 | } |
| 1061 | 1061 | if (while_node.ast.cont_expr != 0) { |
| 1062 | 1062 | const cont_rparen = tree.lastToken(while_node.ast.cont_expr) + 1; |
| 1063 | 1063 | const cont_lparen = tree.firstToken(while_node.ast.cont_expr) - 1; |
| 1064 | | try renderToken(ais, tree, cont_lparen - 1, .Space); // : |
| 1065 | | try renderToken(ais, tree, cont_lparen, .None); // lparen |
| 1066 | | try renderExpression(ais, tree, while_node.ast.cont_expr, .None); |
| 1067 | | try renderToken(ais, tree, cont_rparen, .Newline); // rparen |
| 1064 | try renderToken(ais, tree, cont_lparen - 1, .space); // : |
| 1065 | try renderToken(ais, tree, cont_lparen, .none); // lparen |
| 1066 | try renderExpression(ais, tree, while_node.ast.cont_expr, .none); |
| 1067 | try renderToken(ais, tree, cont_rparen, .newline); // rparen |
| 1068 | 1068 | } |
| 1069 | 1069 | if (while_node.ast.else_expr != 0) { |
| 1070 | 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 | 1072 | ais.popIndent(); |
| 1073 | 1073 | const else_is_block = nodeIsBlock(node_tags[while_node.ast.else_expr]); |
| 1074 | 1074 | if (else_is_block) { |
| 1075 | | try renderToken(ais, tree, while_node.else_token, .Space); // else |
| 1075 | try renderToken(ais, tree, while_node.else_token, .space); // else |
| 1076 | 1076 | if (while_node.error_token) |error_token| { |
| 1077 | | try renderToken(ais, tree, error_token - 1, .None); // | |
| 1078 | | try renderToken(ais, tree, error_token, .None); // identifier |
| 1079 | | try renderToken(ais, tree, error_token + 1, .Space); // | |
| 1077 | try renderToken(ais, tree, error_token - 1, .none); // | |
| 1078 | try renderToken(ais, tree, error_token, .none); // identifier |
| 1079 | try renderToken(ais, tree, error_token + 1, .space); // | |
| 1080 | 1080 | } |
| 1081 | 1081 | return renderExpression(ais, tree, while_node.ast.else_expr, space); |
| 1082 | 1082 | } else { |
| 1083 | 1083 | if (while_node.error_token) |error_token| { |
| 1084 | | try renderToken(ais, tree, while_node.else_token, .Space); // else |
| 1085 | | try renderToken(ais, tree, error_token - 1, .None); // | |
| 1086 | | try renderToken(ais, tree, error_token, .None); // identifier |
| 1087 | | try renderToken(ais, tree, error_token + 1, .Space); // | |
| 1084 | try renderToken(ais, tree, while_node.else_token, .space); // else |
| 1085 | try renderToken(ais, tree, error_token - 1, .none); // | |
| 1086 | try renderToken(ais, tree, error_token, .none); // identifier |
| 1087 | try renderToken(ais, tree, error_token + 1, .space); // | |
| 1088 | 1088 | } else { |
| 1089 | | try renderToken(ais, tree, while_node.else_token, .Newline); // else |
| 1089 | try renderToken(ais, tree, while_node.else_token, .newline); // else |
| 1090 | 1090 | } |
| 1091 | 1091 | ais.pushIndent(); |
| 1092 | 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 | 1105 | |
| 1106 | 1106 | if (while_node.payload_token) |payload_token| { |
| 1107 | 1107 | assert(payload_token - 2 == rparen); |
| 1108 | | try renderToken(ais, tree, payload_token - 2, .Space); // ) |
| 1109 | | try renderToken(ais, tree, payload_token - 1, .None); // | |
| 1108 | try renderToken(ais, tree, payload_token - 2, .space); // ) |
| 1109 | try renderToken(ais, tree, payload_token - 1, .none); // | |
| 1110 | 1110 | const ident = blk: { |
| 1111 | 1111 | if (token_tags[payload_token] == .asterisk) { |
| 1112 | | try renderToken(ais, tree, payload_token, .None); // * |
| 1112 | try renderToken(ais, tree, payload_token, .none); // * |
| 1113 | 1113 | break :blk payload_token + 1; |
| 1114 | 1114 | } else { |
| 1115 | 1115 | break :blk payload_token; |
| 1116 | 1116 | } |
| 1117 | 1117 | }; |
| 1118 | | try renderToken(ais, tree, ident, .None); // identifier |
| 1118 | try renderToken(ais, tree, ident, .none); // identifier |
| 1119 | 1119 | const pipe = blk: { |
| 1120 | 1120 | if (token_tags[ident + 1] == .comma) { |
| 1121 | | try renderToken(ais, tree, ident + 1, .Space); // , |
| 1122 | | try renderToken(ais, tree, ident + 2, .None); // index |
| 1121 | try renderToken(ais, tree, ident + 1, .space); // , |
| 1122 | try renderToken(ais, tree, ident + 2, .none); // index |
| 1123 | 1123 | break :blk payload_token + 3; |
| 1124 | 1124 | } else { |
| 1125 | 1125 | break :blk ident + 1; |
| 1126 | 1126 | } |
| 1127 | 1127 | }; |
| 1128 | | try renderToken(ais, tree, pipe, .Space); // | |
| 1128 | try renderToken(ais, tree, pipe, .space); // | |
| 1129 | 1129 | } else { |
| 1130 | | try renderToken(ais, tree, rparen, .Space); // ) |
| 1130 | try renderToken(ais, tree, rparen, .space); // ) |
| 1131 | 1131 | } |
| 1132 | 1132 | |
| 1133 | 1133 | if (while_node.ast.cont_expr != 0) { |
| 1134 | 1134 | const cont_rparen = tree.lastToken(while_node.ast.cont_expr) + 1; |
| 1135 | 1135 | const cont_lparen = tree.firstToken(while_node.ast.cont_expr) - 1; |
| 1136 | | try renderToken(ais, tree, cont_lparen - 1, .Space); // : |
| 1137 | | try renderToken(ais, tree, cont_lparen, .None); // lparen |
| 1138 | | try renderExpression(ais, tree, while_node.ast.cont_expr, .None); |
| 1139 | | try renderToken(ais, tree, cont_rparen, .Space); // rparen |
| 1136 | try renderToken(ais, tree, cont_lparen - 1, .space); // : |
| 1137 | try renderToken(ais, tree, cont_lparen, .none); // lparen |
| 1138 | try renderExpression(ais, tree, while_node.ast.cont_expr, .none); |
| 1139 | try renderToken(ais, tree, cont_rparen, .space); // rparen |
| 1140 | 1140 | } |
| 1141 | 1141 | |
| 1142 | 1142 | if (while_node.ast.else_expr != 0) { |
| 1143 | | try renderExpression(ais, tree, while_node.ast.then_expr, .Space); |
| 1144 | | try renderToken(ais, tree, while_node.else_token, .Space); // else |
| 1143 | try renderExpression(ais, tree, while_node.ast.then_expr, .space); |
| 1144 | try renderToken(ais, tree, while_node.else_token, .space); // else |
| 1145 | 1145 | |
| 1146 | 1146 | if (while_node.error_token) |error_token| { |
| 1147 | | try renderToken(ais, tree, error_token - 1, .None); // | |
| 1148 | | try renderToken(ais, tree, error_token, .None); // identifier |
| 1149 | | try renderToken(ais, tree, error_token + 1, .Space); // | |
| 1147 | try renderToken(ais, tree, error_token - 1, .none); // | |
| 1148 | try renderToken(ais, tree, error_token, .none); // identifier |
| 1149 | try renderToken(ais, tree, error_token + 1, .space); // | |
| 1150 | 1150 | } |
| 1151 | 1151 | |
| 1152 | 1152 | return renderExpression(ais, tree, while_node.ast.else_expr, space); |
| ... | ... | @@ -1163,21 +1163,21 @@ fn renderContainerField( |
| 1163 | 1163 | ) Error!void { |
| 1164 | 1164 | const main_tokens = tree.nodes.items(.main_token); |
| 1165 | 1165 | if (field.comptime_token) |t| { |
| 1166 | | try renderToken(ais, tree, t, .Space); // comptime |
| 1166 | try renderToken(ais, tree, t, .space); // comptime |
| 1167 | 1167 | } |
| 1168 | 1168 | if (field.ast.type_expr == 0 and field.ast.value_expr == 0) { |
| 1169 | 1169 | return renderTokenComma(ais, tree, field.ast.name_token, space); // name |
| 1170 | 1170 | } |
| 1171 | 1171 | if (field.ast.type_expr != 0 and field.ast.value_expr == 0) { |
| 1172 | | try renderToken(ais, tree, field.ast.name_token, .None); // name |
| 1173 | | try renderToken(ais, tree, field.ast.name_token + 1, .Space); // : |
| 1172 | try renderToken(ais, tree, field.ast.name_token, .none); // name |
| 1173 | try renderToken(ais, tree, field.ast.name_token + 1, .space); // : |
| 1174 | 1174 | |
| 1175 | 1175 | if (field.ast.align_expr != 0) { |
| 1176 | | try renderExpression(ais, tree, field.ast.type_expr, .Space); // type |
| 1176 | try renderExpression(ais, tree, field.ast.type_expr, .space); // type |
| 1177 | 1177 | const align_token = tree.firstToken(field.ast.align_expr) - 2; |
| 1178 | | try renderToken(ais, tree, align_token, .None); // align |
| 1179 | | try renderToken(ais, tree, align_token + 1, .None); // ( |
| 1180 | | try renderExpression(ais, tree, field.ast.align_expr, .None); // alignment |
| 1178 | try renderToken(ais, tree, align_token, .none); // align |
| 1179 | try renderToken(ais, tree, align_token + 1, .none); // ( |
| 1180 | try renderExpression(ais, tree, field.ast.align_expr, .none); // alignment |
| 1181 | 1181 | const rparen = tree.lastToken(field.ast.align_expr) + 1; |
| 1182 | 1182 | return renderTokenComma(ais, tree, rparen, space); // ) |
| 1183 | 1183 | } else { |
| ... | ... | @@ -1185,26 +1185,26 @@ fn renderContainerField( |
| 1185 | 1185 | } |
| 1186 | 1186 | } |
| 1187 | 1187 | if (field.ast.type_expr == 0 and field.ast.value_expr != 0) { |
| 1188 | | try renderToken(ais, tree, field.ast.name_token, .Space); // name |
| 1189 | | try renderToken(ais, tree, field.ast.name_token + 1, .Space); // = |
| 1188 | try renderToken(ais, tree, field.ast.name_token, .space); // name |
| 1189 | try renderToken(ais, tree, field.ast.name_token + 1, .space); // = |
| 1190 | 1190 | return renderExpressionComma(ais, tree, field.ast.value_expr, space); // value |
| 1191 | 1191 | } |
| 1192 | 1192 | |
| 1193 | | try renderToken(ais, tree, field.ast.name_token, .None); // name |
| 1194 | | try renderToken(ais, tree, field.ast.name_token + 1, .Space); // : |
| 1195 | | try renderExpression(ais, tree, field.ast.type_expr, .Space); // type |
| 1193 | try renderToken(ais, tree, field.ast.name_token, .none); // name |
| 1194 | try renderToken(ais, tree, field.ast.name_token + 1, .space); // : |
| 1195 | try renderExpression(ais, tree, field.ast.type_expr, .space); // type |
| 1196 | 1196 | |
| 1197 | 1197 | if (field.ast.align_expr != 0) { |
| 1198 | 1198 | const lparen_token = tree.firstToken(field.ast.align_expr) - 1; |
| 1199 | 1199 | const align_kw = lparen_token - 1; |
| 1200 | 1200 | const rparen_token = tree.lastToken(field.ast.align_expr) + 1; |
| 1201 | | try renderToken(ais, tree, align_kw, .None); // align |
| 1202 | | try renderToken(ais, tree, lparen_token, .None); // ( |
| 1203 | | try renderExpression(ais, tree, field.ast.align_expr, .None); // alignment |
| 1204 | | try renderToken(ais, tree, rparen_token, .Space); // ) |
| 1201 | try renderToken(ais, tree, align_kw, .none); // align |
| 1202 | try renderToken(ais, tree, lparen_token, .none); // ( |
| 1203 | try renderExpression(ais, tree, field.ast.align_expr, .none); // alignment |
| 1204 | try renderToken(ais, tree, rparen_token, .space); // ) |
| 1205 | 1205 | } |
| 1206 | 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 | 1208 | return renderExpressionComma(ais, tree, field.ast.value_expr, space); // value |
| 1209 | 1209 | } |
| 1210 | 1210 | |
| ... | ... | @@ -1217,10 +1217,10 @@ fn renderBuiltinCall( |
| 1217 | 1217 | ) Error!void { |
| 1218 | 1218 | const token_tags = tree.tokens.items(.tag); |
| 1219 | 1219 | |
| 1220 | | try renderToken(ais, tree, builtin_token, .None); // @name |
| 1220 | try renderToken(ais, tree, builtin_token, .none); // @name |
| 1221 | 1221 | |
| 1222 | 1222 | if (params.len == 0) { |
| 1223 | | try renderToken(ais, tree, builtin_token + 1, .None); // ( |
| 1223 | try renderToken(ais, tree, builtin_token + 1, .none); // ( |
| 1224 | 1224 | return renderToken(ais, tree, builtin_token + 2, space); // ) |
| 1225 | 1225 | } |
| 1226 | 1226 | |
| ... | ... | @@ -1229,24 +1229,24 @@ fn renderBuiltinCall( |
| 1229 | 1229 | |
| 1230 | 1230 | if (token_tags[after_last_param_token] != .comma) { |
| 1231 | 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); // ( |
| 1233 | 1233 | |
| 1234 | 1234 | for (params) |param_node, i| { |
| 1235 | | try renderExpression(ais, tree, param_node, .None); |
| 1235 | try renderExpression(ais, tree, param_node, .none); |
| 1236 | 1236 | |
| 1237 | 1237 | if (i + 1 < params.len) { |
| 1238 | 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 | 1242 | return renderToken(ais, tree, after_last_param_token, space); // ) |
| 1243 | 1243 | } else { |
| 1244 | 1244 | // Render one param per line. |
| 1245 | 1245 | ais.pushIndent(); |
| 1246 | | try renderToken(ais, tree, builtin_token + 1, Space.Newline); // ( |
| 1246 | try renderToken(ais, tree, builtin_token + 1, Space.newline); // ( |
| 1247 | 1247 | |
| 1248 | 1248 | for (params) |param_node| { |
| 1249 | | try renderExpression(ais, tree, param_node, .Comma); |
| 1249 | try renderExpression(ais, tree, param_node, .comma); |
| 1250 | 1250 | } |
| 1251 | 1251 | ais.popIndent(); |
| 1252 | 1252 | |
| ... | ... | @@ -1260,11 +1260,11 @@ fn renderFnProto(ais: *Ais, tree: ast.Tree, fn_proto: ast.full.FnProto, space: S |
| 1260 | 1260 | |
| 1261 | 1261 | const after_fn_token = fn_proto.ast.fn_token + 1; |
| 1262 | 1262 | const lparen = if (token_tags[after_fn_token] == .identifier) blk: { |
| 1263 | | try renderToken(ais, tree, fn_proto.ast.fn_token, .Space); // fn |
| 1264 | | try renderToken(ais, tree, after_fn_token, .None); // name |
| 1263 | try renderToken(ais, tree, fn_proto.ast.fn_token, .space); // fn |
| 1264 | try renderToken(ais, tree, after_fn_token, .none); // name |
| 1265 | 1265 | break :blk after_fn_token + 1; |
| 1266 | 1266 | } else blk: { |
| 1267 | | try renderToken(ais, tree, fn_proto.ast.fn_token, .Space); // fn |
| 1267 | try renderToken(ais, tree, fn_proto.ast.fn_token, .space); // fn |
| 1268 | 1268 | break :blk fn_proto.ast.fn_token + 1; |
| 1269 | 1269 | }; |
| 1270 | 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 | 1307 | |
| 1308 | 1308 | if (token_tags[rparen - 1] != .comma) { |
| 1309 | 1309 | // Render all on one line, no trailing comma. |
| 1310 | | try renderToken(ais, tree, lparen, .None); // ( |
| 1310 | try renderToken(ais, tree, lparen, .none); // ( |
| 1311 | 1311 | |
| 1312 | 1312 | var param_i: usize = 0; |
| 1313 | 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 | 1315 | last_param_token += 1; |
| 1316 | 1316 | switch (token_tags[last_param_token]) { |
| 1317 | 1317 | .doc_comment => { |
| 1318 | | try renderToken(ais, tree, last_param_token, .Newline); |
| 1318 | try renderToken(ais, tree, last_param_token, .newline); |
| 1319 | 1319 | continue; |
| 1320 | 1320 | }, |
| 1321 | 1321 | .ellipsis3 => { |
| 1322 | | try renderToken(ais, tree, last_param_token, .None); // ... |
| 1322 | try renderToken(ais, tree, last_param_token, .none); // ... |
| 1323 | 1323 | break; |
| 1324 | 1324 | }, |
| 1325 | 1325 | .keyword_noalias, .keyword_comptime => { |
| 1326 | | try renderToken(ais, tree, last_param_token, .Space); |
| 1326 | try renderToken(ais, tree, last_param_token, .space); |
| 1327 | 1327 | last_param_token += 1; |
| 1328 | 1328 | }, |
| 1329 | 1329 | .identifier => {}, |
| 1330 | 1330 | .keyword_anytype => { |
| 1331 | | try renderToken(ais, tree, last_param_token, .None); // anytype |
| 1331 | try renderToken(ais, tree, last_param_token, .none); // anytype |
| 1332 | 1332 | continue; |
| 1333 | 1333 | }, |
| 1334 | 1334 | .r_paren => break, |
| 1335 | 1335 | .comma => { |
| 1336 | | try renderToken(ais, tree, last_param_token, .Space); // , |
| 1336 | try renderToken(ais, tree, last_param_token, .space); // , |
| 1337 | 1337 | last_param_token += 1; |
| 1338 | 1338 | }, |
| 1339 | 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 | 1341 | if (token_tags[last_param_token] == .identifier and |
| 1342 | 1342 | token_tags[last_param_token + 1] == .colon) |
| 1343 | 1343 | { |
| 1344 | | try renderToken(ais, tree, last_param_token, .None); // name |
| 1344 | try renderToken(ais, tree, last_param_token, .none); // name |
| 1345 | 1345 | last_param_token += 1; |
| 1346 | | try renderToken(ais, tree, last_param_token, .Space); // : |
| 1346 | try renderToken(ais, tree, last_param_token, .space); // : |
| 1347 | 1347 | last_param_token += 1; |
| 1348 | 1348 | } |
| 1349 | 1349 | if (token_tags[last_param_token] == .keyword_anytype) { |
| 1350 | | try renderToken(ais, tree, last_param_token, .None); // anytype |
| 1350 | try renderToken(ais, tree, last_param_token, .none); // anytype |
| 1351 | 1351 | continue; |
| 1352 | 1352 | } |
| 1353 | 1353 | const param = fn_proto.ast.params[param_i]; |
| 1354 | 1354 | param_i += 1; |
| 1355 | | try renderExpression(ais, tree, param, .None); |
| 1355 | try renderExpression(ais, tree, param, .none); |
| 1356 | 1356 | last_param_token = tree.lastToken(param); |
| 1357 | 1357 | } |
| 1358 | 1358 | } else { |
| 1359 | 1359 | // One param per line. |
| 1360 | 1360 | ais.pushIndent(); |
| 1361 | | try renderToken(ais, tree, lparen, .Newline); // ( |
| 1361 | try renderToken(ais, tree, lparen, .newline); // ( |
| 1362 | 1362 | |
| 1363 | 1363 | var param_i: usize = 0; |
| 1364 | 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 | 1366 | last_param_token += 1; |
| 1367 | 1367 | switch (token_tags[last_param_token]) { |
| 1368 | 1368 | .doc_comment => { |
| 1369 | | try renderToken(ais, tree, last_param_token, .Newline); |
| 1369 | try renderToken(ais, tree, last_param_token, .newline); |
| 1370 | 1370 | continue; |
| 1371 | 1371 | }, |
| 1372 | 1372 | .ellipsis3 => { |
| 1373 | | try renderToken(ais, tree, last_param_token, .Comma); // ... |
| 1373 | try renderToken(ais, tree, last_param_token, .comma); // ... |
| 1374 | 1374 | break; |
| 1375 | 1375 | }, |
| 1376 | 1376 | .keyword_noalias, .keyword_comptime => { |
| 1377 | | try renderToken(ais, tree, last_param_token, .Space); |
| 1377 | try renderToken(ais, tree, last_param_token, .space); |
| 1378 | 1378 | last_param_token += 1; |
| 1379 | 1379 | }, |
| 1380 | 1380 | .identifier => {}, |
| 1381 | 1381 | .keyword_anytype => { |
| 1382 | | try renderToken(ais, tree, last_param_token, .Comma); // anytype |
| 1382 | try renderToken(ais, tree, last_param_token, .comma); // anytype |
| 1383 | 1383 | continue; |
| 1384 | 1384 | }, |
| 1385 | 1385 | .r_paren => break, |
| 1386 | 1386 | else => unreachable, |
| 1387 | 1387 | } |
| 1388 | 1388 | if (token_tags[last_param_token] == .identifier) { |
| 1389 | | try renderToken(ais, tree, last_param_token, .None); // name |
| 1389 | try renderToken(ais, tree, last_param_token, .none); // name |
| 1390 | 1390 | last_param_token += 1; |
| 1391 | | try renderToken(ais, tree, last_param_token, .Space); // : |
| 1391 | try renderToken(ais, tree, last_param_token, .space); // : |
| 1392 | 1392 | last_param_token += 1; |
| 1393 | 1393 | } |
| 1394 | 1394 | if (token_tags[last_param_token] == .keyword_anytype) { |
| 1395 | | try renderToken(ais, tree, last_param_token, .Comma); // anytype |
| 1395 | try renderToken(ais, tree, last_param_token, .comma); // anytype |
| 1396 | 1396 | continue; |
| 1397 | 1397 | } |
| 1398 | 1398 | const param = fn_proto.ast.params[param_i]; |
| 1399 | 1399 | param_i += 1; |
| 1400 | | try renderExpression(ais, tree, param, .Comma); |
| 1400 | try renderExpression(ais, tree, param, .comma); |
| 1401 | 1401 | last_param_token = tree.lastToken(param) + 1; |
| 1402 | 1402 | } |
| 1403 | 1403 | ais.popIndent(); |
| 1404 | 1404 | } |
| 1405 | 1405 | |
| 1406 | | try renderToken(ais, tree, rparen, .Space); // ) |
| 1406 | try renderToken(ais, tree, rparen, .space); // ) |
| 1407 | 1407 | |
| 1408 | 1408 | if (fn_proto.ast.align_expr != 0) { |
| 1409 | 1409 | const align_lparen = tree.firstToken(fn_proto.ast.align_expr) - 1; |
| 1410 | 1410 | const align_rparen = tree.lastToken(fn_proto.ast.align_expr) + 1; |
| 1411 | 1411 | |
| 1412 | | try renderToken(ais, tree, align_lparen - 1, .None); // align |
| 1413 | | try renderToken(ais, tree, align_lparen, .None); // ( |
| 1414 | | try renderExpression(ais, tree, fn_proto.ast.align_expr, .None); |
| 1415 | | try renderToken(ais, tree, align_rparen, .Space); // ) |
| 1412 | try renderToken(ais, tree, align_lparen - 1, .none); // align |
| 1413 | try renderToken(ais, tree, align_lparen, .none); // ( |
| 1414 | try renderExpression(ais, tree, fn_proto.ast.align_expr, .none); |
| 1415 | try renderToken(ais, tree, align_rparen, .space); // ) |
| 1416 | 1416 | } |
| 1417 | 1417 | |
| 1418 | 1418 | if (fn_proto.ast.section_expr != 0) { |
| 1419 | 1419 | const section_lparen = tree.firstToken(fn_proto.ast.section_expr) - 1; |
| 1420 | 1420 | const section_rparen = tree.lastToken(fn_proto.ast.section_expr) + 1; |
| 1421 | 1421 | |
| 1422 | | try renderToken(ais, tree, section_lparen - 1, .None); // section |
| 1423 | | try renderToken(ais, tree, section_lparen, .None); // ( |
| 1424 | | try renderExpression(ais, tree, fn_proto.ast.section_expr, .None); |
| 1425 | | try renderToken(ais, tree, section_rparen, .Space); // ) |
| 1422 | try renderToken(ais, tree, section_lparen - 1, .none); // section |
| 1423 | try renderToken(ais, tree, section_lparen, .none); // ( |
| 1424 | try renderExpression(ais, tree, fn_proto.ast.section_expr, .none); |
| 1425 | try renderToken(ais, tree, section_rparen, .space); // ) |
| 1426 | 1426 | } |
| 1427 | 1427 | |
| 1428 | 1428 | if (fn_proto.ast.callconv_expr != 0) { |
| 1429 | 1429 | const callconv_lparen = tree.firstToken(fn_proto.ast.callconv_expr) - 1; |
| 1430 | 1430 | const callconv_rparen = tree.lastToken(fn_proto.ast.callconv_expr) + 1; |
| 1431 | 1431 | |
| 1432 | | try renderToken(ais, tree, callconv_lparen - 1, .None); // callconv |
| 1433 | | try renderToken(ais, tree, callconv_lparen, .None); // ( |
| 1434 | | try renderExpression(ais, tree, fn_proto.ast.callconv_expr, .None); |
| 1435 | | try renderToken(ais, tree, callconv_rparen, .Space); // ) |
| 1432 | try renderToken(ais, tree, callconv_lparen - 1, .none); // callconv |
| 1433 | try renderToken(ais, tree, callconv_lparen, .none); // ( |
| 1434 | try renderExpression(ais, tree, fn_proto.ast.callconv_expr, .none); |
| 1435 | try renderToken(ais, tree, callconv_rparen, .space); // ) |
| 1436 | 1436 | } |
| 1437 | 1437 | |
| 1438 | 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 | 1441 | return renderExpression(ais, tree, fn_proto.ast.return_type, space); |
| 1442 | 1442 | } |
| ... | ... | @@ -1452,34 +1452,34 @@ fn renderSwitchCase( |
| 1452 | 1452 | |
| 1453 | 1453 | // Render everything before the arrow |
| 1454 | 1454 | if (switch_case.ast.values.len == 0) { |
| 1455 | | try renderToken(ais, tree, switch_case.ast.arrow_token - 1, .Space); // else keyword |
| 1455 | try renderToken(ais, tree, switch_case.ast.arrow_token - 1, .space); // else keyword |
| 1456 | 1456 | } else if (switch_case.ast.values.len == 1) { |
| 1457 | 1457 | // 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 | 1459 | } else if (trailing_comma) { |
| 1460 | 1460 | // Render each value on a new line |
| 1461 | 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 | 1464 | } else { |
| 1465 | 1465 | // Render on one line |
| 1466 | 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 | } |
| 1470 | 1470 | |
| 1471 | 1471 | // 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); |
| 1473 | 1473 | |
| 1474 | 1474 | if (switch_case.payload_token) |payload_token| { |
| 1475 | | try renderToken(ais, tree, payload_token - 1, .None); // pipe |
| 1475 | try renderToken(ais, tree, payload_token - 1, .none); // pipe |
| 1476 | 1476 | if (token_tags[payload_token] == .asterisk) { |
| 1477 | | try renderToken(ais, tree, payload_token, .None); // asterisk |
| 1478 | | try renderToken(ais, tree, payload_token + 1, .None); // identifier |
| 1479 | | try renderToken(ais, tree, payload_token + 2, .Space); // pipe |
| 1477 | try renderToken(ais, tree, payload_token, .none); // asterisk |
| 1478 | try renderToken(ais, tree, payload_token + 1, .none); // identifier |
| 1479 | try renderToken(ais, tree, payload_token + 2, .space); // pipe |
| 1480 | 1480 | } else { |
| 1481 | | try renderToken(ais, tree, payload_token, .None); // identifier |
| 1482 | | try renderToken(ais, tree, payload_token + 1, .Space); // pipe |
| 1481 | try renderToken(ais, tree, payload_token, .none); // identifier |
| 1482 | try renderToken(ais, tree, payload_token + 1, .space); // pipe |
| 1483 | 1483 | } |
| 1484 | 1484 | } |
| 1485 | 1485 | |
| ... | ... | @@ -1501,26 +1501,26 @@ fn renderBlock( |
| 1501 | 1501 | if (token_tags[lbrace - 1] == .colon and |
| 1502 | 1502 | token_tags[lbrace - 2] == .identifier) |
| 1503 | 1503 | { |
| 1504 | | try renderToken(ais, tree, lbrace - 2, .None); |
| 1505 | | try renderToken(ais, tree, lbrace - 1, .Space); |
| 1504 | try renderToken(ais, tree, lbrace - 2, .none); |
| 1505 | try renderToken(ais, tree, lbrace - 1, .space); |
| 1506 | 1506 | } |
| 1507 | 1507 | |
| 1508 | 1508 | if (statements.len == 0) { |
| 1509 | 1509 | ais.pushIndentNextLine(); |
| 1510 | | try renderToken(ais, tree, lbrace, .None); |
| 1510 | try renderToken(ais, tree, lbrace, .none); |
| 1511 | 1511 | ais.popIndent(); |
| 1512 | 1512 | return renderToken(ais, tree, lbrace + 1, space); // rbrace |
| 1513 | 1513 | } |
| 1514 | 1514 | |
| 1515 | 1515 | ais.pushIndentNextLine(); |
| 1516 | | try renderToken(ais, tree, lbrace, .Newline); |
| 1516 | try renderToken(ais, tree, lbrace, .newline); |
| 1517 | 1517 | for (statements) |stmt, i| { |
| 1518 | 1518 | switch (node_tags[stmt]) { |
| 1519 | 1519 | .global_var_decl => try renderVarDecl(ais, tree, tree.globalVarDecl(stmt)), |
| 1520 | 1520 | .local_var_decl => try renderVarDecl(ais, tree, tree.localVarDecl(stmt)), |
| 1521 | 1521 | .simple_var_decl => try renderVarDecl(ais, tree, tree.simpleVarDecl(stmt)), |
| 1522 | 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 | 1526 | ais.popIndent(); |
| ... | ... | @@ -1537,12 +1537,12 @@ fn renderStructInit( |
| 1537 | 1537 | ) Error!void { |
| 1538 | 1538 | const token_tags = tree.tokens.items(.tag); |
| 1539 | 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 | 1541 | } else { |
| 1542 | | try renderExpression(ais, tree, struct_init.ast.type_expr, .None); // T |
| 1542 | try renderExpression(ais, tree, struct_init.ast.type_expr, .none); // T |
| 1543 | 1543 | } |
| 1544 | 1544 | if (struct_init.ast.fields.len == 0) { |
| 1545 | | try renderToken(ais, tree, struct_init.ast.lbrace, .None); // lbrace |
| 1545 | try renderToken(ais, tree, struct_init.ast.lbrace, .none); // lbrace |
| 1546 | 1546 | return renderToken(ais, tree, struct_init.ast.lbrace + 1, space); // rbrace |
| 1547 | 1547 | } |
| 1548 | 1548 | const last_field = struct_init.ast.fields[struct_init.ast.fields.len - 1]; |
| ... | ... | @@ -1550,28 +1550,28 @@ fn renderStructInit( |
| 1550 | 1550 | if (token_tags[last_field_token + 1] == .comma) { |
| 1551 | 1551 | // Render one field init per line. |
| 1552 | 1552 | ais.pushIndent(); |
| 1553 | | try renderToken(ais, tree, struct_init.ast.lbrace, .Newline); |
| 1553 | try renderToken(ais, tree, struct_init.ast.lbrace, .newline); |
| 1554 | 1554 | |
| 1555 | 1555 | for (struct_init.ast.fields) |field_init| { |
| 1556 | 1556 | const init_token = tree.firstToken(field_init); |
| 1557 | | try renderToken(ais, tree, init_token - 3, .None); // . |
| 1558 | | try renderToken(ais, tree, init_token - 2, .Space); // name |
| 1559 | | try renderToken(ais, tree, init_token - 1, .Space); // = |
| 1560 | | try renderExpression(ais, tree, field_init, .Comma); |
| 1557 | try renderToken(ais, tree, init_token - 3, .none); // . |
| 1558 | try renderToken(ais, tree, init_token - 2, .space); // name |
| 1559 | try renderToken(ais, tree, init_token - 1, .space); // = |
| 1560 | try renderExpression(ais, tree, field_init, .comma); |
| 1561 | 1561 | } |
| 1562 | 1562 | |
| 1563 | 1563 | ais.popIndent(); |
| 1564 | 1564 | return renderToken(ais, tree, last_field_token + 2, space); // rbrace |
| 1565 | 1565 | } else { |
| 1566 | 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); |
| 1568 | 1568 | |
| 1569 | 1569 | for (struct_init.ast.fields) |field_init| { |
| 1570 | 1570 | const init_token = tree.firstToken(field_init); |
| 1571 | | try renderToken(ais, tree, init_token - 3, .None); // . |
| 1572 | | try renderToken(ais, tree, init_token - 2, .Space); // name |
| 1573 | | try renderToken(ais, tree, init_token - 1, .Space); // = |
| 1574 | | try renderExpression(ais, tree, field_init, .CommaSpace); |
| 1571 | try renderToken(ais, tree, init_token - 3, .none); // . |
| 1572 | try renderToken(ais, tree, init_token - 2, .space); // name |
| 1573 | try renderToken(ais, tree, init_token - 1, .space); // = |
| 1574 | try renderExpression(ais, tree, field_init, .comma_space); |
| 1575 | 1575 | } |
| 1576 | 1576 | |
| 1577 | 1577 | return renderToken(ais, tree, last_field_token + 1, space); // rbrace |
| ... | ... | @@ -1587,12 +1587,12 @@ fn renderArrayInit( |
| 1587 | 1587 | ) Error!void { |
| 1588 | 1588 | const token_tags = tree.tokens.items(.tag); |
| 1589 | 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 | 1591 | } else { |
| 1592 | | try renderExpression(ais, tree, array_init.ast.type_expr, .None); // T |
| 1592 | try renderExpression(ais, tree, array_init.ast.type_expr, .none); // T |
| 1593 | 1593 | } |
| 1594 | 1594 | if (array_init.ast.elements.len == 0) { |
| 1595 | | try renderToken(ais, tree, array_init.ast.lbrace, .None); // lbrace |
| 1595 | try renderToken(ais, tree, array_init.ast.lbrace, .none); // lbrace |
| 1596 | 1596 | return renderToken(ais, tree, array_init.ast.lbrace + 1, space); // rbrace |
| 1597 | 1597 | } |
| 1598 | 1598 | const last_elem = array_init.ast.elements[array_init.ast.elements.len - 1]; |
| ... | ... | @@ -1600,10 +1600,10 @@ fn renderArrayInit( |
| 1600 | 1600 | if (token_tags[last_elem_token + 1] == .comma) { |
| 1601 | 1601 | // Render one element per line. |
| 1602 | 1602 | ais.pushIndent(); |
| 1603 | | try renderToken(ais, tree, array_init.ast.lbrace, .Newline); |
| 1603 | try renderToken(ais, tree, array_init.ast.lbrace, .newline); |
| 1604 | 1604 | |
| 1605 | 1605 | for (array_init.ast.elements) |elem| { |
| 1606 | | try renderExpression(ais, tree, elem, .Comma); |
| 1606 | try renderExpression(ais, tree, elem, .comma); |
| 1607 | 1607 | } |
| 1608 | 1608 | |
| 1609 | 1609 | ais.popIndent(); |
| ... | ... | @@ -1612,12 +1612,12 @@ fn renderArrayInit( |
| 1612 | 1612 | // Render all on one line, no trailing comma. |
| 1613 | 1613 | if (array_init.ast.elements.len == 1) { |
| 1614 | 1614 | // If there is only one element, we don't use spaces |
| 1615 | | try renderToken(ais, tree, array_init.ast.lbrace, .None); |
| 1616 | | try renderExpression(ais, tree, array_init.ast.elements[0], .None); |
| 1615 | try renderToken(ais, tree, array_init.ast.lbrace, .none); |
| 1616 | try renderExpression(ais, tree, array_init.ast.elements[0], .none); |
| 1617 | 1617 | } else { |
| 1618 | | try renderToken(ais, tree, array_init.ast.lbrace, .Space); |
| 1618 | try renderToken(ais, tree, array_init.ast.lbrace, .space); |
| 1619 | 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 | 1623 | return renderToken(ais, tree, last_elem_token + 1, space); // rbrace |
| ... | ... | @@ -1634,39 +1634,39 @@ fn renderContainerDecl( |
| 1634 | 1634 | const node_tags = tree.nodes.items(.tag); |
| 1635 | 1635 | |
| 1636 | 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 | } |
| 1639 | 1639 | |
| 1640 | 1640 | var lbrace: ast.TokenIndex = undefined; |
| 1641 | 1641 | if (container_decl.ast.enum_token) |enum_token| { |
| 1642 | | try renderToken(ais, tree, container_decl.ast.main_token, .None); // union |
| 1643 | | try renderToken(ais, tree, enum_token - 1, .None); // lparen |
| 1644 | | try renderToken(ais, tree, enum_token, .None); // enum |
| 1642 | try renderToken(ais, tree, container_decl.ast.main_token, .none); // union |
| 1643 | try renderToken(ais, tree, enum_token - 1, .none); // lparen |
| 1644 | try renderToken(ais, tree, enum_token, .none); // enum |
| 1645 | 1645 | if (container_decl.ast.arg != 0) { |
| 1646 | | try renderToken(ais, tree, enum_token + 1, .None); // lparen |
| 1647 | | try renderExpression(ais, tree, container_decl.ast.arg, .None); |
| 1646 | try renderToken(ais, tree, enum_token + 1, .none); // lparen |
| 1647 | try renderExpression(ais, tree, container_decl.ast.arg, .none); |
| 1648 | 1648 | const rparen = tree.lastToken(container_decl.ast.arg) + 1; |
| 1649 | | try renderToken(ais, tree, rparen, .None); // rparen |
| 1650 | | try renderToken(ais, tree, rparen + 1, .Space); // rparen |
| 1649 | try renderToken(ais, tree, rparen, .none); // rparen |
| 1650 | try renderToken(ais, tree, rparen + 1, .space); // rparen |
| 1651 | 1651 | lbrace = rparen + 2; |
| 1652 | 1652 | } else { |
| 1653 | | try renderToken(ais, tree, enum_token + 1, .Space); // rparen |
| 1653 | try renderToken(ais, tree, enum_token + 1, .space); // rparen |
| 1654 | 1654 | lbrace = enum_token + 2; |
| 1655 | 1655 | } |
| 1656 | 1656 | } else if (container_decl.ast.arg != 0) { |
| 1657 | | try renderToken(ais, tree, container_decl.ast.main_token, .None); // union |
| 1658 | | try renderToken(ais, tree, container_decl.ast.main_token + 1, .None); // lparen |
| 1659 | | try renderExpression(ais, tree, container_decl.ast.arg, .None); |
| 1657 | try renderToken(ais, tree, container_decl.ast.main_token, .none); // union |
| 1658 | try renderToken(ais, tree, container_decl.ast.main_token + 1, .none); // lparen |
| 1659 | try renderExpression(ais, tree, container_decl.ast.arg, .none); |
| 1660 | 1660 | const rparen = tree.lastToken(container_decl.ast.arg) + 1; |
| 1661 | | try renderToken(ais, tree, rparen, .Space); // rparen |
| 1661 | try renderToken(ais, tree, rparen, .space); // rparen |
| 1662 | 1662 | lbrace = rparen + 1; |
| 1663 | 1663 | } else { |
| 1664 | | try renderToken(ais, tree, container_decl.ast.main_token, .Space); // union |
| 1664 | try renderToken(ais, tree, container_decl.ast.main_token, .space); // union |
| 1665 | 1665 | lbrace = container_decl.ast.main_token + 1; |
| 1666 | 1666 | } |
| 1667 | 1667 | |
| 1668 | 1668 | if (container_decl.ast.members.len == 0) { |
| 1669 | | try renderToken(ais, tree, lbrace, Space.None); // lbrace |
| 1669 | try renderToken(ais, tree, lbrace, Space.none); // lbrace |
| 1670 | 1670 | return renderToken(ais, tree, lbrace + 1, space); // rbrace |
| 1671 | 1671 | } |
| 1672 | 1672 | |
| ... | ... | @@ -1690,18 +1690,18 @@ fn renderContainerDecl( |
| 1690 | 1690 | if (!node_tags[member].isContainerField()) break :one_line; |
| 1691 | 1691 | } |
| 1692 | 1692 | // All the declarations on the same line. |
| 1693 | | try renderToken(ais, tree, lbrace, .Space); // lbrace |
| 1693 | try renderToken(ais, tree, lbrace, .space); // lbrace |
| 1694 | 1694 | for (container_decl.ast.members) |member| { |
| 1695 | | try renderMember(ais, tree, member, .Space); |
| 1695 | try renderMember(ais, tree, member, .space); |
| 1696 | 1696 | } |
| 1697 | 1697 | return renderToken(ais, tree, rbrace, space); // rbrace |
| 1698 | 1698 | } |
| 1699 | 1699 | |
| 1700 | 1700 | // One member per line. |
| 1701 | 1701 | ais.pushIndent(); |
| 1702 | | try renderToken(ais, tree, lbrace, .Newline); // lbrace |
| 1702 | try renderToken(ais, tree, lbrace, .newline); // lbrace |
| 1703 | 1703 | for (container_decl.ast.members) |member| { |
| 1704 | | try renderMember(ais, tree, member, .Newline); |
| 1704 | try renderMember(ais, tree, member, .newline); |
| 1705 | 1705 | } |
| 1706 | 1706 | ais.popIndent(); |
| 1707 | 1707 | |
| ... | ... | @@ -1716,26 +1716,26 @@ fn renderAsm( |
| 1716 | 1716 | ) Error!void { |
| 1717 | 1717 | const token_tags = tree.tokens.items(.tag); |
| 1718 | 1718 | |
| 1719 | | try renderToken(ais, tree, asm_node.ast.asm_token, .Space); // asm |
| 1719 | try renderToken(ais, tree, asm_node.ast.asm_token, .space); // asm |
| 1720 | 1720 | |
| 1721 | 1721 | if (asm_node.volatile_token) |volatile_token| { |
| 1722 | | try renderToken(ais, tree, volatile_token, .Space); // volatile |
| 1723 | | try renderToken(ais, tree, volatile_token + 1, .None); // lparen |
| 1722 | try renderToken(ais, tree, volatile_token, .space); // volatile |
| 1723 | try renderToken(ais, tree, volatile_token + 1, .none); // lparen |
| 1724 | 1724 | } else { |
| 1725 | | try renderToken(ais, tree, asm_node.ast.asm_token + 1, .None); // lparen |
| 1725 | try renderToken(ais, tree, asm_node.ast.asm_token + 1, .none); // lparen |
| 1726 | 1726 | } |
| 1727 | 1727 | |
| 1728 | 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 | 1730 | if (asm_node.first_clobber) |first_clobber| { |
| 1731 | 1731 | // asm ("foo" ::: "a", "b") |
| 1732 | 1732 | var tok_i = first_clobber; |
| 1733 | 1733 | while (true) : (tok_i += 1) { |
| 1734 | | try renderToken(ais, tree, tok_i, .None); |
| 1734 | try renderToken(ais, tree, tok_i, .none); |
| 1735 | 1735 | tok_i += 1; |
| 1736 | 1736 | switch (token_tags[tok_i]) { |
| 1737 | 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 | 1739 | else => unreachable, |
| 1740 | 1740 | } |
| 1741 | 1741 | } |
| ... | ... | @@ -1746,32 +1746,32 @@ fn renderAsm( |
| 1746 | 1746 | } |
| 1747 | 1747 | |
| 1748 | 1748 | ais.pushIndent(); |
| 1749 | | try renderExpression(ais, tree, asm_node.ast.template, .Newline); |
| 1749 | try renderExpression(ais, tree, asm_node.ast.template, .newline); |
| 1750 | 1750 | ais.setIndentDelta(asm_indent_delta); |
| 1751 | 1751 | const colon1 = tree.lastToken(asm_node.ast.template) + 1; |
| 1752 | 1752 | |
| 1753 | 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 | 1755 | break :colon2 colon1 + 1; |
| 1756 | 1756 | } else colon2: { |
| 1757 | | try renderToken(ais, tree, colon1, .Space); // : |
| 1757 | try renderToken(ais, tree, colon1, .space); // : |
| 1758 | 1758 | |
| 1759 | 1759 | ais.pushIndent(); |
| 1760 | 1760 | for (asm_node.outputs) |asm_output, i| { |
| 1761 | 1761 | if (i + 1 < asm_node.outputs.len) { |
| 1762 | 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); |
| 1764 | 1764 | |
| 1765 | 1765 | const comma = tree.firstToken(next_asm_output) - 1; |
| 1766 | | try renderToken(ais, tree, comma, .Newline); // , |
| 1766 | try renderToken(ais, tree, comma, .newline); // , |
| 1767 | 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 | 1769 | ais.popIndent(); |
| 1770 | 1770 | ais.setIndentDelta(indent_delta); |
| 1771 | 1771 | ais.popIndent(); |
| 1772 | 1772 | return renderToken(ais, tree, asm_node.ast.rparen, space); // rparen |
| 1773 | 1773 | } else { |
| 1774 | | try renderAsmOutput(ais, tree, asm_output, .Newline); |
| 1774 | try renderAsmOutput(ais, tree, asm_output, .newline); |
| 1775 | 1775 | const comma_or_colon = tree.lastToken(asm_output) + 1; |
| 1776 | 1776 | ais.popIndent(); |
| 1777 | 1777 | break :colon2 switch (token_tags[comma_or_colon]) { |
| ... | ... | @@ -1783,26 +1783,26 @@ fn renderAsm( |
| 1783 | 1783 | }; |
| 1784 | 1784 | |
| 1785 | 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 | 1787 | break :colon3 colon2 + 1; |
| 1788 | 1788 | } else colon3: { |
| 1789 | | try renderToken(ais, tree, colon2, .Space); // : |
| 1789 | try renderToken(ais, tree, colon2, .space); // : |
| 1790 | 1790 | ais.pushIndent(); |
| 1791 | 1791 | for (asm_node.inputs) |asm_input, i| { |
| 1792 | 1792 | if (i + 1 < asm_node.inputs.len) { |
| 1793 | 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); |
| 1795 | 1795 | |
| 1796 | 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 | 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 | 1800 | ais.popIndent(); |
| 1801 | 1801 | ais.setIndentDelta(indent_delta); |
| 1802 | 1802 | ais.popIndent(); |
| 1803 | 1803 | return renderToken(ais, tree, asm_node.ast.rparen, space); // rparen |
| 1804 | 1804 | } else { |
| 1805 | | try renderAsmInput(ais, tree, asm_input, .Newline); |
| 1805 | try renderAsmInput(ais, tree, asm_input, .newline); |
| 1806 | 1806 | const comma_or_colon = tree.lastToken(asm_input) + 1; |
| 1807 | 1807 | ais.popIndent(); |
| 1808 | 1808 | break :colon3 switch (token_tags[comma_or_colon]) { |
| ... | ... | @@ -1814,7 +1814,7 @@ fn renderAsm( |
| 1814 | 1814 | unreachable; |
| 1815 | 1815 | }; |
| 1816 | 1816 | |
| 1817 | | try renderToken(ais, tree, colon3, .Space); // : |
| 1817 | try renderToken(ais, tree, colon3, .space); // : |
| 1818 | 1818 | const first_clobber = asm_node.first_clobber.?; |
| 1819 | 1819 | var tok_i = first_clobber; |
| 1820 | 1820 | while (true) { |
| ... | ... | @@ -1822,12 +1822,12 @@ fn renderAsm( |
| 1822 | 1822 | .r_paren => { |
| 1823 | 1823 | ais.setIndentDelta(indent_delta); |
| 1824 | 1824 | ais.popIndent(); |
| 1825 | | try renderToken(ais, tree, tok_i, .Newline); |
| 1825 | try renderToken(ais, tree, tok_i, .newline); |
| 1826 | 1826 | return renderToken(ais, tree, tok_i + 1, space); |
| 1827 | 1827 | }, |
| 1828 | 1828 | .comma => { |
| 1829 | | try renderToken(ais, tree, tok_i, .None); |
| 1830 | | try renderToken(ais, tree, tok_i + 1, .Space); |
| 1829 | try renderToken(ais, tree, tok_i, .none); |
| 1830 | try renderToken(ais, tree, tok_i + 1, .space); |
| 1831 | 1831 | tok_i += 2; |
| 1832 | 1832 | }, |
| 1833 | 1833 | else => unreachable, |
| ... | ... | @@ -1846,14 +1846,14 @@ fn renderCall( |
| 1846 | 1846 | const main_tokens = tree.nodes.items(.main_token); |
| 1847 | 1847 | |
| 1848 | 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); |
| 1852 | 1852 | |
| 1853 | 1853 | const lparen = call.ast.lparen; |
| 1854 | 1854 | const params = call.ast.params; |
| 1855 | 1855 | if (params.len == 0) { |
| 1856 | | try renderToken(ais, tree, lparen, .None); |
| 1856 | try renderToken(ais, tree, lparen, .none); |
| 1857 | 1857 | return renderToken(ais, tree, lparen + 1, space); // ) |
| 1858 | 1858 | } |
| 1859 | 1859 | |
| ... | ... | @@ -1861,10 +1861,10 @@ fn renderCall( |
| 1861 | 1861 | const after_last_param_tok = tree.lastToken(last_param) + 1; |
| 1862 | 1862 | if (token_tags[after_last_param_tok] == .comma) { |
| 1863 | 1863 | ais.pushIndent(); |
| 1864 | | try renderToken(ais, tree, lparen, Space.Newline); // ( |
| 1864 | try renderToken(ais, tree, lparen, Space.newline); // ( |
| 1865 | 1865 | for (params) |param_node, i| { |
| 1866 | 1866 | if (i + 1 < params.len) { |
| 1867 | | try renderExpression(ais, tree, param_node, Space.None); |
| 1867 | try renderExpression(ais, tree, param_node, Space.none); |
| 1868 | 1868 | |
| 1869 | 1869 | // Unindent the comma for multiline string literals |
| 1870 | 1870 | const is_multiline_string = node_tags[param_node] == .string_literal and |
| ... | ... | @@ -1872,25 +1872,25 @@ fn renderCall( |
| 1872 | 1872 | if (is_multiline_string) ais.popIndent(); |
| 1873 | 1873 | |
| 1874 | 1874 | const comma = tree.lastToken(param_node) + 1; |
| 1875 | | try renderToken(ais, tree, comma, Space.Newline); // , |
| 1875 | try renderToken(ais, tree, comma, Space.newline); // , |
| 1876 | 1876 | |
| 1877 | 1877 | if (is_multiline_string) ais.pushIndent(); |
| 1878 | 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 | 1882 | ais.popIndent(); |
| 1883 | 1883 | return renderToken(ais, tree, after_last_param_tok + 1, space); // ) |
| 1884 | 1884 | } |
| 1885 | 1885 | |
| 1886 | | try renderToken(ais, tree, lparen, Space.None); // ( |
| 1886 | try renderToken(ais, tree, lparen, Space.none); // ( |
| 1887 | 1887 | |
| 1888 | 1888 | for (params) |param_node, i| { |
| 1889 | | try renderExpression(ais, tree, param_node, Space.None); |
| 1889 | try renderExpression(ais, tree, param_node, Space.none); |
| 1890 | 1890 | |
| 1891 | 1891 | if (i + 1 < params.len) { |
| 1892 | 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 | 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 | 1901 | const token_tags = tree.tokens.items(.tag); |
| 1902 | 1902 | const maybe_comma = tree.lastToken(node) + 1; |
| 1903 | 1903 | if (token_tags[maybe_comma] == .comma) { |
| 1904 | | try renderExpression(ais, tree, node, .None); |
| 1904 | try renderExpression(ais, tree, node, .none); |
| 1905 | 1905 | return renderToken(ais, tree, maybe_comma, space); |
| 1906 | 1906 | } else { |
| 1907 | 1907 | return renderExpression(ais, tree, node, space); |
| ... | ... | @@ -1912,7 +1912,7 @@ fn renderTokenComma(ais: *Ais, tree: ast.Tree, token: ast.TokenIndex, space: Spa |
| 1912 | 1912 | const token_tags = tree.tokens.items(.tag); |
| 1913 | 1913 | const maybe_comma = token + 1; |
| 1914 | 1914 | if (token_tags[maybe_comma] == .comma) { |
| 1915 | | try renderToken(ais, tree, token, .None); |
| 1915 | try renderToken(ais, tree, token, .none); |
| 1916 | 1916 | return renderToken(ais, tree, maybe_comma, space); |
| 1917 | 1917 | } else { |
| 1918 | 1918 | return renderToken(ais, tree, token, space); |
| ... | ... | @@ -1921,22 +1921,22 @@ fn renderTokenComma(ais: *Ais, tree: ast.Tree, token: ast.TokenIndex, space: Spa |
| 1921 | 1921 | |
| 1922 | 1922 | const Space = enum { |
| 1923 | 1923 | /// Output the token lexeme only. |
| 1924 | | None, |
| 1924 | none, |
| 1925 | 1925 | /// Output the token lexeme followed by a single space. |
| 1926 | | Space, |
| 1926 | space, |
| 1927 | 1927 | /// Output the token lexeme followed by a newline. |
| 1928 | | Newline, |
| 1928 | newline, |
| 1929 | 1929 | /// Additionally consume the next token if it is a comma. |
| 1930 | 1930 | /// In either case, a newline will be inserted afterwards. |
| 1931 | | Comma, |
| 1931 | comma, |
| 1932 | 1932 | /// Additionally consume the next token if it is a comma. |
| 1933 | 1933 | /// In either case, a space will be inserted afterwards. |
| 1934 | | CommaSpace, |
| 1934 | comma_space, |
| 1935 | 1935 | /// Additionally consume the next token if it is a semicolon. |
| 1936 | 1936 | /// In either case, a newline will be inserted afterwards. |
| 1937 | | Semicolon, |
| 1937 | semicolon, |
| 1938 | 1938 | /// Skips writing the possible line comment after the token. |
| 1939 | | NoComment, |
| 1939 | no_comment, |
| 1940 | 1940 | }; |
| 1941 | 1941 | |
| 1942 | 1942 | fn 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 | 1958 | try ais.writer().writeAll(lexeme); |
| 1959 | 1959 | |
| 1960 | 1960 | switch (space) { |
| 1961 | | .NoComment => {}, |
| 1962 | | .None => _ = try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]), |
| 1963 | | .Comma => { |
| 1961 | .no_comment => {}, |
| 1962 | .none => _ = try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]), |
| 1963 | .comma => { |
| 1964 | 1964 | const comment = try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]); |
| 1965 | 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 | 1967 | } else if (!comment) { |
| 1968 | 1968 | return ais.insertNewline(); |
| 1969 | 1969 | } |
| 1970 | 1970 | }, |
| 1971 | | .CommaSpace => { |
| 1971 | .comma_space => { |
| 1972 | 1972 | const comment = try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]); |
| 1973 | 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 | 1975 | } else if (!comment) { |
| 1976 | 1976 | return ais.writer().writeByte(' '); |
| 1977 | 1977 | } |
| 1978 | 1978 | }, |
| 1979 | | .Semicolon => { |
| 1979 | .semicolon => { |
| 1980 | 1980 | const comment = try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]); |
| 1981 | 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 | 1983 | } else if (!comment) { |
| 1984 | 1984 | return ais.insertNewline(); |
| 1985 | 1985 | } |
| 1986 | 1986 | }, |
| 1987 | | .Space => { |
| 1987 | .space => { |
| 1988 | 1988 | const comment = try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]); |
| 1989 | 1989 | if (!comment) { |
| 1990 | 1990 | return ais.writer().writeByte(' '); |
| 1991 | 1991 | } |
| 1992 | 1992 | }, |
| 1993 | | .Newline => { |
| 1993 | .newline => { |
| 1994 | 1994 | if (!try renderCommentsAndNewlines(ais, tree, token_start + lexeme.len, token_starts[token_index + 1])) { |
| 1995 | 1995 | try ais.insertNewline(); |
| 1996 | 1996 | } |
| ... | ... | @@ -2018,9 +2018,9 @@ fn renderDocComments(ais: *Ais, tree: ast.Tree, end_token: ast.TokenIndex) Error |
| 2018 | 2018 | switch (token_tags[tok]) { |
| 2019 | 2019 | .doc_comment => { |
| 2020 | 2020 | if (first_tok < end_token) { |
| 2021 | | try renderToken(ais, tree, tok, .Newline); |
| 2021 | try renderToken(ais, tree, tok, .newline); |
| 2022 | 2022 | } else { |
| 2023 | | try renderToken(ais, tree, tok, .NoComment); |
| 2023 | try renderToken(ais, tree, tok, .no_comment); |
| 2024 | 2024 | try ais.insertNewline(); |
| 2025 | 2025 | } |
| 2026 | 2026 | }, |