From 8f07a60defac28b7397bc93164695563a5a1c448 Mon Sep 17 00:00:00 2001 From: Mateusz Poliwczak Date: Fri, 7 Nov 2025 08:21:57 +0100 Subject: [PATCH] std.zig.AstGen: properly handle grouped_expression This fixes an endless loop in the compiler. --- lib/std/zig/AstGen.zig | 2 +- .../compile_errors/doubled_grouped_expr_as_stmt.zig | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 test/cases/compile_errors/doubled_grouped_expr_as_stmt.zig diff --git a/lib/std/zig/AstGen.zig b/lib/std/zig/AstGen.zig index 8a8a88db6f93..88570dc93d7c 100644 --- a/lib/std/zig/AstGen.zig +++ b/lib/std/zig/AstGen.zig @@ -2607,7 +2607,7 @@ fn blockExprStmts(gz: *GenZir, parent_scope: *Scope, statements: []const Ast.Nod .assign_mul_wrap => try assignOp(gz, scope, statement, .mulwrap), .grouped_expression => { - inner_node = tree.nodeData(statement).node_and_token[0]; + inner_node = tree.nodeData(inner_node).node_and_token[0]; continue; }, diff --git a/test/cases/compile_errors/doubled_grouped_expr_as_stmt.zig b/test/cases/compile_errors/doubled_grouped_expr_as_stmt.zig new file mode 100644 index 000000000000..b485c0eb3535 --- /dev/null +++ b/test/cases/compile_errors/doubled_grouped_expr_as_stmt.zig @@ -0,0 +1,9 @@ +pub export fn entry() void { + ((1 + 1)); // makes sure that the doubled grouped_expression does not cause an endless loop in AstGen. +} + +// error +// +// :2:9: error: value of type 'comptime_int' ignored +// :2:9: note: all non-void values must be used +// :2:9: note: to discard the value, assign it to '_'