Packages the kind of error we got from the const code interpreter
up with a Rust-level backtrace of where the error occurred.
These should always be constructed by calling .into() on
an InterpError. In rustc_mir::interpret, we have throw_err_*
macros for this.
Error information for when the program we executed turned out not to actually be a valid
program. This cannot happen in stand-alone Miri (except for layout errors that are only detect
during monomorphization), but it can happen during CTFE/ConstProp where we work on generic code
or execution does not have all information available.
Error information for when the program did something that might (or might not) be correct
to do according to the Rust spec, but due to limitations in the interpreter, the
operation could not be carried out. These limitations can differ between CTFE and the
Miri engine, e.g., CTFE does not support dereferencing pointers at integral addresses.
An error type for the const_to_valtree query. Some error should be reported with a “use-site span”,
which means the query cannot emit the error, so those errors are represented as dedicated variants here.