about summary refs log tree commit diff
path: root/tests/ui/consts/const-eval/ub-int-array.rs
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2023-08-02 16:14:36 +0200
committerRalf Jung <post@ralfj.de>2023-08-02 18:51:50 +0200
commit7767cbb3b0b332fd0a46e347ea7f68f20109d768 (patch)
tree4e748496f86ac3de86d85a83f65bafc6f85eb0f1 /tests/ui/consts/const-eval/ub-int-array.rs
parent7637653b9fdd2b2f2dc3b378891eb5cf6aea9f5d (diff)
downloadrust-7767cbb3b0b332fd0a46e347ea7f68f20109d768.tar.gz
rust-7767cbb3b0b332fd0a46e347ea7f68f20109d768.zip
const validation: point at where we found a pointer but expected an integer
Diffstat (limited to 'tests/ui/consts/const-eval/ub-int-array.rs')
-rw-r--r--tests/ui/consts/const-eval/ub-int-array.rs84
1 files changed, 41 insertions, 43 deletions
diff --git a/tests/ui/consts/const-eval/ub-int-array.rs b/tests/ui/consts/const-eval/ub-int-array.rs
index a68d3fb17bc..adcf376b9c7 100644
--- a/tests/ui/consts/const-eval/ub-int-array.rs
+++ b/tests/ui/consts/const-eval/ub-int-array.rs
@@ -10,54 +10,52 @@ union MaybeUninit<T: Copy> {
     init: T,
 }
 
+impl<T: Copy> MaybeUninit<T> {
+    const fn new(t: T) -> Self {
+        MaybeUninit { init: t }
+    }
+}
+
 const UNINIT_INT_0: [u32; 3] = unsafe {
-    [
-        MaybeUninit { uninit: () }.init,
-        //~^ ERROR evaluation of constant value failed
-        //~| uninitialized
-        1,
-        2,
-    ]
+    //~^ ERROR it is undefined behavior to use this value
+    //~| invalid value at [0]
+    mem::transmute([MaybeUninit { uninit: () }, MaybeUninit::new(1), MaybeUninit::new(2)])
 };
 const UNINIT_INT_1: [u32; 3] = unsafe {
-    mem::transmute(
-        [
-            0u8,
-            0u8,
-            0u8,
-            0u8,
-            1u8,
-            MaybeUninit { uninit: () }.init,
-            //~^ ERROR evaluation of constant value failed
-            //~| uninitialized
-            1u8,
-            1u8,
-            2u8,
-            2u8,
-            MaybeUninit { uninit: () }.init,
-            2u8,
-        ]
-    )
+    //~^ ERROR it is undefined behavior to use this value
+    //~| invalid value at [1]
+    mem::transmute([
+        MaybeUninit::new(0u8),
+        MaybeUninit::new(0u8),
+        MaybeUninit::new(0u8),
+        MaybeUninit::new(0u8),
+        MaybeUninit::new(1u8),
+        MaybeUninit { uninit: () },
+        MaybeUninit::new(1u8),
+        MaybeUninit::new(1u8),
+        MaybeUninit::new(2u8),
+        MaybeUninit::new(2u8),
+        MaybeUninit { uninit: () },
+        MaybeUninit::new(2u8),
+    ])
 };
 const UNINIT_INT_2: [u32; 3] = unsafe {
-    mem::transmute(
-        [
-            0u8,
-            0u8,
-            0u8,
-            0u8,
-            1u8,
-            1u8,
-            1u8,
-            1u8,
-            2u8,
-            2u8,
-            2u8,
-            MaybeUninit { uninit: () }.init,
-            //~^ ERROR evaluation of constant value failed
-            //~| uninitialized
-        ]
-    )
+    //~^ ERROR it is undefined behavior to use this value
+    //~| invalid value at [2]
+    mem::transmute([
+        MaybeUninit::new(0u8),
+        MaybeUninit::new(0u8),
+        MaybeUninit::new(0u8),
+        MaybeUninit::new(0u8),
+        MaybeUninit::new(1u8),
+        MaybeUninit::new(1u8),
+        MaybeUninit::new(1u8),
+        MaybeUninit::new(1u8),
+        MaybeUninit::new(2u8),
+        MaybeUninit::new(2u8),
+        MaybeUninit::new(2u8),
+        MaybeUninit { uninit: () },
+    ])
 };
 
 fn main() {}