commit 2b6589bd3b2d529c56220d762c6a95b7609ea768 (tree)
parent 99fea4431bdf927e2f17409d087243694e94918f
Author: Kendall Condon <goon.pri.low@gmail.com>
Date: Tue, 29 Jul 2025 09:25:41 -0400
zig fmt: fix error sets with empty line before comma
Diffstat:
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/lib/std/zig/Ast/Render.zig b/lib/std/zig/Ast/Render.zig
@@ -748,8 +748,13 @@ fn renderExpression(r: *Render, node: Ast.Node.Index, space: Space) Error!void {
try renderToken(r, lbrace, .newline);
var i = lbrace + 1;
while (i < rbrace) : (i += 1) {
+ const tag = tree.tokenTag(i);
+ if (tag == .comma) {
+ assert(tree.tokenTag(i - 1) == .identifier);
+ continue;
+ }
if (i > lbrace + 1) try renderExtraNewlineToken(r, i);
- switch (tree.tokenTag(i)) {
+ switch (tag) {
.doc_comment => try renderToken(r, i, .newline),
.identifier => {
try ais.pushSpace(.comma);
diff --git a/lib/std/zig/parser_test.zig b/lib/std/zig/parser_test.zig
@@ -6822,6 +6822,22 @@ test "zig fmt: canonicalize stray backslashes in identifiers" {
);
}
+test "zig fmt: error set with extra newline before comma" {
+ try testTransform(
+ \\const E = error{
+ \\ A
+ \\
+ \\ ,
+ \\};
+ \\
+ ,
+ \\const E = error{
+ \\ A,
+ \\};
+ \\
+ );
+}
+
test "recovery: top level" {
try testError(
\\test "" {inline}