authorgravatar for goon.pri.low@gmail.comKendall Condon <goon.pri.low@gmail.com> 2025-07-28 14:03:20-04:00
committergravatar for goon.pri.low@gmail.comKendall Condon <goon.pri.low@gmail.com> 2026-03-12 17:23:23-04:00
logbbc2e7a74da98cfcf7bd24f1904cc77a203002f8
treeaa4d46b3588d89ba5c0be5b6d23e21c2a39dedd1
parent84ac2e8714735ceeefad840e41961f6407e0c619

Ast: fix comptime wrapper for destructure


2 files changed, 10 insertions(+), 5 deletions(-)

lib/std/zig/Parse.zig+9-5
......@@ -919,11 +919,15 @@ fn expectStatement(p: *Parse, allow_defer_var: bool) Error!Node.Index {
919919 } else {
920920 const assign = try p.expectAssignExpr();
921921 try p.expectSemicolon(.expected_semi_after_stmt, true);
922 return p.addNode(.{
923 .tag = .@"comptime",
924 .main_token = comptime_token,
925 .data = .{ .node = assign },
926 });
922 if (p.nodeTag(assign) != .assign_destructure) {
923 return p.addNode(.{
924 .tag = .@"comptime",
925 .main_token = comptime_token,
926 .data = .{ .node = assign },
927 });
928 } else {
929 return assign;
930 }
927931 }
928932 }
929933
lib/std/zig/parser_test.zig+1
......@@ -2886,6 +2886,7 @@ test "zig fmt: destructure" {
28862886 \\ comptime w, var y = .{ 3, 4 };
28872887 \\ comptime var z, x = .{ 5, 6 };
28882888 \\ comptime y, z = .{ 7, 8 };
2889 \\ if (false) unreachable else comptime a, b = .{ 9, 10 };
28892890 \\}
28902891 \\
28912892 );