diff options
Diffstat (limited to 'tests/ui/lint/issue-14309.rs')
-rw-r--r-- | tests/ui/lint/issue-14309.rs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/ui/lint/issue-14309.rs b/tests/ui/lint/issue-14309.rs new file mode 100644 index 000000000..328a4c982 --- /dev/null +++ b/tests/ui/lint/issue-14309.rs @@ -0,0 +1,39 @@ +#![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() { } |