diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index 7a0af50f9e..1b3a71cebd 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -4683,7 +4683,6 @@ pub const prctl_mm_map = extern struct { }; pub const NETLINK = struct { - /// Routing/device hook pub const ROUTE = 0; diff --git a/lib/std/zig/parser_test.zig b/lib/std/zig/parser_test.zig index d9555c1ff8..b359dd12df 100644 --- a/lib/std/zig/parser_test.zig +++ b/lib/std/zig/parser_test.zig @@ -4154,6 +4154,41 @@ test "zig fmt: container doc comments" { ); } +test "zig fmt: remove newlines surrounding doc comment" { + try testTransform( + \\ + \\ + \\ + \\/// doc comment + \\ + \\fn foo() void {} + \\ + , + \\/// doc comment + \\fn foo() void {} + \\ + ); +} + +test "zig fmt: remove newlines surrounding doc comment within container decl" { + try testTransform( + \\const Foo = struct { + \\ + \\ + \\ /// doc comment + \\ + \\ fn foo() void {} + \\}; + \\ + , + \\const Foo = struct { + \\ /// doc comment + \\ fn foo() void {} + \\}; + \\ + ); +} + test "zig fmt: anytype struct field" { try testError( \\pub const Pointer = struct { diff --git a/lib/std/zig/render.zig b/lib/std/zig/render.zig index cf7a161b8d..72d710b29a 100644 --- a/lib/std/zig/render.zig +++ b/lib/std/zig/render.zig @@ -2482,7 +2482,17 @@ fn renderDocComments(ais: *Ais, tree: Ast, end_token: Ast.TokenIndex) Error!void } const first_tok = tok; if (first_tok == end_token) return; - try renderExtraNewlineToken(ais, tree, first_tok); + + if (first_tok != 0) { + const prev_token_tag = token_tags[first_tok - 1]; + + // Prevent accidental use of `renderDocComments` for a function argument doc comment + assert(prev_token_tag != .l_paren); + + if (prev_token_tag != .l_brace) { + try renderExtraNewlineToken(ais, tree, first_tok); + } + } while (token_tags[tok] == .doc_comment) : (tok += 1) { try renderToken(ais, tree, tok, .newline);