Commit 95f93a0b28

rpkak <rpkak@noreply.codeberg.org>
2025-12-01 12:56:11
std.zig.Ast: count addrspace tokens correctly
Before this PR this ```zig const namespace = struct { extern const num: u8 addrspace(.generic); }; // comment ``` got formatted to this ```zig const namespace = struct { extern const num: u8 addrspace(.generic); ( ``` Co-authored-by: rpkak <rpkak@noreply.codeberg.org> Co-committed-by: rpkak <rpkak@noreply.codeberg.org>
1 parent 1d1e2b7
Changed files (2)
lib/std/zig/Ast.zig
@@ -1195,6 +1195,9 @@ pub fn lastToken(tree: Ast, node: Node.Index) TokenIndex {
                 if (extra.section_node.unwrap()) |section_node| {
                     end_offset += 1; // for the rparen
                     n = section_node;
+                } else if (extra.addrspace_node.unwrap()) |addrspace_node| {
+                    end_offset += 1; // for the rparen
+                    n = addrspace_node;
                 } else if (extra.align_node.unwrap()) |align_node| {
                     end_offset += 1; // for the rparen
                     n = align_node;
lib/std/zig/parser_test.zig
@@ -6084,6 +6084,16 @@ test "zig fmt: do not canonicalize invalid cast builtins" {
     );
 }
 
+test "zig fmt: extern addrspace in struct" {
+    try testCanonical(
+        \\const namespace = struct {
+        \\    extern const num: u8 addrspace(.generic);
+        \\};
+        \\// comment
+        \\
+    );
+}
+
 test "recovery: top level" {
     try testError(
         \\test "" {inline}