-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Closed
Labels
A-const-evalArea: Constant evaluation, covers all const contexts (static, const fn, ...)Area: Constant evaluation, covers all const contexts (static, const fn, ...)A-miriArea: The miri toolArea: The miri toolC-enhancementCategory: An issue proposing an enhancement or a PR with one.Category: An issue proposing an enhancement or a PR with one.
Description
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`.
wesleywiser, estebank and jyn514
Metadata
Metadata
Assignees
Labels
A-const-evalArea: Constant evaluation, covers all const contexts (static, const fn, ...)Area: Constant evaluation, covers all const contexts (static, const fn, ...)A-miriArea: The miri toolArea: The miri toolC-enhancementCategory: An issue proposing an enhancement or a PR with one.Category: An issue proposing an enhancement or a PR with one.