authorgravatar for goon.pri.low@gmail.comKendall Condon <goon.pri.low@gmail.com> 2025-07-29 09:25:41-04:00
committergravatar for goon.pri.low@gmail.comKendall Condon <goon.pri.low@gmail.com> 2026-03-12 17:25:01-04:00
log2b6589bd3b2d529c56220d762c6a95b7609ea768
treef6ddfc42093929f16846f493ff5b81cf1919411d
parent99fea4431bdf927e2f17409d087243694e94918f

zig fmt: fix error sets with empty line before comma


2 files changed, 22 insertions(+), 1 deletions(-)

lib/std/zig/Ast/Render.zig+6-1
......@@ -748,8 +748,13 @@ fn renderExpression(r: *Render, node: Ast.Node.Index, space: Space) Error!void {
748748 try renderToken(r, lbrace, .newline);
749749 var i = lbrace + 1;
750750 while (i < rbrace) : (i += 1) {
751 const tag = tree.tokenTag(i);
752 if (tag == .comma) {
753 assert(tree.tokenTag(i - 1) == .identifier);
754 continue;
755 }
751756 if (i > lbrace + 1) try renderExtraNewlineToken(r, i);
752 switch (tree.tokenTag(i)) {
757 switch (tag) {
753758 .doc_comment => try renderToken(r, i, .newline),
754759 .identifier => {
755760 try ais.pushSpace(.comma);
lib/std/zig/parser_test.zig+16
......@@ -6822,6 +6822,22 @@ test "zig fmt: canonicalize stray backslashes in identifiers" {
68226822 );
68236823}
68246824
6825test "zig fmt: error set with extra newline before comma" {
6826 try testTransform(
6827 \\const E = error{
6828 \\ A
6829 \\
6830 \\ ,
6831 \\};
6832 \\
6833 ,
6834 \\const E = error{
6835 \\ A,
6836 \\};
6837 \\
6838 );
6839}
6840
68256841test "recovery: top level" {
68266842 try testError(
68276843 \\test "" {inline}