diff --git a/clippy_lints/src/enum_variants.rs b/clippy_lints/src/enum_variants.rs index c4f7f39003e0..6dc6f122ebac 100644 --- a/clippy_lints/src/enum_variants.rs +++ b/clippy_lints/src/enum_variants.rs @@ -159,7 +159,8 @@ fn check_variant( } for var in &def.variants { let name = var2str(var); - if partial_match(item_name, &name) == item_name_chars { + if partial_match(item_name, &name) == item_name_chars && + name.chars().nth(item_name_chars).map_or(false, |c| !c.is_lowercase()) { span_lint(cx, lint, var.span, "Variant name starts with the enum's name"); } if partial_rmatch(item_name, &name) == item_name_chars { diff --git a/tests/ui/enum_variants.rs b/tests/ui/enum_variants.rs index 9901baf9e128..3be01427134b 100644 --- a/tests/ui/enum_variants.rs +++ b/tests/ui/enum_variants.rs @@ -102,4 +102,18 @@ mod allowed { } } +// should not lint +enum Pat { + Foo, + Bar, + Path, +} + +// should not lint +enum N { + Pos, + Neg, + Float, +} + fn main() {}