]> git.proxmox.com Git - rustc.git/blame - src/test/ui/lint/lint-ctypes-enum.rs
Update unsuspicious file list
[rustc.git] / src / test / ui / lint / lint-ctypes-enum.rs
CommitLineData
dfeec247 1#![feature(transparent_unions)]
e1599b0c 2#![feature(ptr_internals)]
1a4d82fc
JJ
3#![deny(improper_ctypes)]
4#![allow(dead_code)]
223e47cc 5
dc9dc135
XL
6use std::num;
7
5869c6ff
XL
8enum Z {}
9enum U {
10 A,
11}
12enum B {
13 C,
14 D,
15}
16enum T {
17 E,
18 F,
19 G,
20}
970d7e83 21
0531ce1d 22#[repr(C)]
5869c6ff
XL
23enum ReprC {
24 A,
25 B,
26 C,
27}
0531ce1d
XL
28
29#[repr(u8)]
5869c6ff
XL
30enum U8 {
31 A,
32 B,
33 C,
34}
0531ce1d
XL
35
36#[repr(isize)]
5869c6ff
XL
37enum Isize {
38 A,
39 B,
40 C,
41}
0531ce1d 42
dc9dc135
XL
43#[repr(transparent)]
44struct TransparentStruct<T>(T, std::marker::PhantomData<Z>);
45
46#[repr(transparent)]
47enum TransparentEnum<T> {
5869c6ff 48 Variant(T, std::marker::PhantomData<Z>),
dc9dc135
XL
49}
50
51#[repr(transparent)]
52union TransparentUnion<T: Copy> {
5869c6ff 53 field: T,
dc9dc135
XL
54}
55
56struct Rust<T>(T);
57
5869c6ff 58extern "C" {
1a4d82fc 59 fn zf(x: Z);
e1599b0c
XL
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`
dc9dc135
XL
63 fn repr_c(x: ReprC);
64 fn repr_u8(x: U8);
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>>);
e1599b0c 69 fn unique(x: Option<std::ptr::Unique<u8>>);
dc9dc135
XL
70 fn nonzero_u8(x: Option<num::NonZeroU8>);
71 fn nonzero_u16(x: Option<num::NonZeroU16>);
72 fn nonzero_u32(x: Option<num::NonZeroU32>);
73 fn nonzero_u64(x: Option<num::NonZeroU64>);
74 fn nonzero_u128(x: Option<num::NonZeroU128>);
e1599b0c 75 //~^ ERROR `extern` block uses type `u128`
dc9dc135
XL
76 fn nonzero_usize(x: Option<num::NonZeroUsize>);
77 fn nonzero_i8(x: Option<num::NonZeroI8>);
78 fn nonzero_i16(x: Option<num::NonZeroI16>);
79 fn nonzero_i32(x: Option<num::NonZeroI32>);
80 fn nonzero_i64(x: Option<num::NonZeroI64>);
81 fn nonzero_i128(x: Option<num::NonZeroI128>);
e1599b0c 82 //~^ ERROR `extern` block uses type `i128`
dc9dc135
XL
83 fn nonzero_isize(x: Option<num::NonZeroIsize>);
84 fn transparent_struct(x: Option<TransparentStruct<num::NonZeroU8>>);
85 fn transparent_enum(x: Option<TransparentEnum<num::NonZeroU8>>);
86 fn transparent_union(x: Option<TransparentUnion<num::NonZeroU8>>);
e1599b0c
XL
87 //~^ ERROR `extern` block uses type
88 fn repr_rust(x: Option<Rust<num::NonZeroU8>>); //~ ERROR `extern` block uses type
89 fn no_result(x: Result<(), num::NonZeroI32>); //~ ERROR `extern` block uses type
223e47cc 90}
970d7e83 91
e1599b0c 92pub fn main() {}