aboutsummaryrefslogtreecommitdiff
path: root/lib/std
diff options
context:
space:
mode:
authorriChar <wxsychi@163.com>2022-09-02 17:52:33 +0800
committerGitHub <noreply@github.com>2022-09-02 12:52:33 +0300
commit0d96f1f4fb3b217e11253c33e71973c3cbfb2f96 (patch)
tree6980b30806c5a99442b80e4c3c012f8869bcb212 /lib/std
parent36f4f32fad3e88a84b6a10d78df31a4ed2c24465 (diff)
downloadzig-0d96f1f4fb3b217e11253c33e71973c3cbfb2f96.tar.gz
zig-0d96f1f4fb3b217e11253c33e71973c3cbfb2f96.zip
zig fmt: remove trailing comma at the end of assembly clobber
Diffstat (limited to 'lib/std')
-rw-r--r--lib/std/zig/parser_test.zig22
-rw-r--r--lib/std/zig/render.zig16
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,
}