diff options
| author | Veikka Tuominen <git@vexu.eu> | 2023-02-02 14:39:13 +0200 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2023-02-11 14:36:54 +0200 |
| commit | 31ed8d293ddb79d34306e0b23e76d8a361c8856f (patch) | |
| tree | 6058e6849762e925518b5b64cbf800643f248290 /src | |
| parent | b9c2837c1c9eddc903aeeb168b8d2daa48837ddb (diff) | |
| download | zig-31ed8d293ddb79d34306e0b23e76d8a361c8856f.tar.gz zig-31ed8d293ddb79d34306e0b23e76d8a361c8856f.zip | |
Sema: add missing peer type resolution for error unions
Closes #14077
Diffstat (limited to 'src')
| -rw-r--r-- | src/Sema.zig | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index 2dba678931..ddcdecb6b4 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -29761,6 +29761,25 @@ fn resolvePeerTypes( continue; } }, + .ErrorSet => { + chosen = candidate; + chosen_i = candidate_i + 1; + if (err_set_ty) |chosen_set_ty| { + if (.ok == try sema.coerceInMemoryAllowedErrorSets(block, chosen_set_ty, chosen_ty, src, src)) { + continue; + } + if (.ok == try sema.coerceInMemoryAllowedErrorSets(block, chosen_ty, chosen_set_ty, src, src)) { + err_set_ty = chosen_ty; + continue; + } + + err_set_ty = try chosen_set_ty.errorSetMerge(sema.arena, chosen_ty); + continue; + } else { + err_set_ty = chosen_ty; + continue; + } + }, else => {}, } |
