diff --git a/std/zig/parser_test.zig b/std/zig/parser_test.zig index 72818bc074b2dc616d3727d03dacdffaef2be8dc..dc522b3ef422d9d2a3391d49a95e1ef65d54d957 100644 --- a/std/zig/parser_test.zig +++ b/std/zig/parser_test.zig @@ -1,3 +1,15 @@ +test "zig fmt: switch comment before prong" { + try testCanonical( + \\comptime { + \\ switch (a) { + \\ // hi + \\ 0 => {}, + \\ } + \\} + \\ + ); +} + test "zig fmt: struct literal no trailing comma" { try testTransform( \\const a = foo{ .x = 1, .y = 2 }; diff --git a/std/zig/render.zig b/std/zig/render.zig index 86e972c173111463a1885decdf932389ea17a90e..2f94d1cf8aebaef5dd4aa5a7ada3bf3eb3cd2e3f 100644 --- a/std/zig/render.zig +++ b/std/zig/render.zig @@ -1050,11 +1050,11 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind try renderExpression(allocator, stream, tree, indent, switch_node.expr, Space.None); - try renderToken(tree, stream, rparen, indent, Space.Space); // ) - try renderToken(tree, stream, lbrace, indent, Space.Newline); // { - const new_indent = indent + indent_delta; + try renderToken(tree, stream, rparen, indent, Space.Space); // ) + try renderToken(tree, stream, lbrace, new_indent, Space.Newline); // { + var it = switch_node.cases.iterator(0); while (it.next()) |node| { try stream.writeByteNTimes(' ', new_indent);