]> git.lizzy.rs Git - rust.git/blob - src/test/ui/repr_c_int_align.rs
Auto merge of #81507 - weiznich:add_diesel_to_cargo_test, r=Mark-Simulacrum
[rust.git] / src / test / ui / repr_c_int_align.rs
1 // run-pass
2 // compile-flags: -O
3
4 #![allow(dead_code)]
5
6 #[repr(C, u8)]
7 enum ReprCu8 {
8     A(u16),
9     B,
10 }
11
12 #[repr(u8)]
13 enum Repru8 {
14     A(u16),
15     B,
16 }
17
18 #[repr(C)]
19 struct ReprC {
20     tag: u8,
21     padding: u8,
22     payload: u16,
23 }
24
25 fn main() {
26     // Test `repr(C, u8)`.
27     let r1 = ReprC { tag: 0, padding: 0, payload: 0 };
28     let r2 = ReprC { tag: 0, padding: 1, payload: 1 };
29
30     let t1: &ReprCu8 = unsafe { std::mem::transmute(&r1) };
31     let t2: &ReprCu8 = unsafe { std::mem::transmute(&r2) };
32
33     match (t1, t2) {
34         (ReprCu8::A(_), ReprCu8::A(_)) => (),
35         _ => assert!(false)
36     };
37
38     // Test `repr(u8)`.
39     let t1: &Repru8 = unsafe { std::mem::transmute(&r1) };
40     let t2: &Repru8 = unsafe { std::mem::transmute(&r2) };
41
42     match (t1, t2) {
43         (Repru8::A(_), Repru8::A(_)) => (),
44         _ => assert!(false)
45     };
46 }