2018-09-11 23:27:28 -05:00
|
|
|
// New test for #53818: modifying static memory at compile-time is not allowed.
|
2018-11-19 04:19:14 -06:00
|
|
|
// The test should never compile successfully
|
2018-09-11 23:27:28 -05:00
|
|
|
|
2021-10-05 03:55:57 -05:00
|
|
|
#![feature(const_mut_refs)]
|
2018-09-11 23:27:28 -05:00
|
|
|
|
|
|
|
use std::cell::UnsafeCell;
|
|
|
|
|
|
|
|
struct Foo(UnsafeCell<u32>);
|
|
|
|
|
|
|
|
unsafe impl Send for Foo {}
|
|
|
|
unsafe impl Sync for Foo {}
|
|
|
|
|
|
|
|
static FOO: Foo = Foo(UnsafeCell::new(42));
|
|
|
|
|
|
|
|
static BAR: () = unsafe {
|
|
|
|
*FOO.0.get() = 5;
|
2021-10-05 03:55:57 -05:00
|
|
|
//~^ ERROR could not evaluate static initializer
|
2018-09-11 23:27:28 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
println!("{}", unsafe { *FOO.0.get() });
|
|
|
|
}
|