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