]> git.lizzy.rs Git - rust.git/blob - src/test/ui/discrim/discrim-overflow-2.rs
f8f565f4d9c14be524db2eb7fc8217ce26ad0979
[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 use std::{i8,u8,i16,u16,i32,u32,i64, u64};
9
10 fn f_i8() {
11     #[repr(i8)]
12     enum A {
13         Ok = i8::MAX - 1,
14         Ok2,
15         OhNo, //~ ERROR enum discriminant overflowed [E0370]
16     }
17 }
18
19 fn f_u8() {
20     #[repr(u8)]
21     enum A {
22         Ok = u8::MAX - 1,
23         Ok2,
24         OhNo, //~ ERROR enum discriminant overflowed [E0370]
25     }
26 }
27
28 fn f_i16() {
29     #[repr(i16)]
30     enum A {
31         Ok = i16::MAX - 1,
32         Ok2,
33         OhNo, //~ ERROR enum discriminant overflowed [E0370]
34     }
35 }
36
37 fn f_u16() {
38     #[repr(u16)]
39     enum A {
40         Ok = u16::MAX - 1,
41         Ok2,
42         OhNo, //~ ERROR enum discriminant overflowed [E0370]
43     }
44 }
45
46 fn f_i32() {
47     #[repr(i32)]
48     enum A {
49         Ok = i32::MAX - 1,
50         Ok2,
51         OhNo, //~ ERROR enum discriminant overflowed [E0370]
52     }
53 }
54
55 fn f_u32() {
56     #[repr(u32)]
57     enum A {
58         Ok = u32::MAX - 1,
59         Ok2,
60         OhNo, //~ ERROR enum discriminant overflowed [E0370]
61     }
62 }
63
64 fn f_i64() {
65     #[repr(i64)]
66     enum A {
67         Ok = i64::MAX - 1,
68         Ok2,
69         OhNo, //~ ERROR enum discriminant overflowed [E0370]
70     }
71 }
72
73 fn f_u64() {
74     #[repr(u64)]
75     enum A {
76         Ok = u64::MAX - 1,
77         Ok2,
78         OhNo, //~ ERROR enum discriminant overflowed [E0370]
79     }
80 }
81
82 fn main() { }