rust/tests/ui/lint/ice-unions-known-panics-lin...

22 lines
574 B
Rust

// Regression test for #121534
// Tests that no ICE occurs in KnownPanicsLint when it
// evaluates an operation whose operands have different
// layout types even though they have the same type.
// This situation can be contrived through the use of
// unions as in this test
//@ build-pass
union Union {
u32_field: u32,
i32_field: i32,
}
pub fn main() {
let u32_variant = Union { u32_field: 2 };
let i32_variant = Union { i32_field: 3 };
let a = unsafe { u32_variant.u32_field };
let b = unsafe { i32_variant.u32_field };
let _diff = a - b;
}