//@ revisions: e2021 e2024 //@ [e2021] edition:2021 //@ [e2024] compile-flags: --edition 2024 -Z unstable-options #![deny(static_mut_refs)] use std::ptr::{addr_of, addr_of_mut}; fn main() { static mut X: i32 = 1; static mut Y: i32 = 1; unsafe { let _y = &X; //[e2024]~^ ERROR creating a shared reference to a mutable static [E0796] //[e2021]~^^ ERROR shared reference to mutable static is discouraged [static_mut_refs] let _y = &mut X; //[e2024]~^ ERROR creating a mutable reference to a mutable static [E0796] //[e2021]~^^ ERROR mutable reference to mutable static is discouraged [static_mut_refs] let _z = addr_of_mut!(X); let _p = addr_of!(X); let ref _a = X; //[e2024]~^ ERROR creating a shared reference to a mutable static [E0796] //[e2021]~^^ ERROR shared reference to mutable static is discouraged [static_mut_refs] let (_b, _c) = (&X, &Y); //[e2024]~^ ERROR creating a shared reference to a mutable static [E0796] //[e2021]~^^ ERROR shared reference to mutable static is discouraged [static_mut_refs] //[e2024]~^^^ ERROR creating a shared reference to a mutable static [E0796] //[e2021]~^^^^ ERROR shared reference to mutable static is discouraged [static_mut_refs] foo(&X); //[e2024]~^ ERROR creating a shared reference to a mutable static [E0796] //[e2021]~^^ ERROR shared reference to mutable static is discouraged [static_mut_refs] static mut Z: &[i32; 3] = &[0, 1, 2]; let _ = Z.len(); let _ = Z[0]; let _ = format!("{:?}", Z); } } fn foo<'a>(_x: &'a i32) {}