rust/tests/ui/resolve/const-with-typo-in-pattern-binding.stderr
Esteban Küber 2487765b88 Detect const in pattern with typo
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.
2024-11-20 17:55:18 +00:00

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