diff --git a/lib/std/zig/Ast/Render.zig b/lib/std/zig/Ast/Render.zig index 85ff1993a1..28d7b68458 100644 --- a/lib/std/zig/Ast/Render.zig +++ b/lib/std/zig/Ast/Render.zig @@ -3883,8 +3883,8 @@ const AutoIndentingStream = struct { /// Writes ' ' bytes if the current line is empty fn applyIndent(ais: *AutoIndentingStream) Error!void { const current_indent = ais.currentIndent(); - if (ais.current_line_empty and current_indent > 0) { - if (ais.disabled_offset == null) { + if (ais.current_line_empty) { + if (current_indent > 0 and ais.disabled_offset == null) { try ais.underlying_writer.splatByteAll(' ', current_indent); } ais.applied_indent = current_indent; diff --git a/lib/std/zig/parser_test.zig b/lib/std/zig/parser_test.zig index ac3a52dfd4..429f279125 100644 --- a/lib/std/zig/parser_test.zig +++ b/lib/std/zig/parser_test.zig @@ -6676,6 +6676,23 @@ test "zig fmt: doc comments on fn parameters" { ); } +test "zig fmt: proper tracking of indentation" { + try testCanonical( + \\const a = { + \\ {} + \\}; + \\const b = if (x) {}; + \\const c = .{ + \\ { + \\ {} + \\ } // + \\ , + \\ if (x) {}, + \\}; + \\ + ); +} + test "zig fmt: canonicalize stray backslashes in identifiers" { try testTransform( \\const @"\x" = undefined;