]> git.lizzy.rs Git - rust.git/blob - src/test/ui/union/union-basic.rs
Merge commit '3d0b0e66afdfaa519d8855b338b35b4605775945' into clippyup
[rust.git] / src / test / ui / union / union-basic.rs
1 // run-pass
2 #![allow(unused_imports)]
3
4 // aux-build:union.rs
5
6 extern crate union;
7 use std::mem::{size_of, align_of, zeroed};
8
9 union U {
10     a: u8,
11     b: u16
12 }
13
14 fn local() {
15     assert_eq!(size_of::<U>(), 2);
16     assert_eq!(align_of::<U>(), 2);
17
18     let u = U { a: 10 };
19     unsafe {
20         assert_eq!(u.a, 10);
21         let U { a } = u;
22         assert_eq!(a, 10);
23     }
24
25     let mut w = U { b: 0 };
26     unsafe {
27         assert_eq!(w.a, 0);
28         assert_eq!(w.b, 0);
29         w.a = 1;
30         assert_eq!(w.a, 1);
31         assert_eq!(w.b.to_le(), 1);
32     }
33 }
34
35 fn xcrate() {
36     assert_eq!(size_of::<union::U>(), 2);
37     assert_eq!(align_of::<union::U>(), 2);
38
39     let u = union::U { a: 10 };
40     unsafe {
41         assert_eq!(u.a, 10);
42         let union::U { a } = u;
43         assert_eq!(a, 10);
44     }
45
46     let mut w = union::U { b: 0 };
47     unsafe {
48         assert_eq!(w.a, 0);
49         assert_eq!(w.b, 0);
50         w.a = 1;
51         assert_eq!(w.a, 1);
52         assert_eq!(w.b.to_le(), 1);
53     }
54 }
55
56 fn main() {
57     local();
58     xcrate();
59 }