From 07cc2fce2a2745a05c65fdd1a36c3198d0ec91b4 Mon Sep 17 00:00:00 2001 From: Veikka Tuominen Date: Sat, 12 Mar 2022 11:25:37 +0200 Subject: [PATCH] Sema: fix else branch check when switching on error set --- src/Sema.zig | 2 +- test/behavior/switch.zig | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/Sema.zig b/src/Sema.zig index 860d9d63ac..958a737ef7 100644 --- 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 index d99998a34e..5c47a24b38 100644 --- 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; }, });