1 #![feature(transparent_enums, transparent_unions)]
2 #![deny(improper_ctypes)]
13 enum ReprC { A, B, C }
19 enum Isize { A, B, C }
22 struct TransparentStruct<T>(T, std::marker::PhantomData<Z>);
25 enum TransparentEnum<T> {
26 Variant(T, std::marker::PhantomData<Z>),
30 union TransparentUnion<T: Copy> {
38 fn uf(x: U); //~ ERROR enum has no representation hint
39 fn bf(x: B); //~ ERROR enum has no representation hint
40 fn tf(x: T); //~ ERROR enum has no representation hint
43 fn repr_isize(x: Isize);
44 fn option_ref(x: Option<&'static u8>);
45 fn option_fn(x: Option<extern "C" fn()>);
46 fn nonnull(x: Option<std::ptr::NonNull<u8>>);
47 fn nonzero_u8(x: Option<num::NonZeroU8>);
48 fn nonzero_u16(x: Option<num::NonZeroU16>);
49 fn nonzero_u32(x: Option<num::NonZeroU32>);
50 fn nonzero_u64(x: Option<num::NonZeroU64>);
51 fn nonzero_u128(x: Option<num::NonZeroU128>);
52 //~^ ERROR 128-bit integers don't currently have a known stable ABI
53 fn nonzero_usize(x: Option<num::NonZeroUsize>);
54 fn nonzero_i8(x: Option<num::NonZeroI8>);
55 fn nonzero_i16(x: Option<num::NonZeroI16>);
56 fn nonzero_i32(x: Option<num::NonZeroI32>);
57 fn nonzero_i64(x: Option<num::NonZeroI64>);
58 fn nonzero_i128(x: Option<num::NonZeroI128>);
59 //~^ ERROR 128-bit integers don't currently have a known stable ABI
60 fn nonzero_isize(x: Option<num::NonZeroIsize>);
61 fn transparent_struct(x: Option<TransparentStruct<num::NonZeroU8>>);
62 fn transparent_enum(x: Option<TransparentEnum<num::NonZeroU8>>);
63 fn transparent_union(x: Option<TransparentUnion<num::NonZeroU8>>);
64 //~^ ERROR enum has no representation hint
65 fn repr_rust(x: Option<Rust<num::NonZeroU8>>); //~ ERROR enum has no representation hint
66 fn no_result(x: Result<(), num::NonZeroI32>); //~ ERROR enum has no representation hint