diff options
| author | Matthew Lugg <mlugg@mlugg.co.uk> | 2025-08-13 13:54:15 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-13 13:54:15 +0100 |
| commit | 6e90ce25364b02555a3ca46013f85b2e80e98705 (patch) | |
| tree | aa3fe7f082466ba5fde47450d1c40c163e667d59 /test/behavior/switch.zig | |
| parent | b8124d9c0b01e8ac7cd0daf93a0ed018da5f2352 (diff) | |
| parent | aaee26bb1914a3d4e385bd120515813ece80311d (diff) | |
| download | zig-6e90ce25364b02555a3ca46013f85b2e80e98705.tar.gz zig-6e90ce25364b02555a3ca46013f85b2e80e98705.zip | |
Merge pull request #24381 from Justus2308/switch-better-underscore
Enhance switch on non-exhaustive enums
Diffstat (limited to 'test/behavior/switch.zig')
| -rw-r--r-- | test/behavior/switch.zig | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/test/behavior/switch.zig b/test/behavior/switch.zig index afc38661c3..b5540664c9 100644 --- a/test/behavior/switch.zig +++ b/test/behavior/switch.zig @@ -1073,3 +1073,50 @@ test "switch on 8-bit mod result" { else => unreachable, } } + +test "switch on non-exhaustive enum" { + if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO + + const E = enum(u4) { + a, + b, + c, + _, + + fn doTheTest(e: @This()) !void { + switch (e) { + .a, .b => {}, + else => return error.TestFailed, + } + switch (e) { + .a, .b => {}, + .c => return error.TestFailed, + _ => return error.TestFailed, + } + switch (e) { + .a, .b => {}, + .c, _ => return error.TestFailed, + } + switch (e) { + .a => {}, + .b, .c, _ => return error.TestFailed, + } + switch (e) { + .b => return error.TestFailed, + else => {}, + _ => return error.TestFailed, + } + switch (e) { + else => {}, + _ => return error.TestFailed, + } + switch (e) { + inline else => {}, + _ => return error.TestFailed, + } + } + }; + + try E.doTheTest(.a); + try comptime E.doTheTest(.a); +} |
