Add some more regression tests for #67945

This commit is contained in:
Yuki Okushi 2022-06-13 19:51:51 +09:00
parent 083721a1a7
commit c4b43d8978
No known key found for this signature in database
GPG Key ID: 379CEEFDD63E5DD7
6 changed files with 107 additions and 0 deletions

View File

@ -0,0 +1,16 @@
error: overly complex generic constant
--> $DIR/issue-67945-3.rs:10:13
|
LL | A: [(); {
| _____________^
LL | | let x: Option<S> = None;
LL | |
LL | | 0
LL | | }],
| |_____^ blocks are not supported in generic constant
|
= help: consider moving this anonymous constant into a `const` function
= note: this operation may be supported in the future
error: aborting due to previous error

View File

@ -0,0 +1,21 @@
error: generic parameters may not be used in const operations
--> $DIR/issue-67945-3.rs:11:23
|
LL | let x: Option<S> = None;
| ^ cannot perform const operation using `S`
|
= note: type parameters may not be used in const expressions
= help: use `#![feature(generic_const_exprs)]` to allow generic const expressions
error[E0392]: parameter `S` is never used
--> $DIR/issue-67945-3.rs:9:12
|
LL | struct Bug<S> {
| ^ unused parameter
|
= help: consider removing `S`, referring to it in a field, or using a marker such as `PhantomData`
= help: if you intended `S` to be a const parameter, use `const S: usize` instead
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0392`.

View File

@ -0,0 +1,17 @@
// Regression test for
// https://github.com/rust-lang/rust/issues/67945#issuecomment-572617285
// Make sure we don't emit an E0277 error.
// revisions: full min
#![cfg_attr(full, feature(generic_const_exprs))]
#![cfg_attr(full, allow(incomplete_features))]
struct Bug<S> { //[min]~ ERROR: parameter `S` is never used
A: [(); { //[full]~ ERROR: overly complex generic constant
let x: Option<S> = None;
//[min]~^ ERROR: generic parameters may not be used in const operations
0
}],
}
fn main() {}

View File

@ -0,0 +1,16 @@
error: overly complex generic constant
--> $DIR/issue-67945-4.rs:9:13
|
LL | A: [(); {
| _____________^
LL | | let x: Option<Box<S>> = None;
LL | |
LL | | 0
LL | | }],
| |_____^ blocks are not supported in generic constant
|
= help: consider moving this anonymous constant into a `const` function
= note: this operation may be supported in the future
error: aborting due to previous error

View File

@ -0,0 +1,21 @@
error: generic parameters may not be used in const operations
--> $DIR/issue-67945-4.rs:10:27
|
LL | let x: Option<Box<S>> = None;
| ^ cannot perform const operation using `S`
|
= note: type parameters may not be used in const expressions
= help: use `#![feature(generic_const_exprs)]` to allow generic const expressions
error[E0392]: parameter `S` is never used
--> $DIR/issue-67945-4.rs:8:12
|
LL | struct Bug<S> {
| ^ unused parameter
|
= help: consider removing `S`, referring to it in a field, or using a marker such as `PhantomData`
= help: if you intended `S` to be a const parameter, use `const S: usize` instead
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0392`.

View File

@ -0,0 +1,16 @@
// Regression test for
// https://github.com/rust-lang/rust/issues/67945#issuecomment-572617285
// revisions: full min
#![cfg_attr(full, feature(generic_const_exprs))]
#![cfg_attr(full, allow(incomplete_features))]
struct Bug<S> { //[min]~ ERROR: parameter `S` is never used
A: [(); { //[full]~ ERROR: overly complex generic constant
let x: Option<Box<S>> = None;
//[min]~^ ERROR: generic parameters may not be used in const operations
0
}],
}
fn main() {}