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 {...@@ -4298,14 +4298,21 @@ pub const Parser = struct {
4298 ast.Node.Id.DocComment => unreachable, // doc comments are attached to nodes4298 ast.Node.Id.DocComment => unreachable, // doc comments are attached to nodes
4299 ast.Node.Id.Switch => {4299 ast.Node.Id.Switch => {
4300 const switch_node = @fieldParentPtr(ast.Node.Switch, "base", base);4300 const switch_node = @fieldParentPtr(ast.Node.Switch, "base", base);
4301 const cases = switch_node.cases.toSliceConst();
4302
4301 try stream.print("{} (", self.tokenizer.getTokenSlice(switch_node.switch_token));4303 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
4303 try stack.append(RenderState { .Text = "}"});4311 try stack.append(RenderState { .Text = "}"});
4304 try stack.append(RenderState.PrintIndent);4312 try stack.append(RenderState.PrintIndent);
4305 try stack.append(RenderState { .Indent = indent });4313 try stack.append(RenderState { .Indent = indent });
4306 try stack.append(RenderState { .Text = "\n"});4314 try stack.append(RenderState { .Text = "\n"});
43074315
4308 const cases = switch_node.cases.toSliceConst();
4309 var i = cases.len;4316 var i = cases.len;
4310 while (i != 0) {4317 while (i != 0) {
4311 i -= 1;4318 i -= 1;
std/zig/parser_test.zig+8-3
...@@ -2,9 +2,14 @@...@@ -2,9 +2,14 @@
2//if (sr > n_uword_bits - 1) // d > r2//if (sr > n_uword_bits - 1) // d > r
3// return 0;3// return 0;
44
5// TODO switch with no body5test "zig fmt: switch with empty body" {
6// format(&size, error{}, countSize, fmt, args) catch |err| switch (err) {};6 try testCanonical(
77 \\test "" {
8 \\ foo() catch |err| switch (err) {};
9 \\}
10 \\
11 );
12}
813
9test "zig fmt: same-line comment on comptime expression" {14test "zig fmt: same-line comment on comptime expression" {
10 try testCanonical(15 try testCanonical(