diff options
| author | Ralf Jung <post@ralfj.de> | 2019-08-17 11:48:30 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2019-08-17 11:57:01 +0200 |
| commit | a9efa738ab4e9517a86314f5c0787efef7d8e2a9 (patch) | |
| tree | 5242201c665a20398d177cc92039b1d5ed5bfdb1 /src/test/ui/lint/uninitialized-zeroed.rs | |
| parent | 9ab1d5c73a67e0936f71abe6eaccef8d0b4bd25e (diff) | |
| download | rust-a9efa738ab4e9517a86314f5c0787efef7d8e2a9.tar.gz rust-a9efa738ab4e9517a86314f5c0787efef7d8e2a9.zip | |
invalid_value: also detect transmute-from-0 (seen in the wild)
Diffstat (limited to 'src/test/ui/lint/uninitialized-zeroed.rs')
| -rw-r--r-- | src/test/ui/lint/uninitialized-zeroed.rs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/test/ui/lint/uninitialized-zeroed.rs b/src/test/ui/lint/uninitialized-zeroed.rs index 237f2c0141d..54e1210768c 100644 --- a/src/test/ui/lint/uninitialized-zeroed.rs +++ b/src/test/ui/lint/uninitialized-zeroed.rs @@ -7,6 +7,7 @@ #![deny(invalid_value)] use std::mem::{self, MaybeUninit}; +use std::num::NonZeroU32; enum Void {} @@ -75,6 +76,11 @@ fn main() { let _val: NonBig = mem::zeroed(); let _val: NonBig = mem::uninitialized(); //~ ERROR: does not permit being left uninitialized + // Transmute-from-0 + let _val: &'static i32 = mem::transmute(0usize); //~ ERROR: does not permit zero-initialization + let _val: &'static [i32] = mem::transmute((0usize, 0usize)); //~ ERROR: does not permit zero-initialization + let _val: NonZeroU32 = mem::transmute(0); //~ ERROR: does not permit zero-initialization + // Some more types that should work just fine. let _val: Option<&'static i32> = mem::zeroed(); let _val: Option<fn()> = mem::zeroed(); |
