2018-09-12 12:27:28 +08:00
|
|
|
// New test for #53818: modifying static memory at compile-time is not allowed.
|
2018-11-19 11:19:14 +01:00
|
|
|
// The test should never compile successfully
|
2018-09-12 12:27:28 +08:00
|
|
|
|
2021-10-05 04:55:57 -04:00
|
|
|
#![feature(const_mut_refs)]
|
2018-09-12 12:27:28 +08: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 04:55:57 -04:00
|
|
|
//~^ ERROR could not evaluate static initializer
|
2018-09-12 12:27:28 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
println!("{}", unsafe { *FOO.0.get() });
|
|
|
|
}
|