Incorrect path in E0004 match suggestion for enum from another module · Issue #137845 · rust-lang/rust (original) (raw)
Code
pub mod cat { pub enum Meow { Foo, } } fn main() { let v = cat::Meow::Foo; match v {} }
Current output
error[E0004]: non-exhaustive patterns: Meow::Foo
not covered
--> src/main.rs:8:11
|
8 | match v {}
| ^ pattern Meow::Foo
not covered
|
note: Meow
defined here
--> src/main.rs:2:14
|
2 | pub enum Meow {
| ^^^^
3 | Foo,
| --- not covered
= note: the matched value is of type Meow
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
8 ~ match v {
9 + Meow::Foo => todo!(),
10~ }
|
For more information about this error, try rustc --explain E0004
.
error: could not compile playground
(bin "playground") due to 1 previous error
Desired output
error[E0004]: non-exhaustive patterns: Meow::Foo
not covered
--> src/main.rs:8:11
|
8 | match v {}
| ^ pattern Meow::Foo
not covered
|
note: Meow
defined here
--> src/main.rs:2:14
|
2 | pub enum Meow {
| ^^^^
3 | Foo,
| --- not covered
= note: the matched value is of type Meow
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
8 ~ match v {
9 + cat::Meow::Foo => todo!(),
10~ }
|
For more information about this error, try rustc --explain E0004
.
error: could not compile playground
(bin "playground") due to 1 previous error
Rationale and extra context
I think there should be a discussion about whether the path should be in front of the name of the enum. Anyway, the code suggestion is wrong because it will cause an error if we apply it.
Other cases
Rust Version
playground(1.87.0-nightly (2025-02-28 287487624357c19b22d2))
Anything else?
No response