commit c477df98bbddb35e3abb7d88fbe7e250660458b8 (tree)
parent 9014daedbbb0630ee438ab64302dd0e0697759ba
Author: Kendall Condon <goon.pri.low@gmail.com>
Date: Mon, 28 Jul 2025 14:18:14 -0400
zig fmt: fix tracking of applied indentation
Diffstat:
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git 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
@@ -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;