Skip to content

Miri does not get entirely unleashed #71630

Closed
@RalfJung

Description

@RalfJung

I tried this code on nightly with -Zunleash-the-miri-inside-of-you:

#![allow(const_err)]
#![feature(const_raw_ptr_deref)]

use std::cell::UnsafeCell;


struct Meh {
    x: UnsafeCell<i32>,
}

unsafe impl Sync for Meh {}

static MEH: Meh = Meh {
    x: UnsafeCell::new(42),
};

const WRITE: () = unsafe {
    *MEH.x.get() = 12;
};


fn main() {
}

I expected that that should try to mutate a global, and show an error along those lines. But instead, const-checking gets in the way, even though "unleash Miri" should disable that:

warning: skipping const checks
  --> unleash.rs:18:6
   |
18 |     *MEH.x.get() = 12;
   |      ^^^

error[E0019]: constant contains unimplemented expression type
  --> unleash.rs:18:5
   |
18 |     *MEH.x.get() = 12;
   |     ^^^^^^^^^^^^^^^^^

error: aborting due to previous error; 1 warning emitted

For more information about this error, try `rustc --explain E0019`.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-const-evalArea: Constant evaluation, covers all const contexts (static, const fn, ...)A-miriArea: The miri toolC-enhancementCategory: An issue proposing an enhancement or a PR with one.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions