]> git.lizzy.rs Git - rust.git/blob - tests/run-pass/c_enums.rs
fd537a37b043965a040b9884f631c2fc6fa2e28f
[rust.git] / tests / run-pass / c_enums.rs
1 #![feature(custom_attribute)]
2 #![allow(dead_code, unused_attributes)]
3
4 enum Foo {
5     Bar = 42,
6     Baz,
7     Quux = 100,
8 }
9
10 enum Signed {
11     Bar = -42,
12     Baz,
13     Quux = 100,
14 }
15
16 #[miri_run]
17 fn foo() -> [u8; 3] {
18     [Foo::Bar as u8, Foo::Baz as u8, Foo::Quux as u8]
19 }
20
21 #[miri_run]
22 fn signed() -> [i8; 3] {
23     [Signed::Bar as i8, Signed::Baz as i8, Signed::Quux as i8]
24 }
25
26 #[miri_run]
27 fn unsafe_match() -> bool {
28     match unsafe { std::mem::transmute::<u8, Foo>(43) } {
29         Foo::Baz => true,
30         _ => false,
31     }
32 }
33
34 #[miri_run]
35 fn main() {
36     // assert_eq!(foo(), [42, 43, 100]);
37     // assert_eq!(signed(), [-42, -41, 100]);
38     assert!(unsafe_match());
39 }