about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2020-04-18 11:16:07 +0200
committerRalf Jung <post@ralfj.de>2020-04-18 11:38:25 +0200
commitcf3470a5fc8fc08018f4fe42b2c03a1b96a90029 (patch)
treeb564e5df3679d87cefbe4d4d2f328b4e9a6fef63
parent76cb95ef4dba0e21c9befef1450a22c9c03e34bf (diff)
downloadrust-cf3470a5fc8fc08018f4fe42b2c03a1b96a90029.tar.gz
rust-cf3470a5fc8fc08018f4fe42b2c03a1b96a90029.zip
miri-unleashed: test that we detect heap allocations
-rw-r--r--src/librustc_mir/transform/check_consts/ops.rs2
-rw-r--r--src/test/ui/consts/miri_unleashed/box.rs14
-rw-r--r--src/test/ui/consts/miri_unleashed/box.stderr15
3 files changed, 29 insertions, 2 deletions
diff --git a/src/librustc_mir/transform/check_consts/ops.rs b/src/librustc_mir/transform/check_consts/ops.rs
index b3264a7a032..b5e62aa2013 100644
--- a/src/librustc_mir/transform/check_consts/ops.rs
+++ b/src/librustc_mir/transform/check_consts/ops.rs
@@ -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,
diff --git a/src/test/ui/consts/miri_unleashed/box.rs b/src/test/ui/consts/miri_unleashed/box.rs
new file mode 100644
index 00000000000..049727684d0
--- /dev/null
+++ b/src/test/ui/consts/miri_unleashed/box.rs
@@ -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
+};
diff --git a/src/test/ui/consts/miri_unleashed/box.stderr b/src/test/ui/consts/miri_unleashed/box.stderr
new file mode 100644
index 00000000000..d1b404ea737
--- /dev/null
+++ b/src/test/ui/consts/miri_unleashed/box.stderr
@@ -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`.