//@ run-pass // Use of global static variables in literal values should be allowed for // promotion. // This test is to demonstrate the issue raised in // https://github.com/rust-lang/rust/issues/70584 // Literal values were previously promoted into local static values when // other global static variables are used. struct A(&'static T); struct B { x: &'static T, } static STR: &'static [u8] = b"hi"; static C: A>> = { A(&B { x: &B { x: STR }, }) }; pub struct Slice(&'static [i32]); static CONTENT: i32 = 42; pub static CONTENT_MAP: Slice = Slice(&[CONTENT]); pub static FOO: (i32, i32) = (42, 43); pub static CONTENT_MAP2: Slice = Slice(&[FOO.0]); fn main() { assert_eq!(b"hi", C.0.x.x); assert_eq!(&[42], CONTENT_MAP.0); assert_eq!(&[42], CONTENT_MAP2.0); }