#![feature(transparent_unions)] #![feature(ptr_internals)] #![deny(improper_ctypes)] #![allow(dead_code)] use std::num; enum Z {} enum U { A, } enum B { C, D, } enum T { E, F, G, } #[repr(C)] enum ReprC { A, B, C, } #[repr(u8)] enum U8 { A, B, C, } #[repr(isize)] enum Isize { A, B, C, } #[repr(transparent)] struct TransparentStruct(T, std::marker::PhantomData); #[repr(transparent)] enum TransparentEnum { Variant(T, std::marker::PhantomData), } #[repr(transparent)] union TransparentUnion { field: T, } struct Rust(T); extern "C" { fn zf(x: Z); fn uf(x: U); //~ ERROR `extern` block uses type `U` fn bf(x: B); //~ ERROR `extern` block uses type `B` fn tf(x: T); //~ ERROR `extern` block uses type `T` fn repr_c(x: ReprC); fn repr_u8(x: U8); fn repr_isize(x: Isize); fn option_ref(x: Option<&'static u8>); fn option_fn(x: Option); fn nonnull(x: Option>); fn unique(x: Option>); fn nonzero_u8(x: Option); fn nonzero_u16(x: Option); fn nonzero_u32(x: Option); fn nonzero_u64(x: Option); fn nonzero_u128(x: Option); //~^ ERROR `extern` block uses type `u128` fn nonzero_usize(x: Option); fn nonzero_i8(x: Option); fn nonzero_i16(x: Option); fn nonzero_i32(x: Option); fn nonzero_i64(x: Option); fn nonzero_i128(x: Option); //~^ ERROR `extern` block uses type `i128` fn nonzero_isize(x: Option); fn transparent_struct(x: Option>); fn transparent_enum(x: Option>); fn transparent_union(x: Option>); //~^ ERROR `extern` block uses type fn repr_rust(x: Option>); //~ ERROR `extern` block uses type fn no_result(x: Result<(), num::NonZeroI32>); //~ ERROR `extern` block uses type } pub fn main() {}