add test for unused erroneous const in CTFE
This commit is contained in:
parent
1fa7203161
commit
fd3851aadb
2 changed files with 63 additions and 0 deletions
20
src/test/ui/consts/const-eval/erroneous-const.rs
Normal file
20
src/test/ui/consts/const-eval/erroneous-const.rs
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
//! Make sure we error on erroneous consts even if they are unused.
|
||||||
|
#![warn(const_err, unconditional_panic)]
|
||||||
|
|
||||||
|
struct PrintName<T>(T);
|
||||||
|
impl<T> PrintName<T> {
|
||||||
|
const VOID: () = [()][2]; //~WARN any use of this value will cause an error
|
||||||
|
//~^ WARN this operation will panic at runtime
|
||||||
|
}
|
||||||
|
|
||||||
|
const fn no_codegen<T>() {
|
||||||
|
if false { //~ERROR evaluation of constant value failed
|
||||||
|
let _ = PrintName::<T>::VOID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub static FOO: () = no_codegen::<i32>(); //~ERROR could not evaluate static initializer
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
FOO
|
||||||
|
}
|
43
src/test/ui/consts/const-eval/erroneous-const.stderr
Normal file
43
src/test/ui/consts/const-eval/erroneous-const.stderr
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
warning: this operation will panic at runtime
|
||||||
|
--> $DIR/erroneous-const.rs:6:22
|
||||||
|
|
|
||||||
|
LL | const VOID: () = [()][2];
|
||||||
|
| ^^^^^^^ index out of bounds: the len is 1 but the index is 2
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/erroneous-const.rs:2:20
|
||||||
|
|
|
||||||
|
LL | #![warn(const_err, unconditional_panic)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
warning: any use of this value will cause an error
|
||||||
|
--> $DIR/erroneous-const.rs:6:22
|
||||||
|
|
|
||||||
|
LL | const VOID: () = [()][2];
|
||||||
|
| -----------------^^^^^^^-
|
||||||
|
| |
|
||||||
|
| index out of bounds: the len is 1 but the index is 2
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/erroneous-const.rs:2:9
|
||||||
|
|
|
||||||
|
LL | #![warn(const_err, unconditional_panic)]
|
||||||
|
| ^^^^^^^^^
|
||||||
|
|
||||||
|
error[E0080]: evaluation of constant value failed
|
||||||
|
--> $DIR/erroneous-const.rs:11:5
|
||||||
|
|
|
||||||
|
LL | / if false {
|
||||||
|
LL | | let _ = PrintName::<T>::VOID;
|
||||||
|
LL | | }
|
||||||
|
| |_____^ referenced constant has errors
|
||||||
|
|
||||||
|
error[E0080]: could not evaluate static initializer
|
||||||
|
--> $DIR/erroneous-const.rs:16:22
|
||||||
|
|
|
||||||
|
LL | pub static FOO: () = no_codegen::<i32>();
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^ referenced constant has errors
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors; 2 warnings emitted
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0080`.
|
Loading…
Add table
Add a link
Reference in a new issue