diff --git a/lib/std/zig/Parse.zig b/lib/std/zig/Parse.zig index c8ad4c5fdaad3e684068480d8b5dd49f5802307d..d3f37ed02646f8f7014c7132c4893ff74680fa54 100644 --- a/lib/std/zig/Parse.zig +++ b/lib/std/zig/Parse.zig @@ -919,11 +919,15 @@ fn expectStatement(p: *Parse, allow_defer_var: bool) Error!Node.Index { } else { const assign = try p.expectAssignExpr(); try p.expectSemicolon(.expected_semi_after_stmt, true); - return p.addNode(.{ - .tag = .@"comptime", - .main_token = comptime_token, - .data = .{ .node = assign }, - }); + if (p.nodeTag(assign) != .assign_destructure) { + return p.addNode(.{ + .tag = .@"comptime", + .main_token = comptime_token, + .data = .{ .node = assign }, + }); + } else { + return assign; + } } } diff --git a/lib/std/zig/parser_test.zig b/lib/std/zig/parser_test.zig index 226c6da270a06c6785e2aa2b68d493832b43f5b3..ab0181ede86da014c8b91e2c8b1732614ac641e0 100644 --- a/lib/std/zig/parser_test.zig +++ b/lib/std/zig/parser_test.zig @@ -2886,6 +2886,7 @@ test "zig fmt: destructure" { \\ comptime w, var y = .{ 3, 4 }; \\ comptime var z, x = .{ 5, 6 }; \\ comptime y, z = .{ 7, 8 }; + \\ if (false) unreachable else comptime a, b = .{ 9, 10 }; \\} \\ );