| #![deny(improper_ctypes)] | |
| #![allow(dead_code)] | |
| struct A { | |
| x: i32 | |
| } | |
| #[repr(C, packed)] | |
| struct B { | |
| x: i32, | |
| y: A | |
| } | |
| #[repr(C)] | |
| struct C { | |
| x: i32 | |
| } | |
| type A2 = A; | |
| type B2 = B; | |
| type C2 = C; | |
| #[repr(C)] | |
| struct D { | |
| x: C, | |
| y: A | |
| } | |
| extern "C" { | |
| fn foo(x: A); //~ ERROR type `A`, which is not FFI-safe | |
| fn bar(x: B); //~ ERROR type `A` | |
| fn baz(x: C); | |
| fn qux(x: A2); //~ ERROR type `A` | |
| fn quux(x: B2); //~ ERROR type `A` | |
| fn corge(x: C2); | |
| fn fred(x: D); //~ ERROR type `A` | |
| } | |
| fn main() { } |