1const S = packed struct(u2) {
2 a: u2,
3};
4export fn entry1(x: u8) void {
5 const s: S = .{ .a = @intCast(x) };
6 switch (s) {
7 .{ .a = 0b00 }, .{ .a = 0b01 }, .{ .a = 0b10 }, .{ .a = 0b11 } => {},
8 else => {},
9 }
10}
11export fn entry2(x: u8) void {
12 const s: S = .{ .a = @intCast(x) };
13 switch (s) {
14 .{ .a = 0b00 }, .{ .a = 0b01 }, .{ .a = 0b11 } => {},
15 }
16}
17
18const U = packed union(u2) {
19 a: u2,
20 b: i2,
21};
22export fn entry3(x: u8) void {
23 const u: U = .{ .a = @intCast(x) };
24 switch (u) {
25 .{ .a = 0b00 }, .{ .a = 0b01 }, .{ .a = 0b10 }, .{ .a = 0b11 } => {},
26 else => {},
27 }
28}
29export fn entry4(x: u8) void {
30 const u: U = .{ .a = @intCast(x) };
31 switch (u) {
32 .{ .a = 0b00 }, .{ .a = 0b01 }, .{ .a = 0b11 } => {},
33 }
34}
35
36// error
37//
38// :8:14: error: unreachable else prong; all cases already handled
39// :13:5: error: switch must handle all possibilities
40// :26:14: error: unreachable else prong; all cases already handled
41// :31:5: error: switch must handle all possibilities