Auto merge of #86460 - JohnTitor:use-static-in-pattern-err, r=oli-obk

Refactor `PatternError` structure

Now we emit the `StaticInPattern` error precisely.
Fixes #68395
r? `@oli-obk`
This commit is contained in:
bors 2021-06-19 19:46:02 +00:00
commit 150fad30ea
9 changed files with 51 additions and 54 deletions

View file

@ -1,10 +0,0 @@
fn main() {
let i = 5;
let index = 6;
match i {
0..=index => println!("winner"),
//~^ ERROR runtime values cannot be referenced in patterns
_ => println!("hello"),
}
}

View file

@ -1,9 +0,0 @@
error[E0080]: runtime values cannot be referenced in patterns
--> $DIR/issue-27895.rs:6:13
|
LL | 0..=index => println!("winner"),
| ^^^^^
error: aborting due to previous error
For more information about this error, try `rustc --explain E0080`.

View file

@ -1,7 +0,0 @@
fn main() {
let x = 0;
match 1 {
0 ..= x => {}
//~^ ERROR runtime values cannot be referenced in patterns
};
}

View file

@ -1,9 +0,0 @@
error[E0080]: runtime values cannot be referenced in patterns
--> $DIR/non-constant-in-const-path.rs:4:15
|
LL | 0 ..= x => {}
| ^
error: aborting due to previous error
For more information about this error, try `rustc --explain E0080`.

View file

@ -1,5 +0,0 @@
fn main() {
let x = 255u8;
let 0u8..=x = 0;
//~^ ERROR runtime values cannot be referenced in patterns
}

View file

@ -1,9 +0,0 @@
error[E0080]: runtime values cannot be referenced in patterns
--> $DIR/issue-68394-let-pat-runtime-value.rs:3:15
|
LL | let 0u8..=x = 0;
| ^
error: aborting due to previous error
For more information about this error, try `rustc --explain E0080`.

View file

@ -0,0 +1,18 @@
// Checks if we emit `PatternError`s correctly.
// This is also a regression test for #27895 and #68394.
static FOO: u8 = 10;
fn main() {
let x = 0;
let 0u8..=x = 0;
//~^ ERROR: runtime values cannot be referenced in patterns
let 0u8..=FOO = 0;
//~^ ERROR: statics cannot be referenced in patterns
match 1 {
0 ..= x => {}
//~^ ERROR: runtime values cannot be referenced in patterns
0 ..= FOO => {}
//~^ ERROR: statics cannot be referenced in patterns
};
}

View file

@ -0,0 +1,28 @@
error[E0080]: runtime values cannot be referenced in patterns
--> $DIR/non-constant-in-const-path.rs:8:15
|
LL | let 0u8..=x = 0;
| ^
error[E0158]: statics cannot be referenced in patterns
--> $DIR/non-constant-in-const-path.rs:10:15
|
LL | let 0u8..=FOO = 0;
| ^^^
error[E0080]: runtime values cannot be referenced in patterns
--> $DIR/non-constant-in-const-path.rs:13:15
|
LL | 0 ..= x => {}
| ^
error[E0158]: statics cannot be referenced in patterns
--> $DIR/non-constant-in-const-path.rs:15:15
|
LL | 0 ..= FOO => {}
| ^^^
error: aborting due to 4 previous errors
Some errors have detailed explanations: E0080, E0158.
For more information about an error, try `rustc --explain E0080`.