]> git.lizzy.rs Git - rust.git/blob - src/test/ui/discrim/discrim-overflow-2.rs
Update tests to remove old numeric constants
[rust.git] / src / test / ui / discrim / discrim-overflow-2.rs
1 // Issue 23030: Detect overflowing discriminant
2 //
3 // Check that we detect the overflow even if enum is not used.
4
5 // See also run-pass/discrim-explicit-23030.rs where the suggested
6 // workaround is tested.
7
8 fn f_i8() {
9     #[repr(i8)]
10     enum A {
11         Ok = i8::MAX - 1,
12         Ok2,
13         OhNo, //~ ERROR enum discriminant overflowed [E0370]
14     }
15 }
16
17 fn f_u8() {
18     #[repr(u8)]
19     enum A {
20         Ok = u8::MAX - 1,
21         Ok2,
22         OhNo, //~ ERROR enum discriminant overflowed [E0370]
23     }
24 }
25
26 fn f_i16() {
27     #[repr(i16)]
28     enum A {
29         Ok = i16::MAX - 1,
30         Ok2,
31         OhNo, //~ ERROR enum discriminant overflowed [E0370]
32     }
33 }
34
35 fn f_u16() {
36     #[repr(u16)]
37     enum A {
38         Ok = u16::MAX - 1,
39         Ok2,
40         OhNo, //~ ERROR enum discriminant overflowed [E0370]
41     }
42 }
43
44 fn f_i32() {
45     #[repr(i32)]
46     enum A {
47         Ok = i32::MAX - 1,
48         Ok2,
49         OhNo, //~ ERROR enum discriminant overflowed [E0370]
50     }
51 }
52
53 fn f_u32() {
54     #[repr(u32)]
55     enum A {
56         Ok = u32::MAX - 1,
57         Ok2,
58         OhNo, //~ ERROR enum discriminant overflowed [E0370]
59     }
60 }
61
62 fn f_i64() {
63     #[repr(i64)]
64     enum A {
65         Ok = i64::MAX - 1,
66         Ok2,
67         OhNo, //~ ERROR enum discriminant overflowed [E0370]
68     }
69 }
70
71 fn f_u64() {
72     #[repr(u64)]
73     enum A {
74         Ok = u64::MAX - 1,
75         Ok2,
76         OhNo, //~ ERROR enum discriminant overflowed [E0370]
77     }
78 }
79
80 fn main() { }