// check-pass // This test exhibits undefined behavior, but it is very expensive and complex to check for such // UB in constants. // Thus, we do not detect it if you create references to statics in ways that are UB. enum Foo { A = 5, B = 42, } enum Bar { C = 42, D = 99, } #[repr(C)] union Union { foo: &'static Foo, bar: &'static Bar, u8: &'static u8, } static BAR: u8 = 5; static FOO: (&Foo, &Bar) = unsafe { ( // undefined behavior Union { u8: &BAR }.foo, Union { u8: &BAR }.bar, ) }; static FOO2: (&Foo, &Bar) = unsafe { (std::mem::transmute(&BAR), std::mem::transmute(&BAR)) }; //^ undefined behavior fn main() {}