| ... | @@ -2209,10 +2209,10 @@ fn renderAsmOutput( | ... | @@ -2209,10 +2209,10 @@ fn renderAsmOutput( |
| 2209 | try ais.writer().writeAll(" ("); | 2209 | try ais.writer().writeAll(" ("); |
| 2210 | | 2210 | |
| 2211 | switch (asm_output.kind) { | 2211 | switch (asm_output.kind) { |
| 2212 | ast.Node.Asm.Output.Kind.Variable => |variable_name| { | 2212 | .Variable => |variable_name| { |
| 2213 | try renderExpression(allocator, ais, tree, &variable_name.base, Space.None); | 2213 | try renderExpression(allocator, ais, tree, &variable_name.base, Space.None); |
| 2214 | }, | 2214 | }, |
| 2215 | ast.Node.Asm.Output.Kind.Return => |return_type| { | 2215 | .Return => |return_type| { |
| 2216 | try ais.writer().writeAll("-> "); | 2216 | try ais.writer().writeAll("-> "); |
| 2217 | try renderExpression(allocator, ais, tree, return_type, Space.None); | 2217 | try renderExpression(allocator, ais, tree, return_type, Space.None); |
| 2218 | }, | 2218 | }, |
| ... | @@ -2304,8 +2304,17 @@ fn renderVarDecl( | ... | @@ -2304,8 +2304,17 @@ fn renderVarDecl( |
| 2304 | } | 2304 | } |
| 2305 | | 2305 | |
| 2306 | if (var_decl.getInitNode()) |init_node| { | 2306 | if (var_decl.getInitNode()) |init_node| { |
| 2307 | const s = if (init_node.tag == .MultilineStringLiteral) Space.None else Space.Space; | 2307 | const eq_token = var_decl.getEqToken().?; |
| 2308 | try renderToken(tree, ais, var_decl.getEqToken().?, s); // = | 2308 | const eq_space = blk: { |
| | 2309 | const loc = tree.tokenLocation(tree.token_locs[eq_token].end, tree.nextToken(eq_token)); |
| | 2310 | break :blk if (loc.line == 0) Space.Space else Space.Newline; |
| | 2311 | }; |
| | 2312 | |
| | 2313 | { |
| | 2314 | ais.pushIndent(); |
| | 2315 | defer ais.popIndent(); |
| | 2316 | try renderToken(tree, ais, eq_token, eq_space); // = |
| | 2317 | } |
| 2309 | ais.pushIndentOneShot(); | 2318 | ais.pushIndentOneShot(); |
| 2310 | try renderExpression(allocator, ais, tree, init_node, Space.None); | 2319 | try renderExpression(allocator, ais, tree, init_node, Space.None); |
| 2311 | } | 2320 | } |
| ... | @@ -2470,20 +2479,20 @@ fn renderTokenOffset( | ... | @@ -2470,20 +2479,20 @@ fn renderTokenOffset( |
| 2470 | | 2479 | |
| 2471 | var loc = tree.tokenLocationLoc(token_loc.end, next_token_loc); | 2480 | var loc = tree.tokenLocationLoc(token_loc.end, next_token_loc); |
| 2472 | if (loc.line == 0) { | 2481 | if (loc.line == 0) { |
| 2473 | try ais.writer().print(" {}", .{mem.trimRight(u8, tree.tokenSliceLoc(next_token_loc), " ")}); | 2482 | if (tree.token_ids[token_index] != .MultilineStringLiteralLine) { |
| | 2483 | try ais.writer().writeByte(' '); |
| | 2484 | } |
| | 2485 | try ais.writer().writeAll(mem.trimRight(u8, tree.tokenSliceLoc(next_token_loc), " ")); |
| 2474 | offset = 2; | 2486 | offset = 2; |
| 2475 | token_loc = next_token_loc; | 2487 | token_loc = next_token_loc; |
| 2476 | next_token_loc = tree.token_locs[token_index + offset]; | 2488 | next_token_loc = tree.token_locs[token_index + offset]; |
| 2477 | next_token_id = tree.token_ids[token_index + offset]; | 2489 | next_token_id = tree.token_ids[token_index + offset]; |
| 2478 | if (next_token_id != .LineComment) { | 2490 | if (next_token_id != .LineComment) { |
| 2479 | switch (space) { | 2491 | switch (space) { |
| 2480 | Space.None, Space.Space => { | 2492 | .None, .Space, .SpaceOrOutdent => { |
| 2481 | try ais.insertNewline(); | | |
| 2482 | }, | | |
| 2483 | Space.SpaceOrOutdent => { | | |
| 2484 | try ais.insertNewline(); | 2493 | try ais.insertNewline(); |
| 2485 | }, | 2494 | }, |
| 2486 | Space.Newline => { | 2495 | .Newline => { |
| 2487 | if (next_token_id == .MultilineStringLiteralLine) { | 2496 | if (next_token_id == .MultilineStringLiteralLine) { |
| 2488 | return; | 2497 | return; |
| 2489 | } else { | 2498 | } else { |
| ... | @@ -2491,8 +2500,8 @@ fn renderTokenOffset( | ... | @@ -2491,8 +2500,8 @@ fn renderTokenOffset( |
| 2491 | return; | 2500 | return; |
| 2492 | } | 2501 | } |
| 2493 | }, | 2502 | }, |
| 2494 | Space.NoNewline => {}, | 2503 | .NoNewline => {}, |
| 2495 | Space.NoComment, Space.Comma, Space.BlockStart => unreachable, | 2504 | .NoComment, .Comma, .BlockStart => unreachable, |
| 2496 | } | 2505 | } |
| 2497 | return; | 2506 | return; |
| 2498 | } | 2507 | } |
| ... | @@ -2513,7 +2522,7 @@ fn renderTokenOffset( | ... | @@ -2513,7 +2522,7 @@ fn renderTokenOffset( |
| 2513 | next_token_id = tree.token_ids[token_index + offset]; | 2522 | next_token_id = tree.token_ids[token_index + offset]; |
| 2514 | if (next_token_id != .LineComment) { | 2523 | if (next_token_id != .LineComment) { |
| 2515 | switch (space) { | 2524 | switch (space) { |
| 2516 | Space.Newline => { | 2525 | .Newline => { |
| 2517 | if (next_token_id == .MultilineStringLiteralLine) { | 2526 | if (next_token_id == .MultilineStringLiteralLine) { |
| 2518 | return; | 2527 | return; |
| 2519 | } else { | 2528 | } else { |
| ... | @@ -2521,14 +2530,11 @@ fn renderTokenOffset( | ... | @@ -2521,14 +2530,11 @@ fn renderTokenOffset( |
| 2521 | return; | 2530 | return; |
| 2522 | } | 2531 | } |
| 2523 | }, | 2532 | }, |
| 2524 | Space.None, Space.Space => { | 2533 | .None, .Space, .SpaceOrOutdent => { |
| 2525 | try ais.insertNewline(); | | |
| 2526 | }, | | |
| 2527 | Space.SpaceOrOutdent => { | | |
| 2528 | try ais.insertNewline(); | 2534 | try ais.insertNewline(); |
| 2529 | }, | 2535 | }, |
| 2530 | Space.NoNewline => {}, | 2536 | .NoNewline => {}, |
| 2531 | Space.NoComment, Space.Comma, Space.BlockStart => unreachable, | 2537 | .NoComment, .Comma, .BlockStart => unreachable, |
| 2532 | } | 2538 | } |
| 2533 | return; | 2539 | return; |
| 2534 | } | 2540 | } |