zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 0fc8885a8df6a44455535ba50c160bca90e8d998 (tree)
parent eef21df94fed2b77d8ca6a459686169bb6aca57b
Author: Andrew Kelley <superjoe30@gmail.com>
Date:   Fri,  4 May 2018 16:49:51 -0400

zig fmt: switch with empty body

Diffstat:
Mstd/zig/parser.zig | 9++++++++-
Mstd/zig/parser_test.zig | 11++++++++---
2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/std/zig/parser.zig b/std/zig/parser.zig @@ -4298,14 +4298,21 @@ pub const Parser = struct { ast.Node.Id.DocComment => unreachable, // doc comments are attached to nodes ast.Node.Id.Switch => { const switch_node = @fieldParentPtr(ast.Node.Switch, "base", base); + const cases = switch_node.cases.toSliceConst(); + try stream.print("{} (", self.tokenizer.getTokenSlice(switch_node.switch_token)); + if (cases.len == 0) { + try stack.append(RenderState { .Text = ") {}"}); + try stack.append(RenderState { .Expression = switch_node.expr }); + continue; + } + try stack.append(RenderState { .Text = "}"}); try stack.append(RenderState.PrintIndent); try stack.append(RenderState { .Indent = indent }); try stack.append(RenderState { .Text = "\n"}); - const cases = switch_node.cases.toSliceConst(); var i = cases.len; while (i != 0) { i -= 1; diff --git a/std/zig/parser_test.zig b/std/zig/parser_test.zig @@ -2,9 +2,14 @@ //if (sr > n_uword_bits - 1) // d > r // return 0; -// TODO switch with no body -// format(&size, error{}, countSize, fmt, args) catch |err| switch (err) {}; - +test "zig fmt: switch with empty body" { + try testCanonical( + \\test "" { + \\ foo() catch |err| switch (err) {}; + \\} + \\ + ); +} test "zig fmt: same-line comment on comptime expression" { try testCanonical(