| author | |
| committer | |
| log | 07cc2fce2a2745a05c65fdd1a36c3198d0ec91b4 |
| tree | cfb4bf4aab6c05598098f1420e8aa09ec2c66f3f |
| parent | 98a01f99c9b6834608055417169c2b3531ea67b6 |
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 | ... | @@ -6972,7 +6972,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError |
| 6972 | return sema.failWithOwnedErrorMsg(block, msg); | 6972 | return sema.failWithOwnedErrorMsg(block, msg); |
| 6973 | } | 6973 | } |
| 6974 | 6974 | ||
| 6975 | if (special_prong == .@"else") { | 6975 | if (special_prong == .@"else" and seen_errors.count() == operand_ty.errorSetNames().len) { |
| 6976 | return sema.fail( | 6976 | return sema.fail( |
| 6977 | block, | 6977 | block, |
| 6978 | special_prong_src, | 6978 | special_prong_src, |
test/behavior/switch.zig+1-4| ... | @@ -610,14 +610,11 @@ test "switch on pointer type" { | ... | @@ -610,14 +610,11 @@ test "switch on pointer type" { |
| 610 | } | 610 | } |
| 611 | 611 | ||
| 612 | test "switch on error set with single else" { | 612 | test "switch on error set with single else" { |
| 613 | if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO | ||
| 614 | |||
| 615 | const S = struct { | 613 | const S = struct { |
| 616 | fn doTheTest() !void { | 614 | fn doTheTest() !void { |
| 617 | var some: error{Foo} = error.Foo; | 615 | var some: error{Foo} = error.Foo; |
| 618 | try expect(switch (some) { | 616 | try expect(switch (some) { |
| 619 | else => |a| blk: { | 617 | else => blk: { |
| 620 | a catch {}; | ||
| 621 | break :blk true; | 618 | break :blk true; |
| 622 | }, | 619 | }, |
| 623 | }); | 620 | }); |