diff options
| author | riChar <wxsychi@163.com> | 2022-09-02 17:52:33 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-02 12:52:33 +0300 |
| commit | 0d96f1f4fb3b217e11253c33e71973c3cbfb2f96 (patch) | |
| tree | 6980b30806c5a99442b80e4c3c012f8869bcb212 | |
| parent | 36f4f32fad3e88a84b6a10d78df31a4ed2c24465 (diff) | |
| download | zig-0d96f1f4fb3b217e11253c33e71973c3cbfb2f96.tar.gz zig-0d96f1f4fb3b217e11253c33e71973c3cbfb2f96.zip | |
zig fmt: remove trailing comma at the end of assembly clobber
| -rw-r--r-- | lib/std/zig/parser_test.zig | 22 | ||||
| -rw-r--r-- | lib/std/zig/render.zig | 16 |
2 files changed, 35 insertions, 3 deletions
diff --git a/lib/std/zig/parser_test.zig b/lib/std/zig/parser_test.zig index 2bb8c848bc..ab7bea7367 100644 --- a/lib/std/zig/parser_test.zig +++ b/lib/std/zig/parser_test.zig @@ -16,6 +16,28 @@ test "zig fmt: preserves clobbers in inline asm with stray comma" { ); } +test "zig fmt: remove trailing comma at the end of assembly clobber" { + try testTransform( + \\fn foo() void { + \\ asm volatile ("" + \\ : [_] "" (-> type), + \\ : + \\ : "clobber1", "clobber2", + \\ ); + \\} + \\ + , + \\fn foo() void { + \\ asm volatile ("" + \\ : [_] "" (-> type), + \\ : + \\ : "clobber1", "clobber2" + \\ ); + \\} + \\ + ); +} + test "zig fmt: respect line breaks in struct field value declaration" { try testCanonical( \\const Foo = struct { diff --git a/lib/std/zig/render.zig b/lib/std/zig/render.zig index 03f951d0f1..333fb80d88 100644 --- a/lib/std/zig/render.zig +++ b/lib/std/zig/render.zig @@ -2114,9 +2114,19 @@ fn renderAsm( return renderToken(ais, tree, tok_i + 1, space); }, .comma => { - try renderToken(ais, tree, tok_i, .none); - try renderToken(ais, tree, tok_i + 1, .space); - tok_i += 2; + switch (token_tags[tok_i + 2]) { + .r_paren => { + ais.setIndentDelta(indent_delta); + ais.popIndent(); + try renderToken(ais, tree, tok_i, .newline); + return renderToken(ais, tree, tok_i + 2, space); + }, + else => { + try renderToken(ais, tree, tok_i, .none); + try renderToken(ais, tree, tok_i + 1, .space); + tok_i += 2; + }, + } }, else => unreachable, } |
