]> git.proxmox.com Git - rustc.git/blobdiff - src/test/ui/lint/uninitialized-zeroed.rs
New upstream version 1.61.0+dfsg1
[rustc.git] / src / test / ui / lint / uninitialized-zeroed.rs
index 122933c3c4e46337f88bae51cefd9a5cce4a8f67..5cd323c01db8cb8234339c3c51c7974300c313a6 100644 (file)
@@ -81,6 +81,9 @@ fn main() {
         let _val: *const dyn Send = mem::zeroed(); //~ ERROR: does not permit zero-initialization
         let _val: *const dyn Send = mem::uninitialized(); //~ ERROR: does not permit being left uninitialized
 
+        let _val: [fn(); 2] = mem::zeroed(); //~ ERROR: does not permit zero-initialization
+        let _val: [fn(); 2] = mem::uninitialized(); //~ ERROR: does not permit being left uninitialized
+
         // Things that can be zero, but not uninit.
         let _val: bool = mem::zeroed();
         let _val: bool = mem::uninitialized(); //~ ERROR: does not permit being left uninitialized
@@ -94,6 +97,9 @@ fn main() {
         let _val: Fruit = mem::zeroed();
         let _val: Fruit = mem::uninitialized(); //~ ERROR: does not permit being left uninitialized
 
+        let _val: [bool; 2] = mem::zeroed();
+        let _val: [bool; 2] = 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
@@ -110,6 +116,8 @@ fn main() {
         let _val: MaybeUninit<&'static i32> = mem::zeroed();
         let _val: i32 = mem::zeroed();
         let _val: bool = MaybeUninit::zeroed().assume_init();
+        let _val: [bool; 0] = MaybeUninit::uninit().assume_init();
+        let _val: [!; 0] = MaybeUninit::zeroed().assume_init();
         // Some things that happen to work due to rustc implementation details,
         // but are not guaranteed to keep working.
         let _val: i32 = mem::uninitialized();