about summary refs log tree commit diff
path: root/src/test/ui/lint/uninitialized-zeroed.rs
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2019-08-17 11:48:30 +0200
committerRalf Jung <post@ralfj.de>2019-08-17 11:57:01 +0200
commita9efa738ab4e9517a86314f5c0787efef7d8e2a9 (patch)
tree5242201c665a20398d177cc92039b1d5ed5bfdb1 /src/test/ui/lint/uninitialized-zeroed.rs
parent9ab1d5c73a67e0936f71abe6eaccef8d0b4bd25e (diff)
downloadrust-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.rs6
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();