]> git.lizzy.rs Git - rust.git/blob - src/test/ui/packed/packed-struct-generic-size.rs
Pin panic-in-drop=abort test to old pass manager
[rust.git] / src / test / ui / packed / packed-struct-generic-size.rs
1 // run-pass
2 #![allow(dead_code)]
3 #![allow(unused_comparisons)]
4
5 use std::mem;
6
7 #[repr(packed)]
8 struct P1<T, S> {
9     a: T,
10     b: u8,
11     c: S
12 }
13
14 #[repr(packed(2))]
15 struct P2<T, S> {
16     a: T,
17     b: u8,
18     c: S
19 }
20
21 #[repr(C, packed(4))]
22 struct P4C<T, S> {
23     a: T,
24     b: u8,
25     c: S
26 }
27
28 macro_rules! check {
29     ($t:ty, $align:expr, $size:expr) => ({
30         assert_eq!(mem::align_of::<$t>(), $align);
31         assert_eq!(mem::size_of::<$t>(), $size);
32     });
33 }
34
35 pub fn main() {
36     check!(P1<u8, u8>, 1, 3);
37     check!(P1<u64, u16>, 1, 11);
38
39     check!(P2<u8, u8>, 1, 3);
40     check!(P2<u64, u16>, 2, 12);
41
42     check!(P4C<u8, u8>, 1, 3);
43     check!(P4C<u16, u64>, 4, 12);
44 }