Rollup merge of #71276 - RalfJung:miri-unleash-box, r=ecstatic-morse

miri-unleashed: test that we detect heap allocations

This removes the second-to-last use of `IS_SUPPORTED_IN_MIRI = false`.

r? @ecstatic-morse @oli-obk
This commit is contained in:
Dylan DPC 2020-04-19 01:04:49 +02:00 committed by GitHub
commit 404e06785b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 30 additions and 3 deletions

View File

@ -13,7 +13,7 @@ use std::fmt;
pub use self::qualifs::Qualif;
pub mod ops;
mod ops;
pub mod qualifs;
mod resolver;
pub mod validation;

View File

@ -113,8 +113,6 @@ impl NonConstOp for FnCallUnstable {
#[derive(Debug)]
pub struct HeapAllocation;
impl NonConstOp for HeapAllocation {
const IS_SUPPORTED_IN_MIRI: bool = false;
fn emit_error(&self, item: &Item<'_, '_>, span: Span) {
let mut err = struct_span_err!(
item.tcx.sess,

View File

@ -0,0 +1,14 @@
// compile-flags: -Zunleash-the-miri-inside-of-you
#![feature(const_mut_refs, box_syntax)]
#![deny(const_err)]
use std::mem::ManuallyDrop;
fn main() {}
static TEST_BAD: &mut i32 = {
&mut *(box 0)
//~^ WARN skipping const check
//~| ERROR could not evaluate static initializer
//~| NOTE heap allocations
};

View File

@ -0,0 +1,15 @@
warning: skipping const checks
--> $DIR/box.rs:10:11
|
LL | &mut *(box 0)
| ^^^^^^^
error[E0080]: could not evaluate static initializer
--> $DIR/box.rs:10:11
|
LL | &mut *(box 0)
| ^^^^^^^ "heap allocations via `box` keyword" needs an rfc before being allowed inside constants
error: aborting due to previous error; 1 warning emitted
For more information about this error, try `rustc --explain E0080`.