rust/tests/ui/consts/static-promoted-to-mutable-static.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

29 lines
928 B
Rust
Raw Normal View History

//@ check-pass
#![allow(non_camel_case_types, non_upper_case_globals, static_mut_refs)]
pub struct wl_interface {
pub version: i32,
}
pub struct Interface {
pub other_interfaces: &'static [&'static Interface],
pub c_ptr: Option<&'static wl_interface>,
}
pub static mut wl_callback_interface: wl_interface = wl_interface { version: 0 };
pub static WL_CALLBACK_INTERFACE: Interface =
Interface { other_interfaces: &[], c_ptr: Some(unsafe { &wl_callback_interface }) };
// This static contains a promoted that points to a static that points to a mutable static.
pub static WL_SURFACE_INTERFACE: Interface =
Interface { other_interfaces: &[&WL_CALLBACK_INTERFACE], c_ptr: None };
// And another variant of the same thing, this time with interior mutability.
use std::sync::OnceLock;
static LAZY_INIT: OnceLock<u32> = OnceLock::new();
static LAZY_INIT_REF: &[&OnceLock<u32>] = &[&LAZY_INIT];
fn main() {}