zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 07cc2fce2a2745a05c65fdd1a36c3198d0ec91b4 (tree)
parent 98a01f99c9b6834608055417169c2b3531ea67b6
Author: Veikka Tuominen <git@vexu.eu>
Date:   Sat, 12 Mar 2022 11:25:37 +0200

Sema: fix else branch check when switching on error set

Diffstat:
Msrc/Sema.zig | 2+-
Mtest/behavior/switch.zig | 5+----
2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/Sema.zig b/src/Sema.zig @@ -6972,7 +6972,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError return sema.failWithOwnedErrorMsg(block, msg); } - if (special_prong == .@"else") { + if (special_prong == .@"else" and seen_errors.count() == operand_ty.errorSetNames().len) { return sema.fail( block, special_prong_src, diff --git a/test/behavior/switch.zig b/test/behavior/switch.zig @@ -610,14 +610,11 @@ test "switch on pointer type" { } test "switch on error set with single else" { - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO - const S = struct { fn doTheTest() !void { var some: error{Foo} = error.Foo; try expect(switch (some) { - else => |a| blk: { - a catch {}; + else => blk: { break :blk true; }, });