diff options
Diffstat (limited to 'src/test/ui/consts/miri_unleashed/mutable_references.rs')
-rw-r--r-- | src/test/ui/consts/miri_unleashed/mutable_references.rs | 36 |
1 files changed, 0 insertions, 36 deletions
diff --git a/src/test/ui/consts/miri_unleashed/mutable_references.rs b/src/test/ui/consts/miri_unleashed/mutable_references.rs deleted file mode 100644 index 4e9964647..000000000 --- a/src/test/ui/consts/miri_unleashed/mutable_references.rs +++ /dev/null @@ -1,36 +0,0 @@ -// compile-flags: -Zunleash-the-miri-inside-of-you - -use std::cell::UnsafeCell; - -// a test demonstrating what things we could allow with a smarter const qualification - -// this is fine because is not possible to mutate through an immutable reference. -static FOO: &&mut u32 = &&mut 42; - -// this is fine because accessing an immutable static `BAR` is equivalent to accessing `*&BAR` -// which puts the mutable reference behind an immutable one. -static BAR: &mut () = &mut (); - -struct Foo<T>(T); - -// this is fine for the same reason as `BAR`. -static BOO: &mut Foo<()> = &mut Foo(()); - -// interior mutability is fine -struct Meh { - x: &'static UnsafeCell<i32>, -} -unsafe impl Sync for Meh {} -static MEH: Meh = Meh { - x: &UnsafeCell::new(42), -}; - -// this is fine for the same reason as `BAR`. -static OH_YES: &mut i32 = &mut 42; - -fn main() { - unsafe { - *MEH.x.get() = 99; - } - *OH_YES = 99; //~ ERROR cannot assign to `*OH_YES`, as `OH_YES` is an immutable static item -} |