summaryrefslogtreecommitdiffstats
path: root/src/test/ui/consts/const-eval/union-ice.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/test/ui/consts/const-eval/union-ice.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/test/ui/consts/const-eval/union-ice.rs b/src/test/ui/consts/const-eval/union-ice.rs
new file mode 100644
index 000000000..4189619b2
--- /dev/null
+++ b/src/test/ui/consts/const-eval/union-ice.rs
@@ -0,0 +1,42 @@
+// 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 it is undefined behavior to use this value
+
+const FIELD_PATH: Struct = Struct { //~ ERROR it is undefined behavior to use this value
+ a: 42,
+ b: unsafe { UNION.field3 },
+};
+
+struct Struct {
+ a: u8,
+ b: Field3,
+}
+
+const FIELD_PATH2: Struct2 = Struct2 { //~ ERROR it is undefined behavior to use this value
+ b: [
+ 21,
+ unsafe { UNION.field3 },
+ 23,
+ 24,
+ ],
+ a: 42,
+};
+
+struct Struct2 {
+ b: [Field3; 4],
+ a: u8,
+}
+
+fn main() {
+}