1 #![feature(transparent_unions)]
2 #![feature(ptr_internals)]
3 #![deny(improper_ctypes)]
44 struct TransparentStruct<T>(T, std::marker::PhantomData<Z>);
47 enum TransparentEnum<T> {
48 Variant(T, std::marker::PhantomData<Z>),
52 union TransparentUnion<T: Copy> {
60 fn uf(x: U); //~ ERROR `extern` block uses type `U`
61 fn bf(x: B); //~ ERROR `extern` block uses type `B`
62 fn tf(x: T); //~ ERROR `extern` block uses type `T`
65 fn repr_isize(x: Isize);
66 fn option_ref(x: Option<&'static u8>);
67 fn option_fn(x: Option<extern "C" fn()>);
68 fn nonnull(x: Option<std::ptr::NonNull<u8>>);
69 fn unique(x: Option<std::ptr::Unique<u8>>);
70 //~^ ERROR `extern` block uses type `Option<Unique<u8>>`
71 fn nonzero_u8(x: Option<num::NonZeroU8>);
72 fn nonzero_u16(x: Option<num::NonZeroU16>);
73 fn nonzero_u32(x: Option<num::NonZeroU32>);
74 fn nonzero_u64(x: Option<num::NonZeroU64>);
75 fn nonzero_u128(x: Option<num::NonZeroU128>);
76 //~^ ERROR `extern` block uses type `u128`
77 fn nonzero_usize(x: Option<num::NonZeroUsize>);
78 fn nonzero_i8(x: Option<num::NonZeroI8>);
79 fn nonzero_i16(x: Option<num::NonZeroI16>);
80 fn nonzero_i32(x: Option<num::NonZeroI32>);
81 fn nonzero_i64(x: Option<num::NonZeroI64>);
82 fn nonzero_i128(x: Option<num::NonZeroI128>);
83 //~^ ERROR `extern` block uses type `i128`
84 fn nonzero_isize(x: Option<num::NonZeroIsize>);
85 fn transparent_struct(x: Option<TransparentStruct<num::NonZeroU8>>);
86 fn transparent_enum(x: Option<TransparentEnum<num::NonZeroU8>>);
87 fn transparent_union(x: Option<TransparentUnion<num::NonZeroU8>>);
88 //~^ ERROR `extern` block uses type
89 fn repr_rust(x: Option<Rust<num::NonZeroU8>>); //~ ERROR `extern` block uses type
90 fn no_result(x: Result<(), num::NonZeroI32>); //~ ERROR `extern` block uses type