diff --git a/lib/std/zig/Ast/Render.zig b/lib/std/zig/Ast/Render.zig index b81c834f70..c32878bfee 100644 --- 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 index 14d28ae47d..6efdfbf070 100644 --- a/lib/std/zig/parser_test.zig +++ b/lib/std/zig/parser_test.zig @@ -6901,6 +6901,22 @@ test "zig fmt: asm_legacy conversion with quoted identifier" { ); } +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}