| ... | @@ -1444,6 +1444,7 @@ fn renderSwitchCase( | ... | @@ -1444,6 +1444,7 @@ fn renderSwitchCase( |
| 1444 | switch_case: ast.full.SwitchCase, | 1444 | switch_case: ast.full.SwitchCase, |
| 1445 | space: Space, | 1445 | space: Space, |
| 1446 | ) Error!void { | 1446 | ) Error!void { |
| | 1447 | const node_tags = tree.nodes.items(.tag); |
| 1447 | const token_tags = tree.tokens.items(.tag); | 1448 | const token_tags = tree.tokens.items(.tag); |
| 1448 | const trailing_comma = token_tags[switch_case.ast.arrow_token - 1] == .comma; | 1449 | const trailing_comma = token_tags[switch_case.ast.arrow_token - 1] == .comma; |
| 1449 | | 1450 | |
| ... | @@ -1466,17 +1467,23 @@ fn renderSwitchCase( | ... | @@ -1466,17 +1467,23 @@ fn renderSwitchCase( |
| 1466 | } | 1467 | } |
| 1467 | | 1468 | |
| 1468 | // Render the arrow and everything after it | 1469 | // Render the arrow and everything after it |
| 1469 | try renderToken(ais, tree, switch_case.ast.arrow_token, .space); | 1470 | const pre_target_space = if (node_tags[switch_case.ast.target_expr] == .multiline_string_literal) |
| | 1471 | // Newline gets inserted when rendering the target expr. |
| | 1472 | Space.none |
| | 1473 | else |
| | 1474 | Space.space; |
| | 1475 | const after_arrow_space: Space = if (switch_case.payload_token == null) pre_target_space else .space; |
| | 1476 | try renderToken(ais, tree, switch_case.ast.arrow_token, after_arrow_space); |
| 1470 | | 1477 | |
| 1471 | if (switch_case.payload_token) |payload_token| { | 1478 | if (switch_case.payload_token) |payload_token| { |
| 1472 | try renderToken(ais, tree, payload_token - 1, .none); // pipe | 1479 | try renderToken(ais, tree, payload_token - 1, .none); // pipe |
| 1473 | if (token_tags[payload_token] == .asterisk) { | 1480 | if (token_tags[payload_token] == .asterisk) { |
| 1474 | try renderToken(ais, tree, payload_token, .none); // asterisk | 1481 | try renderToken(ais, tree, payload_token, .none); // asterisk |
| 1475 | try renderToken(ais, tree, payload_token + 1, .none); // identifier | 1482 | try renderToken(ais, tree, payload_token + 1, .none); // identifier |
| 1476 | try renderToken(ais, tree, payload_token + 2, .space); // pipe | 1483 | try renderToken(ais, tree, payload_token + 2, pre_target_space); // pipe |
| 1477 | } else { | 1484 | } else { |
| 1478 | try renderToken(ais, tree, payload_token, .none); // identifier | 1485 | try renderToken(ais, tree, payload_token, .none); // identifier |
| 1479 | try renderToken(ais, tree, payload_token + 1, .space); // pipe | 1486 | try renderToken(ais, tree, payload_token + 1, pre_target_space); // pipe |
| 1480 | } | 1487 | } |
| 1481 | } | 1488 | } |
| 1482 | | 1489 | |