diff options
| -rw-r--r-- | src/Sema.zig | 2 | ||||
| -rw-r--r-- | 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; }, }); |
