1 // ignore-tidy-linelength
2 // This test checks that calling `mem::{uninitialized,zeroed}` with certain types results
5 #![feature(never_type)]
7 #![deny(invalid_value)]
13 let _val: ! = mem::zeroed(); //~ ERROR: does not permit zero-initialization
14 let _val: ! = mem::uninitialized(); //~ ERROR: does not permit being left uninitialized
16 let _val: &'static i32 = mem::zeroed(); //~ ERROR: does not permit zero-initialization
17 let _val: &'static i32 = mem::uninitialized(); //~ ERROR: does not permit being left uninitialized
19 let _val: fn() = mem::zeroed(); //~ ERROR: does not permit zero-initialization
20 let _val: fn() = mem::uninitialized(); //~ ERROR: does not permit being left uninitialized
22 // Some types that should work just fine.
23 let _val: Option<&'static i32> = mem::zeroed();
24 let _val: Option<fn()> = mem::zeroed();
25 let _val: bool = mem::zeroed();
26 let _val: i32 = mem::zeroed();