From d67e95db342f0638a728aaa39afffa24d2f6bbb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ma=C5=A1karinec?= Date: Fri, 26 Sep 2025 21:46:27 +0200 Subject: [PATCH] ast: Add comptime reason for error set merge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marek Maškarinec --- lib/std/zig.zig | 2 ++ lib/std/zig/AstGen.zig | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/std/zig.zig b/lib/std/zig.zig index 9fc64460ece0..5d53bbbe41f4 100644 --- a/lib/std/zig.zig +++ b/lib/std/zig.zig @@ -765,6 +765,7 @@ pub const SimpleComptimeReason = enum(u32) { // Reasons other than `.type` are just more specific messages. type, array_sentinel, + merge_error_set, pointer_sentinel, slice_sentinel, array_length, @@ -843,6 +844,7 @@ pub const SimpleComptimeReason = enum(u32) { .clobber => "clobber must be comptime-known", .type => "types must be comptime-known", + .merge_error_set => "operand to error set merge (||) must be an error set", .array_sentinel => "array sentinel value must be comptime-known", .pointer_sentinel => "pointer sentinel value must be comptime-known", .slice_sentinel => "slice sentinel value must be comptime-known", diff --git a/lib/std/zig/AstGen.zig b/lib/std/zig/AstGen.zig index 8a8a88db6f93..53617d0938e9 100644 --- a/lib/std/zig/AstGen.zig +++ b/lib/std/zig/AstGen.zig @@ -793,8 +793,8 @@ fn expr(gz: *GenZir, scope: *Scope, ri: ResultInfo, node: Ast.Node.Index) InnerE else => unreachable, }; const lhs_node, const rhs_node = tree.nodeData(node).node_and_node; - const lhs = try reachableTypeExpr(gz, scope, lhs_node, node); - const rhs = try reachableTypeExpr(gz, scope, rhs_node, node); + const lhs = try reachableExprComptime(gz, scope, coerced_type_ri, lhs_node, node, .merge_error_set); + const rhs = try reachableExprComptime(gz, scope, coerced_type_ri, rhs_node, node, .merge_error_set); const result = try gz.addPlNode(inst_tag, node, Zir.Inst.Bin{ .lhs = lhs, .rhs = rhs }); return rvalue(gz, ri, result, node); },