summaryrefslogtreecommitdiffstats
path: root/tests/ui/consts/const-eval/union-ice.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/consts/const-eval/union-ice.rs')
-rw-r--r--tests/ui/consts/const-eval/union-ice.rs48
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/ui/consts/const-eval/union-ice.rs b/tests/ui/consts/const-eval/union-ice.rs
new file mode 100644
index 000000000..dd970a355
--- /dev/null
+++ b/tests/ui/consts/const-eval/union-ice.rs
@@ -0,0 +1,48 @@
+// only-x86_64
+
+type Field1 = i32;
+type Field3 = i64;
+
+#[repr(C)]
+union DummyUnion {
+ field1: Field1,
+ field3: Field3,
+}
+
+const UNION: DummyUnion = DummyUnion { field1: 1065353216 };
+
+const FIELD3: Field3 = unsafe { UNION.field3 };
+//~^ ERROR evaluation of constant value failed
+//~| uninitialized
+
+const FIELD_PATH: Struct = Struct {
+ a: 42,
+ b: unsafe { UNION.field3 },
+ //~^ ERROR evaluation of constant value failed
+ //~| uninitialized
+};
+
+struct Struct {
+ a: u8,
+ b: Field3,
+}
+
+const FIELD_PATH2: Struct2 = Struct2 {
+ b: [
+ 21,
+ unsafe { UNION.field3 },
+ //~^ ERROR evaluation of constant value failed
+ //~| uninitialized
+ 23,
+ 24,
+ ],
+ a: 42,
+};
+
+struct Struct2 {
+ b: [Field3; 4],
+ a: u8,
+}
+
+fn main() {
+}