mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-03 05:27:36 +00:00

When writing a constant name incorrectly in a pattern, the pattern will be identified as a new binding. We look for consts in the current crate, consts that where imported in the current crate and for local `let` bindings in case someone got them confused with `const`s. ``` error: unreachable pattern --> $DIR/const-with-typo-in-pattern-binding.rs:30:9 | LL | GOOOD => {} | ----- matches any value LL | LL | _ => {} | ^ no value can reach this | help: you might have meant to pattern match against the value of similarly named constant `GOOD` instead of introducing a new catch-all binding | LL | GOOD => {} | ~~~~ ``` Fix #132582.
79 lines
2.4 KiB
Plaintext
79 lines
2.4 KiB
Plaintext
error: unreachable pattern
|
|
--> $DIR/const-with-typo-in-pattern-binding.rs:18:9
|
|
|
|
|
LL | X => {}
|
|
| - matches any value
|
|
LL | _ => {}
|
|
| ^ no value can reach this
|
|
|
|
|
note: there is a constant of the same name, which could have been used to pattern match against its value instead of introducing a new catch-all binding, but it is not accessible from this scope
|
|
--> $DIR/const-with-typo-in-pattern-binding.rs:5:5
|
|
|
|
|
LL | const X: i32 = 0;
|
|
| ^^^^^^^^^^^^
|
|
note: the lint level is defined here
|
|
--> $DIR/const-with-typo-in-pattern-binding.rs:1:9
|
|
|
|
|
LL | #![deny(unreachable_patterns)]
|
|
| ^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: unreachable pattern
|
|
--> $DIR/const-with-typo-in-pattern-binding.rs:24:9
|
|
|
|
|
LL | GOD => {}
|
|
| --- matches any value
|
|
LL |
|
|
LL | _ => {}
|
|
| ^ no value can reach this
|
|
|
|
|
help: you might have meant to pattern match against the value of similarly named constant `god` instead of introducing a new catch-all binding
|
|
|
|
|
LL | god => {}
|
|
| ~~~
|
|
|
|
error: unreachable pattern
|
|
--> $DIR/const-with-typo-in-pattern-binding.rs:30:9
|
|
|
|
|
LL | GOOOD => {}
|
|
| ----- matches any value
|
|
LL |
|
|
LL | _ => {}
|
|
| ^ no value can reach this
|
|
|
|
|
help: you might have meant to pattern match against the value of similarly named constant `GOOD` instead of introducing a new catch-all binding
|
|
|
|
|
LL | GOOD => {}
|
|
| ~~~~
|
|
|
|
error: unreachable pattern
|
|
--> $DIR/const-with-typo-in-pattern-binding.rs:36:9
|
|
|
|
|
LL | name => {}
|
|
| ---- matches any value
|
|
LL |
|
|
LL | _ => {}
|
|
| ^ no value can reach this
|
|
|
|
|
note: there is a binding of the same name; if you meant to pattern match against the value of that binding, that is a feature of constants that is not available for `let` bindings
|
|
--> $DIR/const-with-typo-in-pattern-binding.rs:14:9
|
|
|
|
|
LL | let name: i32 = 42;
|
|
| ^^^^
|
|
|
|
error: unreachable pattern
|
|
--> $DIR/const-with-typo-in-pattern-binding.rs:42:9
|
|
|
|
|
LL | ARCH => {}
|
|
| ---- matches any value
|
|
LL |
|
|
LL | _ => {}
|
|
| ^ no value can reach this
|
|
|
|
|
help: you might have meant to pattern match against the value of constant `ARCH` instead of introducing a new catch-all binding
|
|
|
|
|
LL | std::env::consts::ARCH => {}
|
|
| ~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
error: aborting due to 5 previous errors
|
|
|