zig

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

commit 0d96f1f4fb3b217e11253c33e71973c3cbfb2f96 (tree)
parent 36f4f32fad3e88a84b6a10d78df31a4ed2c24465
Author: riChar <wxsychi@163.com>
Date:   Fri,  2 Sep 2022 17:52:33 +0800

zig fmt: remove trailing comma at the end of assembly clobber


Diffstat:
Mlib/std/zig/parser_test.zig | 22++++++++++++++++++++++
Mlib/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 @@ -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 @@ -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, }