authorgravatar for goon.pri.low@gmail.comKendall Condon <goon.pri.low@gmail.com> 2026-03-22 17:26:40-04:00
committergravatar for goon.pri.low@gmail.comKendall Condon <goon.pri.low@gmail.com> 2026-03-25 17:30:51-04:00
logd70a9ea5d759fd5e61c8cd7404343c34280fe87e
treebf768e00a00f629fbaaa91984eba4912f00806dc
parent23db3090436c6f8391474342cda6e73ed3c2b3d4

zig fmt: properly revert nested asm indentation


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

lib/std/zig/Ast/Render.zig+3-1
......@@ -2775,6 +2775,8 @@ fn renderAsm(
27752775 ais.forceLastIndent(); // Might have been dedented by a multiline string literal
27762776 assert(ais.current_line_empty);
27772777
2778 const prev_indent_delta = ais.indent_delta; // May be part of another asm expression
2779 // so indent_delta can't be unconditionally used
27782780 ais.setIndentDelta(asm_indent_delta);
27792781 const colon1 = tree.lastToken(asm_node.ast.template) + 1;
27802782
......@@ -2856,7 +2858,7 @@ fn renderAsm(
28562858 const clobbers = asm_node.ast.clobbers.unwrap().?;
28572859 try renderExpression(r, clobbers, .none);
28582860 ais.forceLastIndent(); // Might have been dedented by a multiline string literal
2859 ais.setIndentDelta(indent_delta);
2861 ais.setIndentDelta(prev_indent_delta);
28602862 ais.popIndent();
28612863 return renderToken(r, asm_node.ast.rparen, space); // rparen
28622864}
lib/std/zig/parser_test.zig+12
......@@ -6859,6 +6859,18 @@ test "zig fmt: array init of labeled block" {
68596859 );
68606860}
68616861
6862test "zig fmt: nested asm indentation" {
6863 try testCanonical(
6864 \\const A = asm (""
6865 \\ : [_] "" (_),
6866 \\ :
6867 \\ : asm (""
6868 \\ : [_] "" (_),
6869 \\ ));
6870 \\
6871 );
6872}
6873
68626874test "recovery: top level" {
68636875 try testError(
68646876 \\test "" {inline}