improve error message for disallowed ptr-to-int casts in const eval
This commit is contained in:
parent
6a388dcfbb
commit
ff315e34e8
4 changed files with 35 additions and 1 deletions
|
@ -16,6 +16,7 @@ use crate::interpret::{
|
|||
#[derive(Clone, Debug)]
|
||||
pub enum ConstEvalErrKind {
|
||||
NeedsRfc(String),
|
||||
PtrToIntCast,
|
||||
ConstAccessesStatic,
|
||||
ModifiedGlobal,
|
||||
AssertFailure(AssertKind<ConstInt>),
|
||||
|
@ -39,6 +40,12 @@ impl fmt::Display for ConstEvalErrKind {
|
|||
NeedsRfc(ref msg) => {
|
||||
write!(f, "\"{}\" needs an rfc before being allowed inside constants", msg)
|
||||
}
|
||||
PtrToIntCast => {
|
||||
write!(
|
||||
f,
|
||||
"cannot cast pointer to integer because it was not created by cast from integer"
|
||||
)
|
||||
}
|
||||
ConstAccessesStatic => write!(f, "constant accesses static"),
|
||||
ModifiedGlobal => {
|
||||
write!(f, "modifying a static's initial value from another static's initializer")
|
||||
|
|
|
@ -352,7 +352,7 @@ impl<'mir, 'tcx> interpret::Machine<'mir, 'tcx> for CompileTimeInterpreter<'mir,
|
|||
}
|
||||
|
||||
fn ptr_to_int(_mem: &Memory<'mir, 'tcx, Self>, _ptr: Pointer) -> InterpResult<'tcx, u64> {
|
||||
Err(ConstEvalErrKind::NeedsRfc("pointer-to-integer cast".to_string()).into())
|
||||
Err(ConstEvalErrKind::PtrToIntCast.into())
|
||||
}
|
||||
|
||||
fn binary_ptr_op(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue