diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2021-12-08 16:08:08 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-08 16:08:08 +0100 |
| commit | 67c58327fc6c15ad7e8e15a05c8ff2314cd7ca96 (patch) | |
| tree | 87759e188fceedf4b9e715cea69b672936e0cacb /src/test | |
| parent | 317f750ff76ae680d6891de0a5087e1aa903bc6c (diff) | |
| parent | 2a95958248b243a14844cf2172edf2c3ad305670 (diff) | |
| download | rust-67c58327fc6c15ad7e8e15a05c8ff2314cd7ca96.tar.gz rust-67c58327fc6c15ad7e8e15a05c8ff2314cd7ca96.zip | |
Rollup merge of #91570 - nbdd0121:const_typeck, r=oli-obk
Evaluate inline const pat early and report error if too generic Fix #90150 ````@rustbot```` label: T-compiler F-inline_const
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/inline-const/const-match-pat-generic.rs | 25 | ||||
| -rw-r--r-- | src/test/ui/inline-const/const-match-pat-generic.stderr | 20 |
2 files changed, 36 insertions, 9 deletions
diff --git a/src/test/ui/inline-const/const-match-pat-generic.rs b/src/test/ui/inline-const/const-match-pat-generic.rs index 4486411698a..be7e1d8d449 100644 --- a/src/test/ui/inline-const/const-match-pat-generic.rs +++ b/src/test/ui/inline-const/const-match-pat-generic.rs @@ -1,16 +1,31 @@ #![allow(incomplete_features)] #![feature(inline_const_pat)] +#![feature(generic_const_exprs)] // rust-lang/rust#82518: ICE with inline-const in match referencing const-generic parameter fn foo<const V: usize>() { - match 0 { - const { V } => {}, - //~^ ERROR const parameters cannot be referenced in patterns [E0158] - _ => {}, - } + match 0 { + const { V } => {}, + //~^ ERROR const parameters cannot be referenced in patterns [E0158] + _ => {}, + } +} + +const fn f(x: usize) -> usize { + x + 1 +} + +fn bar<const V: usize>() where [(); f(V)]: { + match 0 { + const { f(V) } => {}, + //~^ ERROR constant pattern depends on a generic parameter + //~| ERROR constant pattern depends on a generic parameter + _ => {}, + } } fn main() { foo::<1>(); + bar::<1>(); } diff --git a/src/test/ui/inline-const/const-match-pat-generic.stderr b/src/test/ui/inline-const/const-match-pat-generic.stderr index a3ed41a3f6a..5fe5a7a6dad 100644 --- a/src/test/ui/inline-const/const-match-pat-generic.stderr +++ b/src/test/ui/inline-const/const-match-pat-generic.stderr @@ -1,9 +1,21 @@ error[E0158]: const parameters cannot be referenced in patterns - --> $DIR/const-match-pat-generic.rs:8:11 + --> $DIR/const-match-pat-generic.rs:9:9 | -LL | const { V } => {}, - | ^^^^^ +LL | const { V } => {}, + | ^^^^^^^^^^^ -error: aborting due to previous error +error: constant pattern depends on a generic parameter + --> $DIR/const-match-pat-generic.rs:21:9 + | +LL | const { f(V) } => {}, + | ^^^^^^^^^^^^^^ + +error: constant pattern depends on a generic parameter + --> $DIR/const-match-pat-generic.rs:21:9 + | +LL | const { f(V) } => {}, + | ^^^^^^^^^^^^^^ + +error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0158`. |
