From 7c66bd39be82c09cf004843da058a48769066c3f Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Sat, 15 Jul 2023 23:07:32 -0700 Subject: [PATCH] Sema: fix analyzeIsNonErrComptimeOnly false positive The logic here was not properly ported from master branch which broke errdefers. --- src/Sema.zig | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Sema.zig b/src/Sema.zig index 68080ee27b..805de066ca 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -30613,12 +30613,20 @@ fn analyzeIsNonErrComptimeOnly( ies.func == func_index) { // Try to avoid resolving inferred error set if possible. + if (ies.errors.count() != 0) break :blk; + switch (ies.resolved) { + .anyerror_type => break :blk, + .none => {}, + else => if (ip.indexToKey(ies.resolved).error_set_type.names.len != 0) { + break :blk; + }, + } for (ies.inferred_error_sets.keys()) |other_ies_index| { if (set_ty == other_ies_index) continue; const other_resolved = try sema.resolveInferredErrorSet(block, src, other_ies_index); if (other_resolved == .anyerror_type) { - ip.funcIesResolved(func_index).* = .anyerror_type; + ies.resolved = .anyerror_type; break :blk; } if (ip.indexToKey(other_resolved).error_set_type.names.len != 0)