Commit 7c66bd39be

Andrew Kelley <andrew@ziglang.org>
2023-07-16 08:07:32
Sema: fix analyzeIsNonErrComptimeOnly false positive
The logic here was not properly ported from master branch which broke errdefers.
1 parent 45a8c6c
Changed files (1)
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)