master
1const E = enum(u8) {
2 a,
3 b,
4 _,
5};
6const U = union(E) {
7 a: i32,
8 b: u32,
9};
10pub export fn entry1() void {
11 const e: E = .b;
12 switch (e) { // error: switch not handling the tag `b`
13 .a => {},
14 _ => {},
15 }
16}
17pub export fn entry2() void {
18 const e: E = .b;
19 switch (e) { // error: switch on non-exhaustive enum must include `else` or `_` prong
20 .a => {},
21 .b => {},
22 }
23}
24pub export fn entry3() void {
25 const u = U{ .a = 2 };
26 switch (u) { // error: `_` prong not allowed when switching on tagged union
27 .a => {},
28 .b => {},
29 _ => {},
30 }
31}
32
33// error
34//
35// :12:5: error: switch must handle all possibilities
36// :3:5: note: unhandled enumeration value: 'b'
37// :1:11: note: enum 'tmp.E' declared here
38// :19:5: error: switch on non-exhaustive enum must include 'else' or '_' prong or both
39// :26:5: error: '_' prong only allowed when switching on non-exhaustive enums
40// :29:9: note: '_' prong here
41// :26:5: note: consider using 'else'