diff --git a/lib/std/zig/Ast/Render.zig b/lib/std/zig/Ast/Render.zig index f03ca0a10e..facf828e60 100644 --- a/lib/std/zig/Ast/Render.zig +++ b/lib/std/zig/Ast/Render.zig @@ -4075,8 +4075,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 4d3695b54f..32853207d9 100644 --- a/lib/std/zig/parser_test.zig +++ b/lib/std/zig/parser_test.zig @@ -6742,6 +6742,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;