diff options
Diffstat (limited to 'tests/ui/consts/const-eval/union-ice.rs')
-rw-r--r-- | tests/ui/consts/const-eval/union-ice.rs | 48 |
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() { +} |