File tree Expand file tree Collapse file tree 2 files changed +43
-0
lines changed
src/test/ui/consts/miri_unleashed Expand file tree Collapse file tree 2 files changed +43
-0
lines changed Original file line number Diff line number Diff line change
1
+ // compile-flags: -Zunleash-the-miri-inside-of-you
2
+ #![ deny( const_err) ]
3
+
4
+ use std:: mem:: ManuallyDrop ;
5
+
6
+ fn main ( ) { }
7
+
8
+ static TEST_OK : ( ) = {
9
+ let v: Vec < i32 > = Vec :: new ( ) ;
10
+ let _v = ManuallyDrop :: new ( v) ;
11
+ } ;
12
+
13
+ // Make sure we catch executing bad drop functions.
14
+ // The actual error is located in `real_drop_in_place` so we can't capture it with the
15
+ // error annotations here.
16
+ static TEST_BAD : ( ) = {
17
+ let _v: Vec < i32 > = Vec :: new ( ) ;
18
+ //~^ WARN skipping const check
19
+ } ;
Original file line number Diff line number Diff line change
1
+ warning: skipping const checks
2
+ --> $DIR/drop.rs:17:9
3
+ |
4
+ LL | let _v: Vec<i32> = Vec::new();
5
+ | ^^
6
+
7
+ error[E0080]: could not evaluate static initializer
8
+ --> $SRC_DIR/libcore/ptr/mod.rs:LL:COL
9
+ |
10
+ LL | / unsafe fn real_drop_in_place<T: ?Sized>(to_drop: &mut T) {
11
+ LL | | // Code here does not matter - this is replaced by the
12
+ LL | | // real drop glue by the compiler.
13
+ LL | | real_drop_in_place(to_drop)
14
+ LL | | }
15
+ | |_^ calling non-const function `<std::vec::Vec<i32> as std::ops::Drop>::drop`
16
+ |
17
+ ::: $DIR/drop.rs:19:1
18
+ |
19
+ LL | };
20
+ | - 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
21
+
22
+ error: aborting due to previous error
23
+
24
+ For more information about this error, try `rustc --explain E0080`.
You can’t perform that action at this time.
0 commit comments