authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-05-04 16:49:51-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-05-04 16:49:51-04:00
log0fc8885a8df6a44455535ba50c160bca90e8d998
tree27d197585071d10e66bed459199a6ae6edd5d065
parenteef21df94fed2b77d8ca6a459686169bb6aca57b

zig fmt: switch with empty body


2 files changed, 16 insertions(+), 4 deletions(-)

std/zig/parser.zig+8-1
......@@ -4298,14 +4298,21 @@ pub const Parser = struct {
42984298 ast.Node.Id.DocComment => unreachable, // doc comments are attached to nodes
42994299 ast.Node.Id.Switch => {
43004300 const switch_node = @fieldParentPtr(ast.Node.Switch, "base", base);
4301 const cases = switch_node.cases.toSliceConst();
4302
43014303 try stream.print("{} (", self.tokenizer.getTokenSlice(switch_node.switch_token));
43024304
4305 if (cases.len == 0) {
4306 try stack.append(RenderState { .Text = ") {}"});
4307 try stack.append(RenderState { .Expression = switch_node.expr });
4308 continue;
4309 }
4310
43034311 try stack.append(RenderState { .Text = "}"});
43044312 try stack.append(RenderState.PrintIndent);
43054313 try stack.append(RenderState { .Indent = indent });
43064314 try stack.append(RenderState { .Text = "\n"});
43074315
4308 const cases = switch_node.cases.toSliceConst();
43094316 var i = cases.len;
43104317 while (i != 0) {
43114318 i -= 1;
std/zig/parser_test.zig+8-3
......@@ -2,9 +2,14 @@
22//if (sr > n_uword_bits - 1) // d > r
33// return 0;
44
5// TODO switch with no body
6// format(&size, error{}, countSize, fmt, args) catch |err| switch (err) {};
7
5test "zig fmt: switch with empty body" {
6 try testCanonical(
7 \\test "" {
8 \\ foo() catch |err| switch (err) {};
9 \\}
10 \\
11 );
12}
813
914test "zig fmt: same-line comment on comptime expression" {
1015 try testCanonical(