| ... | ... | @@ -1505,16 +1505,18 @@ fn renderSwitchCase( |
| 1505 | 1505 | const node_tags = tree.nodes.items(.tag); |
| 1506 | 1506 | const token_tags = tree.tokens.items(.tag); |
| 1507 | 1507 | const trailing_comma = token_tags[switch_case.ast.arrow_token - 1] == .comma; |
| 1508 | const has_comment_before_arrow = blk: { |
| 1509 | if (switch_case.ast.values.len == 0) break :blk false; |
| 1510 | break :blk hasComment(tree, tree.firstToken(switch_case.ast.values[0]), switch_case.ast.arrow_token); |
| 1511 | }; |
| 1508 | 1512 | |
| 1509 | 1513 | // Render everything before the arrow |
| 1510 | 1514 | if (switch_case.ast.values.len == 0) { |
| 1511 | 1515 | try renderToken(ais, tree, switch_case.ast.arrow_token - 1, .space); // else keyword |
| 1512 | | } else if (switch_case.ast.values.len == 1) { |
| 1516 | } else if (switch_case.ast.values.len == 1 and !has_comment_before_arrow) { |
| 1513 | 1517 | // render on one line and drop the trailing comma if any |
| 1514 | 1518 | try renderExpression(gpa, ais, tree, switch_case.ast.values[0], .space); |
| 1515 | | } else if (trailing_comma or |
| 1516 | | hasComment(tree, tree.firstToken(switch_case.ast.values[0]), switch_case.ast.arrow_token)) |
| 1517 | | { |
| 1519 | } else if (trailing_comma or has_comment_before_arrow) { |
| 1518 | 1520 | // Render each value on a new line |
| 1519 | 1521 | try renderExpressions(gpa, ais, tree, switch_case.ast.values, .comma); |
| 1520 | 1522 | } else { |