more erroneous-const tests
This commit is contained in:
parent
8a878f07e9
commit
7a01160ce4
|
@ -10,6 +10,8 @@ impl<T> PrintName<T> {
|
|||
|
||||
const fn no_codegen<T>() {
|
||||
if false {
|
||||
// This bad constant is only used in dead code in a no-codegen function... and yet we still
|
||||
// must make sure that the build fails.
|
||||
let _ = PrintName::<T>::VOID; //~ERROR could not evaluate static initializer
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,16 +27,16 @@ LL | #![warn(const_err, unconditional_panic)]
|
|||
= note: for more information, see issue #71800 <https://github.com/rust-lang/rust/issues/71800>
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $DIR/erroneous-const.rs:13:17
|
||||
--> $DIR/erroneous-const.rs:15:17
|
||||
|
|
||||
LL | let _ = PrintName::<T>::VOID;
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
| |
|
||||
| referenced constant has errors
|
||||
| inside `no_codegen::<i32>` at $DIR/erroneous-const.rs:13:17
|
||||
| inside `no_codegen::<i32>` at $DIR/erroneous-const.rs:15:17
|
||||
...
|
||||
LL | pub static FOO: () = no_codegen::<i32>();
|
||||
| ------------------- inside `FOO` at $DIR/erroneous-const.rs:17:22
|
||||
| ------------------- inside `FOO` at $DIR/erroneous-const.rs:19:22
|
||||
|
||||
error: aborting due to previous error; 2 warnings emitted
|
||||
|
||||
|
|
21
src/test/ui/consts/const-eval/erroneous-const2.rs
Normal file
21
src/test/ui/consts/const-eval/erroneous-const2.rs
Normal file
|
@ -0,0 +1,21 @@
|
|||
//! 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
|
||||
//~| WARN this was previously accepted by the compiler but is being phased out
|
||||
}
|
||||
|
||||
pub static FOO: () = {
|
||||
if false {
|
||||
// This bad constant is only used in dead code in a static initializer... and yet we still
|
||||
// must make sure that the build fails.
|
||||
let _ = PrintName::<i32>::VOID; //~ERROR could not evaluate static initializer
|
||||
}
|
||||
};
|
||||
|
||||
fn main() {
|
||||
FOO
|
||||
}
|
37
src/test/ui/consts/const-eval/erroneous-const2.stderr
Normal file
37
src/test/ui/consts/const-eval/erroneous-const2.stderr
Normal file
|
@ -0,0 +1,37 @@
|
|||
warning: this operation will panic at runtime
|
||||
--> $DIR/erroneous-const2.rs:6:22
|
||||
|
|
||||
LL | const VOID: () = [()][2];
|
||||
| ^^^^^^^ index out of bounds: the length is 1 but the index is 2
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/erroneous-const2.rs:2:20
|
||||
|
|
||||
LL | #![warn(const_err, unconditional_panic)]
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: any use of this value will cause an error
|
||||
--> $DIR/erroneous-const2.rs:6:22
|
||||
|
|
||||
LL | const VOID: () = [()][2];
|
||||
| -----------------^^^^^^^-
|
||||
| |
|
||||
| index out of bounds: the length is 1 but the index is 2
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/erroneous-const2.rs:2:9
|
||||
|
|
||||
LL | #![warn(const_err, unconditional_panic)]
|
||||
| ^^^^^^^^^
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
= note: for more information, see issue #71800 <https://github.com/rust-lang/rust/issues/71800>
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $DIR/erroneous-const2.rs:15:17
|
||||
|
|
||||
LL | let _ = PrintName::<i32>::VOID;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ referenced constant has errors
|
||||
|
||||
error: aborting due to previous error; 2 warnings emitted
|
||||
|
||||
For more information about this error, try `rustc --explain E0080`.
|
Loading…
Reference in a new issue