authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-03-12 11:25:37+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-03-12 11:25:37+02:00
log07cc2fce2a2745a05c65fdd1a36c3198d0ec91b4
treecfb4bf4aab6c05598098f1420e8aa09ec2c66f3f
parent98a01f99c9b6834608055417169c2b3531ea67b6

Sema: fix else branch check when switching on error set


2 files changed, 2 insertions(+), 5 deletions(-)

src/Sema.zig+1-1
......@@ -6972,7 +6972,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
69726972 return sema.failWithOwnedErrorMsg(block, msg);
69736973 }
69746974
6975 if (special_prong == .@"else") {
6975 if (special_prong == .@"else" and seen_errors.count() == operand_ty.errorSetNames().len) {
69766976 return sema.fail(
69776977 block,
69786978 special_prong_src,
test/behavior/switch.zig+1-4
......@@ -610,14 +610,11 @@ test "switch on pointer type" {
610610}
611611
612612test "switch on error set with single else" {
613 if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO
614
615613 const S = struct {
616614 fn doTheTest() !void {
617615 var some: error{Foo} = error.Foo;
618616 try expect(switch (some) {
619 else => |a| blk: {
620 a catch {};
617 else => blk: {
621618 break :blk true;
622619 },
623620 });