Skip to content

Commit

Permalink
Rollup merge of #98050 - JohnTitor:issue-67945, r=compiler-errors
Browse files Browse the repository at this point in the history
Add some more regression tests for #67945

Closes #67945, added two tests from #67945 (comment), other snippets were already added in #71952 and #77439
r? `@compiler-errors`
  • Loading branch information
matthiaskrgr authored Jun 13, 2022
2 parents 62eb97a + c4b43d8 commit 3f17cd7
Show file tree
Hide file tree
Showing 6 changed files with 107 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/test/ui/const-generics/issues/issue-67945-3.full.stderr
Original file line number Diff line number Diff line change
@@ -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

21 changes: 21 additions & 0 deletions src/test/ui/const-generics/issues/issue-67945-3.min.stderr
Original file line number Diff line number Diff line change
@@ -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`.
17 changes: 17 additions & 0 deletions src/test/ui/const-generics/issues/issue-67945-3.rs
Original file line number Diff line number Diff line change
@@ -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() {}
16 changes: 16 additions & 0 deletions src/test/ui/const-generics/issues/issue-67945-4.full.stderr
Original file line number Diff line number Diff line change
@@ -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

21 changes: 21 additions & 0 deletions src/test/ui/const-generics/issues/issue-67945-4.min.stderr
Original file line number Diff line number Diff line change
@@ -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`.
16 changes: 16 additions & 0 deletions src/test/ui/const-generics/issues/issue-67945-4.rs
Original file line number Diff line number Diff line change
@@ -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() {}

0 comments on commit 3f17cd7

Please sign in to comment.