]> git.lizzy.rs Git - rust.git/blob - src/test/ui/repr/repr-packed-contains-align.rs
Detail transitive containment in E0588 diagnostic
[rust.git] / src / test / ui / repr / repr-packed-contains-align.rs
1 #![feature(untagged_unions)]
2 #![allow(dead_code)]
3
4 #[repr(align(16))]
5 struct SA(i32);
6
7 struct SB(SA);
8
9 #[repr(align(16))]
10 union UA {
11     i: i32
12 }
13
14 union UB {
15     a: UA
16 }
17
18 #[repr(packed)]
19 struct SC(SA); //~ ERROR: packed type cannot transitively contain a `#[repr(align)]` type
20
21 #[repr(packed)]
22 struct SD(SB); //~ ERROR: packed type cannot transitively contain a `#[repr(align)]` type
23
24 #[repr(packed)]
25 struct SE(UA); //~ ERROR: packed type cannot transitively contain a `#[repr(align)]` type
26
27 #[repr(packed)]
28 struct SF(UB); //~ ERROR: packed type cannot transitively contain a `#[repr(align)]` type
29
30 #[repr(packed)]
31 union UC { //~ ERROR: packed type cannot transitively contain a `#[repr(align)]` type
32     a: UA
33 }
34
35 #[repr(packed)]
36 union UD { //~ ERROR: packed type cannot transitively contain a `#[repr(align)]` type
37     n: UB
38 }
39
40 #[repr(packed)]
41 union UE { //~ ERROR: packed type cannot transitively contain a `#[repr(align)]` type
42     a: SA
43 }
44
45 #[repr(packed)]
46 union UF { //~ ERROR: packed type cannot transitively contain a `#[repr(align)]` type
47     n: SB
48 }
49
50 fn main() {}