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