]> git.lizzy.rs Git - rust.git/blob - src/test/ui/lint/uninitialized-zeroed.rs
add basic lint testing for misuse of mem::zeroed and mem::uninitialized
[rust.git] / src / test / ui / lint / uninitialized-zeroed.rs
1 // ignore-tidy-linelength
2 // This test checks that calling `mem::{uninitialized,zeroed}` with certain types results
3 // in a lint.
4
5 #![feature(never_type)]
6 #![allow(deprecated)]
7 #![deny(invalid_value)]
8
9 use std::mem;
10
11 fn main() {
12     unsafe {
13         let _val: ! = mem::zeroed(); //~ ERROR: does not permit zero-initialization
14         let _val: ! = mem::uninitialized(); //~ ERROR: does not permit being left uninitialized
15
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
18
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
21
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();
27     }
28 }