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(...@@ -2775,6 +2775,8 @@ fn renderAsm(
2775 ais.forceLastIndent(); // Might have been dedented by a multiline string literal2775 ais.forceLastIndent(); // Might have been dedented by a multiline string literal
2776 assert(ais.current_line_empty);2776 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
2778 ais.setIndentDelta(asm_indent_delta);2780 ais.setIndentDelta(asm_indent_delta);
2779 const colon1 = tree.lastToken(asm_node.ast.template) + 1;2781 const colon1 = tree.lastToken(asm_node.ast.template) + 1;
27802782
...@@ -2856,7 +2858,7 @@ fn renderAsm(...@@ -2856,7 +2858,7 @@ fn renderAsm(
2856 const clobbers = asm_node.ast.clobbers.unwrap().?;2858 const clobbers = asm_node.ast.clobbers.unwrap().?;
2857 try renderExpression(r, clobbers, .none);2859 try renderExpression(r, clobbers, .none);
2858 ais.forceLastIndent(); // Might have been dedented by a multiline string literal2860 ais.forceLastIndent(); // Might have been dedented by a multiline string literal
2859 ais.setIndentDelta(indent_delta);2861 ais.setIndentDelta(prev_indent_delta);
2860 ais.popIndent();2862 ais.popIndent();
2861 return renderToken(r, asm_node.ast.rparen, space); // rparen2863 return renderToken(r, asm_node.ast.rparen, space); // rparen
2862}2864}
lib/std/zig/parser_test.zig+12
...@@ -6859,6 +6859,18 @@ test "zig fmt: array init of labeled block" {...@@ -6859,6 +6859,18 @@ test "zig fmt: array init of labeled block" {
6859 );6859 );
6860}6860}
68616861
6862test "zig fmt: nested asm indentation" {
6863 try testCanonical(
6864 \\const A = asm (""
6865 \\ : [_] "" (_),
6866 \\ :
6867 \\ : asm (""
6868 \\ : [_] "" (_),
6869 \\ ));
6870 \\
6871 );
6872}
6873
6862test "recovery: top level" {6874test "recovery: top level" {
6863 try testError(6875 try testError(
6864 \\test "" {inline}6876 \\test "" {inline}