[−][src]Static rustc_ap_rustc_session::lint::builtin::CONST_ERR
pub static CONST_ERR: &Lint
The const_err
lint detects an erroneous expression while doing
constant evaluation.
Example
#![allow(unconditional_panic)] let x: &'static i32 = &(1 / 0);
{{produces}}
Explanation
This lint detects code that is very likely incorrect. If this lint is allowed, then the code will not be evaluated at compile-time, and instead continue to generate code to evaluate at runtime, which may panic during runtime.
Note that this lint may trigger in either inside or outside of a const context. Outside of a const context, the compiler can sometimes evaluate an expression at compile-time in order to generate more efficient code. As the compiler becomes better at doing this, it needs to decide what to do when it encounters code that it knows for certain will panic or is otherwise incorrect. Making this a hard error would prevent existing code that exhibited this behavior from compiling, breaking backwards-compatibility. However, this is almost certainly incorrect code, so this is a deny-by-default lint. For more details, see RFC 1229 and issue #28238.
Note that there are several other more specific lints associated with
compile-time evaluation, such as arithmetic_overflow
,
unconditional_panic
.