Skip to content

Commit 7a01160

Browse files
committed
more erroneous-const tests
1 parent 8a878f0 commit 7a01160

File tree

4 files changed

+63
-3
lines changed

4 files changed

+63
-3
lines changed

src/test/ui/consts/const-eval/erroneous-const.rs

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ impl<T> PrintName<T> {
1010

1111
const fn no_codegen<T>() {
1212
if false {
13+
// This bad constant is only used in dead code in a no-codegen function... and yet we still
14+
// must make sure that the build fails.
1315
let _ = PrintName::<T>::VOID; //~ERROR could not evaluate static initializer
1416
}
1517
}

src/test/ui/consts/const-eval/erroneous-const.stderr

+3-3
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,16 @@ LL | #![warn(const_err, unconditional_panic)]
2727
= note: for more information, see issue #71800 <https://github.com/rust-lang/rust/issues/71800>
2828

2929
error[E0080]: could not evaluate static initializer
30-
--> $DIR/erroneous-const.rs:13:17
30+
--> $DIR/erroneous-const.rs:15:17
3131
|
3232
LL | let _ = PrintName::<T>::VOID;
3333
| ^^^^^^^^^^^^^^^^^^^^
3434
| |
3535
| referenced constant has errors
36-
| inside `no_codegen::<i32>` at $DIR/erroneous-const.rs:13:17
36+
| inside `no_codegen::<i32>` at $DIR/erroneous-const.rs:15:17
3737
...
3838
LL | pub static FOO: () = no_codegen::<i32>();
39-
| ------------------- inside `FOO` at $DIR/erroneous-const.rs:17:22
39+
| ------------------- inside `FOO` at $DIR/erroneous-const.rs:19:22
4040

4141
error: aborting due to previous error; 2 warnings emitted
4242

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
//! Make sure we error on erroneous consts even if they are unused.
2+
#![warn(const_err, unconditional_panic)]
3+
4+
struct PrintName<T>(T);
5+
impl<T> PrintName<T> {
6+
const VOID: () = [()][2]; //~WARN any use of this value will cause an error
7+
//~^ WARN this operation will panic at runtime
8+
//~| WARN this was previously accepted by the compiler but is being phased out
9+
}
10+
11+
pub static FOO: () = {
12+
if false {
13+
// This bad constant is only used in dead code in a static initializer... and yet we still
14+
// must make sure that the build fails.
15+
let _ = PrintName::<i32>::VOID; //~ERROR could not evaluate static initializer
16+
}
17+
};
18+
19+
fn main() {
20+
FOO
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
warning: this operation will panic at runtime
2+
--> $DIR/erroneous-const2.rs:6:22
3+
|
4+
LL | const VOID: () = [()][2];
5+
| ^^^^^^^ index out of bounds: the length is 1 but the index is 2
6+
|
7+
note: the lint level is defined here
8+
--> $DIR/erroneous-const2.rs:2:20
9+
|
10+
LL | #![warn(const_err, unconditional_panic)]
11+
| ^^^^^^^^^^^^^^^^^^^
12+
13+
warning: any use of this value will cause an error
14+
--> $DIR/erroneous-const2.rs:6:22
15+
|
16+
LL | const VOID: () = [()][2];
17+
| -----------------^^^^^^^-
18+
| |
19+
| index out of bounds: the length is 1 but the index is 2
20+
|
21+
note: the lint level is defined here
22+
--> $DIR/erroneous-const2.rs:2:9
23+
|
24+
LL | #![warn(const_err, unconditional_panic)]
25+
| ^^^^^^^^^
26+
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
27+
= note: for more information, see issue #71800 <https://github.com/rust-lang/rust/issues/71800>
28+
29+
error[E0080]: could not evaluate static initializer
30+
--> $DIR/erroneous-const2.rs:15:17
31+
|
32+
LL | let _ = PrintName::<i32>::VOID;
33+
| ^^^^^^^^^^^^^^^^^^^^^^ referenced constant has errors
34+
35+
error: aborting due to previous error; 2 warnings emitted
36+
37+
For more information about this error, try `rustc --explain E0080`.

0 commit comments

Comments
 (0)