Use better error message for hard errors in CTFE
Currently the same message is used for hard errors and soft errors. This makes hard errors use a message that indicates the reality of the situation correctly, since usage of the constant is never allowed when there was a hard error evaluating it.
This commit is contained in:
parent
60f1a2fc4b
commit
4fe4ff95f6
15 changed files with 58 additions and 97 deletions
|
@ -157,7 +157,7 @@ impl<'tcx> ConstEvalErr<'tcx> {
|
||||||
tcx: TyCtxtAt<'tcx>,
|
tcx: TyCtxtAt<'tcx>,
|
||||||
message: &str,
|
message: &str,
|
||||||
emit: impl FnOnce(DiagnosticBuilder<'_>),
|
emit: impl FnOnce(DiagnosticBuilder<'_>),
|
||||||
mut lint_root: Option<hir::HirId>,
|
lint_root: Option<hir::HirId>,
|
||||||
) -> ErrorHandled {
|
) -> ErrorHandled {
|
||||||
let finish = |mut err: DiagnosticBuilder<'_>, span_msg: Option<String>| {
|
let finish = |mut err: DiagnosticBuilder<'_>, span_msg: Option<String>| {
|
||||||
trace!("reporting const eval failure at {:?}", self.span);
|
trace!("reporting const eval failure at {:?}", self.span);
|
||||||
|
@ -194,12 +194,6 @@ impl<'tcx> ConstEvalErr<'tcx> {
|
||||||
_ => {}
|
_ => {}
|
||||||
};
|
};
|
||||||
|
|
||||||
// If we have a 'hard error', then set `lint_root` to `None` so that we don't
|
|
||||||
// emit a lint.
|
|
||||||
if matches!(&self.error, InterpError::MachineStop(err) if err.is_hard_err()) {
|
|
||||||
lint_root = None;
|
|
||||||
}
|
|
||||||
|
|
||||||
let err_msg = self.error.to_string();
|
let err_msg = self.error.to_string();
|
||||||
|
|
||||||
// Regular case - emit a lint.
|
// Regular case - emit a lint.
|
||||||
|
|
|
@ -2,8 +2,8 @@ use super::{CompileTimeEvalContext, CompileTimeInterpreter, ConstEvalErr, Memory
|
||||||
use crate::interpret::eval_nullary_intrinsic;
|
use crate::interpret::eval_nullary_intrinsic;
|
||||||
use crate::interpret::{
|
use crate::interpret::{
|
||||||
intern_const_alloc_recursive, Allocation, ConstAlloc, ConstValue, CtfeValidationMode, GlobalId,
|
intern_const_alloc_recursive, Allocation, ConstAlloc, ConstValue, CtfeValidationMode, GlobalId,
|
||||||
Immediate, InternKind, InterpCx, InterpResult, MPlaceTy, MemoryKind, OpTy, RefTracking, Scalar,
|
Immediate, InternKind, InterpCx, InterpError, InterpResult, MPlaceTy, MemoryKind, OpTy,
|
||||||
ScalarMaybeUninit, StackPopCleanup,
|
RefTracking, Scalar, ScalarMaybeUninit, StackPopCleanup,
|
||||||
};
|
};
|
||||||
use crate::util::pretty::display_allocation;
|
use crate::util::pretty::display_allocation;
|
||||||
|
|
||||||
|
@ -315,6 +315,7 @@ pub fn eval_to_allocation_raw_provider<'tcx>(
|
||||||
let emit_as_lint = if let Some(def) = def.as_local() {
|
let emit_as_lint = if let Some(def) = def.as_local() {
|
||||||
// (Associated) consts only emit a lint, since they might be unused.
|
// (Associated) consts only emit a lint, since they might be unused.
|
||||||
matches!(tcx.def_kind(def.did.to_def_id()), DefKind::Const | DefKind::AssocConst)
|
matches!(tcx.def_kind(def.did.to_def_id()), DefKind::Const | DefKind::AssocConst)
|
||||||
|
&& !matches!(&err.error, InterpError::MachineStop(err) if err.is_hard_err())
|
||||||
} else {
|
} else {
|
||||||
// use of broken constant from other crate: always an error
|
// use of broken constant from other crate: always an error
|
||||||
false
|
false
|
||||||
|
|
|
@ -5,31 +5,31 @@
|
||||||
const MSG: &str = "hello";
|
const MSG: &str = "hello";
|
||||||
|
|
||||||
const Z: () = std::panic!("cheese");
|
const Z: () = std::panic!("cheese");
|
||||||
//~^ ERROR any use of this value will cause an error
|
//~^ ERROR evaluation of constant value failed
|
||||||
|
|
||||||
const Z2: () = std::panic!();
|
const Z2: () = std::panic!();
|
||||||
//~^ ERROR any use of this value will cause an error
|
//~^ ERROR evaluation of constant value failed
|
||||||
|
|
||||||
const Y: () = std::unreachable!();
|
const Y: () = std::unreachable!();
|
||||||
//~^ ERROR any use of this value will cause an error
|
//~^ ERROR evaluation of constant value failed
|
||||||
|
|
||||||
const X: () = std::unimplemented!();
|
const X: () = std::unimplemented!();
|
||||||
//~^ ERROR any use of this value will cause an error
|
//~^ ERROR evaluation of constant value failed
|
||||||
//
|
//
|
||||||
const W: () = std::panic!(MSG);
|
const W: () = std::panic!(MSG);
|
||||||
//~^ ERROR any use of this value will cause an error
|
//~^ ERROR evaluation of constant value failed
|
||||||
|
|
||||||
const Z_CORE: () = core::panic!("cheese");
|
const Z_CORE: () = core::panic!("cheese");
|
||||||
//~^ ERROR any use of this value will cause an error
|
//~^ ERROR evaluation of constant value failed
|
||||||
|
|
||||||
const Z2_CORE: () = core::panic!();
|
const Z2_CORE: () = core::panic!();
|
||||||
//~^ ERROR any use of this value will cause an error
|
//~^ ERROR evaluation of constant value failed
|
||||||
|
|
||||||
const Y_CORE: () = core::unreachable!();
|
const Y_CORE: () = core::unreachable!();
|
||||||
//~^ ERROR any use of this value will cause an error
|
//~^ ERROR evaluation of constant value failed
|
||||||
|
|
||||||
const X_CORE: () = core::unimplemented!();
|
const X_CORE: () = core::unimplemented!();
|
||||||
//~^ ERROR any use of this value will cause an error
|
//~^ ERROR evaluation of constant value failed
|
||||||
|
|
||||||
const W_CORE: () = core::panic!(MSG);
|
const W_CORE: () = core::panic!(MSG);
|
||||||
//~^ ERROR any use of this value will cause an error
|
//~^ ERROR evaluation of constant value failed
|
||||||
|
|
|
@ -1,100 +1,80 @@
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/const_panic.rs:7:15
|
--> $DIR/const_panic.rs:7:15
|
||||||
|
|
|
|
||||||
LL | const Z: () = std::panic!("cheese");
|
LL | const Z: () = std::panic!("cheese");
|
||||||
| --------------^^^^^^^^^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^^^^^^^^^ the evaluated program panicked at 'cheese', $DIR/const_panic.rs:7:15
|
||||||
| |
|
|
||||||
| the evaluated program panicked at 'cheese', $DIR/const_panic.rs:7:15
|
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/const_panic.rs:10:16
|
--> $DIR/const_panic.rs:10:16
|
||||||
|
|
|
|
||||||
LL | const Z2: () = std::panic!();
|
LL | const Z2: () = std::panic!();
|
||||||
| ---------------^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^ the evaluated program panicked at 'explicit panic', $DIR/const_panic.rs:10:16
|
||||||
| |
|
|
||||||
| the evaluated program panicked at 'explicit panic', $DIR/const_panic.rs:10:16
|
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/const_panic.rs:13:15
|
--> $DIR/const_panic.rs:13:15
|
||||||
|
|
|
|
||||||
LL | const Y: () = std::unreachable!();
|
LL | const Y: () = std::unreachable!();
|
||||||
| --------------^^^^^^^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^^^^^^^ the evaluated program panicked at 'internal error: entered unreachable code', $DIR/const_panic.rs:13:15
|
||||||
| |
|
|
||||||
| the evaluated program panicked at 'internal error: entered unreachable code', $DIR/const_panic.rs:13:15
|
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/const_panic.rs:16:15
|
--> $DIR/const_panic.rs:16:15
|
||||||
|
|
|
|
||||||
LL | const X: () = std::unimplemented!();
|
LL | const X: () = std::unimplemented!();
|
||||||
| --------------^^^^^^^^^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^^^^^^^^^ the evaluated program panicked at 'not implemented', $DIR/const_panic.rs:16:15
|
||||||
| |
|
|
||||||
| the evaluated program panicked at 'not implemented', $DIR/const_panic.rs:16:15
|
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/const_panic.rs:19:15
|
--> $DIR/const_panic.rs:19:15
|
||||||
|
|
|
|
||||||
LL | const W: () = std::panic!(MSG);
|
LL | const W: () = std::panic!(MSG);
|
||||||
| --------------^^^^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^^^^ the evaluated program panicked at 'hello', $DIR/const_panic.rs:19:15
|
||||||
| |
|
|
||||||
| the evaluated program panicked at 'hello', $DIR/const_panic.rs:19:15
|
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/const_panic.rs:22:20
|
--> $DIR/const_panic.rs:22:20
|
||||||
|
|
|
|
||||||
LL | const Z_CORE: () = core::panic!("cheese");
|
LL | const Z_CORE: () = core::panic!("cheese");
|
||||||
| -------------------^^^^^^^^^^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^^^^^^^^^^ the evaluated program panicked at 'cheese', $DIR/const_panic.rs:22:20
|
||||||
| |
|
|
||||||
| the evaluated program panicked at 'cheese', $DIR/const_panic.rs:22:20
|
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/const_panic.rs:25:21
|
--> $DIR/const_panic.rs:25:21
|
||||||
|
|
|
|
||||||
LL | const Z2_CORE: () = core::panic!();
|
LL | const Z2_CORE: () = core::panic!();
|
||||||
| --------------------^^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^^ the evaluated program panicked at 'explicit panic', $DIR/const_panic.rs:25:21
|
||||||
| |
|
|
||||||
| the evaluated program panicked at 'explicit panic', $DIR/const_panic.rs:25:21
|
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/const_panic.rs:28:20
|
--> $DIR/const_panic.rs:28:20
|
||||||
|
|
|
|
||||||
LL | const Y_CORE: () = core::unreachable!();
|
LL | const Y_CORE: () = core::unreachable!();
|
||||||
| -------------------^^^^^^^^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^^^^^^^^ the evaluated program panicked at 'internal error: entered unreachable code', $DIR/const_panic.rs:28:20
|
||||||
| |
|
|
||||||
| the evaluated program panicked at 'internal error: entered unreachable code', $DIR/const_panic.rs:28:20
|
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/const_panic.rs:31:20
|
--> $DIR/const_panic.rs:31:20
|
||||||
|
|
|
|
||||||
LL | const X_CORE: () = core::unimplemented!();
|
LL | const X_CORE: () = core::unimplemented!();
|
||||||
| -------------------^^^^^^^^^^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^^^^^^^^^^ the evaluated program panicked at 'not implemented', $DIR/const_panic.rs:31:20
|
||||||
| |
|
|
||||||
| the evaluated program panicked at 'not implemented', $DIR/const_panic.rs:31:20
|
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/const_panic.rs:34:20
|
--> $DIR/const_panic.rs:34:20
|
||||||
|
|
|
|
||||||
LL | const W_CORE: () = core::panic!(MSG);
|
LL | const W_CORE: () = core::panic!(MSG);
|
||||||
| -------------------^^^^^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^^^^^ the evaluated program panicked at 'hello', $DIR/const_panic.rs:34:20
|
||||||
| |
|
|
||||||
| the evaluated program panicked at 'hello', $DIR/const_panic.rs:34:20
|
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
|
|
@ -7,13 +7,13 @@
|
||||||
use core::panic::PanicInfo;
|
use core::panic::PanicInfo;
|
||||||
|
|
||||||
const Z: () = panic!("cheese");
|
const Z: () = panic!("cheese");
|
||||||
//~^ ERROR any use of this value will cause an error
|
//~^ ERROR evaluation of constant value failed
|
||||||
|
|
||||||
const Y: () = unreachable!();
|
const Y: () = unreachable!();
|
||||||
//~^ ERROR any use of this value will cause an error
|
//~^ ERROR evaluation of constant value failed
|
||||||
|
|
||||||
const X: () = unimplemented!();
|
const X: () = unimplemented!();
|
||||||
//~^ ERROR any use of this value will cause an error
|
//~^ ERROR evaluation of constant value failed
|
||||||
|
|
||||||
#[lang = "eh_personality"]
|
#[lang = "eh_personality"]
|
||||||
fn eh() {}
|
fn eh() {}
|
||||||
|
|
|
@ -1,30 +1,24 @@
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/const_panic_libcore_bin.rs:9:15
|
--> $DIR/const_panic_libcore_bin.rs:9:15
|
||||||
|
|
|
|
||||||
LL | const Z: () = panic!("cheese");
|
LL | const Z: () = panic!("cheese");
|
||||||
| --------------^^^^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^^^^ the evaluated program panicked at 'cheese', $DIR/const_panic_libcore_bin.rs:9:15
|
||||||
| |
|
|
||||||
| the evaluated program panicked at 'cheese', $DIR/const_panic_libcore_bin.rs:9:15
|
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/const_panic_libcore_bin.rs:12:15
|
--> $DIR/const_panic_libcore_bin.rs:12:15
|
||||||
|
|
|
|
||||||
LL | const Y: () = unreachable!();
|
LL | const Y: () = unreachable!();
|
||||||
| --------------^^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^^ the evaluated program panicked at 'internal error: entered unreachable code', $DIR/const_panic_libcore_bin.rs:12:15
|
||||||
| |
|
|
||||||
| the evaluated program panicked at 'internal error: entered unreachable code', $DIR/const_panic_libcore_bin.rs:12:15
|
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/const_panic_libcore_bin.rs:15:15
|
--> $DIR/const_panic_libcore_bin.rs:15:15
|
||||||
|
|
|
|
||||||
LL | const X: () = unimplemented!();
|
LL | const X: () = unimplemented!();
|
||||||
| --------------^^^^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^^^^ the evaluated program panicked at 'not implemented', $DIR/const_panic_libcore_bin.rs:15:15
|
||||||
| |
|
|
||||||
| the evaluated program panicked at 'not implemented', $DIR/const_panic_libcore_bin.rs:15:15
|
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ struct PrintName;
|
||||||
|
|
||||||
impl PrintName {
|
impl PrintName {
|
||||||
const VOID: ! = panic!();
|
const VOID: ! = panic!();
|
||||||
//~^ ERROR any use of this value will cause an error
|
//~^ ERROR evaluation of constant value failed
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/panic-assoc-never-type.rs:11:21
|
--> $DIR/panic-assoc-never-type.rs:11:21
|
||||||
|
|
|
|
||||||
LL | const VOID: ! = panic!();
|
LL | const VOID: ! = panic!();
|
||||||
| ----------------^^^^^^^^-
|
| ^^^^^^^^ the evaluated program panicked at 'explicit panic', $DIR/panic-assoc-never-type.rs:11:21
|
||||||
| |
|
|
||||||
| the evaluated program panicked at 'explicit panic', $DIR/panic-assoc-never-type.rs:11:21
|
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#![feature(never_type)]
|
#![feature(never_type)]
|
||||||
|
|
||||||
const VOID: ! = panic!();
|
const VOID: ! = panic!();
|
||||||
//~^ ERROR any use of this value will cause an error
|
//~^ ERROR evaluation of constant value failed
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let _ = VOID;
|
let _ = VOID;
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/panic-never-type.rs:6:17
|
--> $DIR/panic-never-type.rs:6:17
|
||||||
|
|
|
|
||||||
LL | const VOID: ! = panic!();
|
LL | const VOID: ! = panic!();
|
||||||
| ----------------^^^^^^^^-
|
| ^^^^^^^^ the evaluated program panicked at 'explicit panic', $DIR/panic-never-type.rs:6:17
|
||||||
| |
|
|
||||||
| the evaluated program panicked at 'explicit panic', $DIR/panic-never-type.rs:6:17
|
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#[unwind(aborts)]
|
#[unwind(aborts)]
|
||||||
const fn foo() {
|
const fn foo() {
|
||||||
panic!() //~ ERROR any use of this value will cause an error
|
panic!() //~ ERROR evaluation of constant value failed
|
||||||
}
|
}
|
||||||
|
|
||||||
const _: () = foo();
|
const _: () = foo();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/unwind-abort.rs:5:5
|
--> $DIR/unwind-abort.rs:5:5
|
||||||
|
|
|
|
||||||
LL | panic!()
|
LL | panic!()
|
||||||
|
@ -6,10 +6,9 @@ LL | panic!()
|
||||||
| |
|
| |
|
||||||
| the evaluated program panicked at 'explicit panic', $DIR/unwind-abort.rs:5:5
|
| the evaluated program panicked at 'explicit panic', $DIR/unwind-abort.rs:5:5
|
||||||
| inside `foo` at $SRC_DIR/std/src/panic.rs:LL:COL
|
| inside `foo` at $SRC_DIR/std/src/panic.rs:LL:COL
|
||||||
| inside `_` at $DIR/unwind-abort.rs:8:15
|
|
||||||
...
|
...
|
||||||
LL | const _: () = foo();
|
LL | const _: () = foo();
|
||||||
| --------------------
|
| ----- inside `_` at $DIR/unwind-abort.rs:8:15
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $SRC_DIR/core/src/option.rs:LL:COL
|
--> $SRC_DIR/core/src/option.rs:LL:COL
|
||||||
|
|
|
|
||||||
LL | None => panic!("called `Option::unwrap()` on a `None` value"),
|
LL | None => panic!("called `Option::unwrap()` on a `None` value"),
|
||||||
|
@ -6,12 +6,11 @@ LL | None => panic!("called `Option::unwrap()` on a `None` value"),
|
||||||
| |
|
| |
|
||||||
| the evaluated program panicked at 'called `Option::unwrap()` on a `None` value', $DIR/const-unwrap.rs:9:38
|
| the evaluated program panicked at 'called `Option::unwrap()` on a `None` value', $DIR/const-unwrap.rs:9:38
|
||||||
| inside `Option::<i32>::unwrap` at $SRC_DIR/core/src/panic.rs:LL:COL
|
| inside `Option::<i32>::unwrap` at $SRC_DIR/core/src/panic.rs:LL:COL
|
||||||
| inside `BAR` at $DIR/const-unwrap.rs:9:18
|
|
||||||
|
|
|
|
||||||
::: $DIR/const-unwrap.rs:9:1
|
::: $DIR/const-unwrap.rs:9:18
|
||||||
|
|
|
|
||||||
LL | const BAR: i32 = Option::<i32>::None.unwrap();
|
LL | const BAR: i32 = Option::<i32>::None.unwrap();
|
||||||
| ----------------------------------------------
|
| ---------------------------- inside `BAR` at $DIR/const-unwrap.rs:9:18
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
error[E0080]: any use of this value will cause an error
|
error[E0080]: evaluation of constant value failed
|
||||||
--> $DIR/assert.rs:10:15
|
--> $DIR/assert.rs:10:15
|
||||||
|
|
|
|
||||||
LL | const _: () = assert!(false);
|
LL | const _: () = assert!(false);
|
||||||
| --------------^^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^^ the evaluated program panicked at 'assertion failed: false', $DIR/assert.rs:10:15
|
||||||
| |
|
|
||||||
| the evaluated program panicked at 'assertion failed: false', $DIR/assert.rs:10:15
|
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `assert` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `assert` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,6 @@ const _: () = assert!(true);
|
||||||
|
|
||||||
const _: () = assert!(false);
|
const _: () = assert!(false);
|
||||||
//[stock]~^ ERROR panicking in constants is unstable
|
//[stock]~^ ERROR panicking in constants is unstable
|
||||||
//[const_panic]~^^ ERROR any use of this value will cause an error
|
//[const_panic]~^^ ERROR evaluation of constant value failed
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue