]> git.lizzy.rs Git - rust.git/blob - src/tools/miri/tests/pass/c_enums.rs
Auto merge of #104915 - weihanglo:update-cargo, r=ehuss
[rust.git] / src / tools / miri / tests / pass / c_enums.rs
1 enum Foo {
2     Bar = 42,
3     Baz,
4     Quux = 100,
5 }
6
7 enum Signed {
8     Bar = -42,
9     Baz,
10     Quux = 100,
11 }
12
13 fn foo() -> [u8; 3] {
14     let baz = Foo::Baz; // let-expansion changes the MIR significantly
15     [Foo::Bar as u8, baz as u8, Foo::Quux as u8]
16 }
17
18 fn signed() -> [i8; 3] {
19     let baz = Signed::Baz; // let-expansion changes the MIR significantly
20     [Signed::Bar as i8, baz as i8, Signed::Quux as i8]
21 }
22
23 fn unsafe_match() -> bool {
24     match unsafe { std::mem::transmute::<u8, Foo>(43) } {
25         Foo::Baz => true,
26         _ => false,
27     }
28 }
29
30 fn main() {
31     assert_eq!(foo(), [42, 43, 100]);
32     assert_eq!(signed(), [-42, -41, 100]);
33     assert!(unsafe_match());
34 }