Commit 98a01f99c9
src/Sema.zig
@@ -18910,7 +18910,7 @@ fn resolvePeerTypes(
}
const chosen_set_ty = err_set_ty orelse chosen_ty.errorUnionSet();
- const candidate_set_ty = chosen_ty.errorUnionSet();
+ const candidate_set_ty = candidate_ty.errorUnionSet();
if (.ok == try sema.coerceInMemoryAllowedErrorSets(block, chosen_set_ty, candidate_set_ty, src, src)) {
err_set_ty = chosen_set_ty;
test/behavior/error.zig
@@ -626,3 +626,11 @@ test "inferred error set equality" {
try expect(BarError == BarError);
try expect(BazError == BazError);
}
+
+test "peer type resolution of two different error unions" {
+ const a: error{B}!void = {};
+ const b: error{A}!void = {};
+ var cond = true;
+ const err = if (cond) a else b;
+ try err;
+}