Skip to content

Commit

Permalink
Auto merge of rust-lang#9032 - kyoto7250:issue_9018, r=llogiq
Browse files Browse the repository at this point in the history
enum_variant_names should ignore when all prefixes are _

close rust-lang#9018

When Enum prefix is only an underscore, we should not issue warnings.

changelog: fix false positive in enum_variant_names
  • Loading branch information
bors committed Jun 26, 2022
2 parents ab58276 + d827b83 commit 9b15062
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 2 deletions.
7 changes: 6 additions & 1 deletion clippy_lints/src/enum_variants.rs
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ fn check_variant(cx: &LateContext<'_>, threshold: u64, def: &EnumDef<'_>, item_n
.map(|e| *e.0)
.collect();
}
let (what, value) = match (pre.is_empty(), post.is_empty()) {
let (what, value) = match (have_no_extra_prefix(&pre), post.is_empty()) {
(true, true) => return,
(false, _) => ("pre", pre.join("")),
(true, false) => {
Expand All @@ -212,6 +212,11 @@ fn check_variant(cx: &LateContext<'_>, threshold: u64, def: &EnumDef<'_>, item_n
);
}

#[must_use]
fn have_no_extra_prefix(prefixes: &[&str]) -> bool {
prefixes.iter().all(|p| p == &"" || p == &"_")
}

#[must_use]
fn to_camel_case(item_name: &str) -> String {
let mut s = String::new();
Expand Down
21 changes: 21 additions & 0 deletions tests/ui/enum_variants.rs
Original file line number Diff line number Diff line change
Expand Up @@ -158,4 +158,25 @@ enum Phase {
PostLookup,
}

mod issue9018 {
enum DoLint {
_TypeCreate,
_TypeRead,
_TypeUpdate,
_TypeDestroy,
}

enum DoLintToo {
_CreateType,
_UpdateType,
_DeleteType,
}

enum DoNotLint {
_Foo,
_Bar,
_Baz,
}
}

fn main() {}
27 changes: 26 additions & 1 deletion tests/ui/enum_variants.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -120,5 +120,30 @@ LL | | }
|
= help: remove the postfixes and use full paths to the variants instead of glob imports

error: aborting due to 12 previous errors
error: all variants have the same prefix: `_Type`
--> $DIR/enum_variants.rs:162:5
|
LL | / enum DoLint {
LL | | _TypeCreate,
LL | | _TypeRead,
LL | | _TypeUpdate,
LL | | _TypeDestroy,
LL | | }
| |_____^
|
= help: remove the prefixes and use full paths to the variants instead of glob imports

error: all variants have the same postfix: `Type`
--> $DIR/enum_variants.rs:169:5
|
LL | / enum DoLintToo {
LL | | _CreateType,
LL | | _UpdateType,
LL | | _DeleteType,
LL | | }
| |_____^
|
= help: remove the postfixes and use full paths to the variants instead of glob imports

error: aborting due to 14 previous errors

0 comments on commit 9b15062

Please sign in to comment.