blob: b5db685ef2c060d4c903b4ee034cffed0b699d68 [file] [log] [blame]
// compile-flags: -Zunleash-the-miri-inside-of-you
#![allow(const_err)]
use std::sync::atomic::AtomicUsize;
use std::sync::atomic::Ordering;
// These only fail during validation (they do not use but just create a reference to a static),
// so they cause an immediate error when *defining* the const.
const REF_INTERIOR_MUT: &usize = { //~ ERROR undefined behavior to use this value
//~| NOTE encountered a reference pointing to a static variable
//~| NOTE
static FOO: AtomicUsize = AtomicUsize::new(0);
unsafe { &*(&FOO as *const _ as *const usize) }
};
// ok some day perhaps
const READ_IMMUT: &usize = { //~ ERROR it is undefined behavior to use this value
//~| NOTE encountered a reference pointing to a static variable
//~| NOTE
static FOO: usize = 0;
&FOO
};
fn main() {}