2018-09-12 04:27:28 +00:00
|
|
|
// New test for #53818: modifying static memory at compile-time is not allowed.
|
2018-11-19 10:19:14 +00:00
|
|
|
// The test should never compile successfully
|
2018-09-12 04:27:28 +00:00
|
|
|
|
|
|
|
#![feature(const_raw_ptr_deref)]
|
|
|
|
|
|
|
|
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;
|
2020-09-29 21:58:00 +00:00
|
|
|
//~^ mutation through a reference
|
2018-09-12 04:27:28 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
println!("{}", unsafe { *FOO.0.get() });
|
|
|
|
}
|