fix: wildcard_enum_match_arm suggests wrongly with raw identifiers
This commit is contained in:
parent
62fd159a5d
commit
e50ef68f0c
4 changed files with 42 additions and 6 deletions
|
|
@ -1,4 +1,5 @@
|
|||
use clippy_utils::diagnostics::{span_lint_and_sugg, span_lint_and_then};
|
||||
use clippy_utils::source::SpanRangeExt;
|
||||
use clippy_utils::ty::is_type_diagnostic_item;
|
||||
use clippy_utils::{is_refutable, peel_hir_pat_refs, recurse_or_patterns};
|
||||
use rustc_errors::Applicability;
|
||||
|
|
@ -116,11 +117,12 @@ pub(crate) fn check(cx: &LateContext<'_>, ex: &Expr<'_>, arms: &[Arm<'_>]) {
|
|||
let format_suggestion = |variant: &VariantDef| {
|
||||
format!(
|
||||
"{}{}{}{}",
|
||||
if let Some(ident) = wildcard_ident {
|
||||
format!("{} @ ", ident.name)
|
||||
} else {
|
||||
String::new()
|
||||
},
|
||||
wildcard_ident.map_or(String::new(), |ident| {
|
||||
ident
|
||||
.span
|
||||
.get_source_text(cx)
|
||||
.map_or_else(|| format!("{} @ ", ident.name), |s| format!("{s} @ "))
|
||||
}),
|
||||
if let CommonPrefixSearcher::Path(path_prefix) = path_prefix {
|
||||
let mut s = String::new();
|
||||
for seg in path_prefix {
|
||||
|
|
|
|||
|
|
@ -105,3 +105,17 @@ fn main() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn issue15091() {
|
||||
enum Foo {
|
||||
A,
|
||||
B,
|
||||
C,
|
||||
}
|
||||
|
||||
match Foo::A {
|
||||
Foo::A => {},
|
||||
r#type @ Foo::B | r#type @ Foo::C => {},
|
||||
//~^ wildcard_enum_match_arm
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,3 +105,17 @@ fn main() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn issue15091() {
|
||||
enum Foo {
|
||||
A,
|
||||
B,
|
||||
C,
|
||||
}
|
||||
|
||||
match Foo::A {
|
||||
Foo::A => {},
|
||||
r#type => {},
|
||||
//~^ wildcard_enum_match_arm
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,5 +40,11 @@ error: wildcard match will also match any future added variants
|
|||
LL | _ => (),
|
||||
| ^ help: try: `Enum::B | Enum::__Private`
|
||||
|
||||
error: aborting due to 6 previous errors
|
||||
error: wildcard match will also match any future added variants
|
||||
--> tests/ui/wildcard_enum_match_arm.rs:118:9
|
||||
|
|
||||
LL | r#type => {},
|
||||
| ^^^^^^ help: try: `r#type @ Foo::B | r#type @ Foo::C`
|
||||
|
||||
error: aborting due to 7 previous errors
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue