add test for dropping in const
This commit is contained in:
parent
625375400c
commit
db20f248eb
2 changed files with 43 additions and 0 deletions
19
src/test/ui/consts/miri_unleashed/drop.rs
Normal file
19
src/test/ui/consts/miri_unleashed/drop.rs
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
// compile-flags: -Zunleash-the-miri-inside-of-you
|
||||
#![deny(const_err)]
|
||||
|
||||
use std::mem::ManuallyDrop;
|
||||
|
||||
fn main() {}
|
||||
|
||||
static TEST_OK: () = {
|
||||
let v: Vec<i32> = Vec::new();
|
||||
let _v = ManuallyDrop::new(v);
|
||||
};
|
||||
|
||||
// Make sure we catch executing bad drop functions.
|
||||
// The actual error is located in `real_drop_in_place` so we can't capture it with the
|
||||
// error annotations here.
|
||||
static TEST_BAD: () = {
|
||||
let _v: Vec<i32> = Vec::new();
|
||||
//~^ WARN skipping const check
|
||||
};
|
||||
24
src/test/ui/consts/miri_unleashed/drop.stderr
Normal file
24
src/test/ui/consts/miri_unleashed/drop.stderr
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
warning: skipping const checks
|
||||
--> $DIR/drop.rs:17:9
|
||||
|
|
||||
LL | let _v: Vec<i32> = Vec::new();
|
||||
| ^^
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $SRC_DIR/libcore/ptr/mod.rs:LL:COL
|
||||
|
|
||||
LL | / unsafe fn real_drop_in_place<T: ?Sized>(to_drop: &mut T) {
|
||||
LL | | // Code here does not matter - this is replaced by the
|
||||
LL | | // real drop glue by the compiler.
|
||||
LL | | real_drop_in_place(to_drop)
|
||||
LL | | }
|
||||
| |_^ calling non-const function `<std::vec::Vec<i32> as std::ops::Drop>::drop`
|
||||
|
|
||||
::: $DIR/drop.rs:19:1
|
||||
|
|
||||
LL | };
|
||||
| - inside call to `std::ptr::real_drop_in_place::<std::vec::Vec<i32>> - shim(Some(std::vec::Vec<i32>))` at $DIR/drop.rs:19:1
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0080`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue