make sure even unleashed miri does not do pointer stuff
This commit is contained in:
parent
af6d8865fe
commit
8954379312
2 changed files with 68 additions and 0 deletions
29
src/test/ui/consts/miri_unleashed/ptr_arith.rs
Normal file
29
src/test/ui/consts/miri_unleashed/ptr_arith.rs
Normal file
|
@ -0,0 +1,29 @@
|
|||
// compile-flags: -Zunleash-the-miri-inside-of-you
|
||||
#![feature(core_intrinsics)]
|
||||
#![allow(const_err)]
|
||||
|
||||
// A test demonstrating that we prevent doing even trivial
|
||||
// pointer arithmetic or comparison during CTFE.
|
||||
|
||||
static CMP: () = {
|
||||
let x = &0 as *const _;
|
||||
let _v = x == x;
|
||||
//~^ ERROR could not evaluate static initializer
|
||||
//~| NOTE pointer arithmetic or comparison
|
||||
};
|
||||
|
||||
static INT_PTR_ARITH: () = unsafe {
|
||||
let x: usize = std::mem::transmute(&0);
|
||||
let _v = x + 0;
|
||||
//~^ ERROR could not evaluate static initializer
|
||||
//~| NOTE pointer-to-integer cast
|
||||
};
|
||||
|
||||
static PTR_ARITH: () = unsafe {
|
||||
let x = &0 as *const _;
|
||||
let _v = core::intrinsics::offset(x, 0);
|
||||
//~^ ERROR could not evaluate static initializer
|
||||
//~| NOTE calling intrinsic `offset`
|
||||
};
|
||||
|
||||
fn main() {}
|
39
src/test/ui/consts/miri_unleashed/ptr_arith.stderr
Normal file
39
src/test/ui/consts/miri_unleashed/ptr_arith.stderr
Normal file
|
@ -0,0 +1,39 @@
|
|||
error[E0080]: could not evaluate static initializer
|
||||
--> $DIR/ptr_arith.rs:10:14
|
||||
|
|
||||
LL | let _v = x == x;
|
||||
| ^^^^^^ "pointer arithmetic or comparison" needs an rfc before being allowed inside constants
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $DIR/ptr_arith.rs:17:14
|
||||
|
|
||||
LL | let _v = x + 0;
|
||||
| ^^^^^ "pointer-to-integer cast" needs an rfc before being allowed inside constants
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $DIR/ptr_arith.rs:24:14
|
||||
|
|
||||
LL | let _v = core::intrinsics::offset(x, 0);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ "calling intrinsic `offset`" needs an rfc before being allowed inside constants
|
||||
|
||||
warning: skipping const checks
|
||||
|
|
||||
help: skipping check for `const_compare_raw_pointers` feature
|
||||
--> $DIR/ptr_arith.rs:10:14
|
||||
|
|
||||
LL | let _v = x == x;
|
||||
| ^^^^^^
|
||||
help: skipping check that does not even have a feature gate
|
||||
--> $DIR/ptr_arith.rs:16:20
|
||||
|
|
||||
LL | let x: usize = std::mem::transmute(&0);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
help: skipping check that does not even have a feature gate
|
||||
--> $DIR/ptr_arith.rs:24:14
|
||||
|
|
||||
LL | let _v = core::intrinsics::offset(x, 0);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 3 previous errors; 1 warning emitted
|
||||
|
||||
For more information about this error, try `rustc --explain E0080`.
|
Loading…
Add table
Reference in a new issue