diff options
| author | Abderahmane Bouziane <bobmatt911@gmail.com> | 2025-06-21 23:18:46 -0400 |
|---|---|---|
| committer | Abderahmane Bouziane <bobmatt911@gmail.com> | 2025-08-16 12:36:50 -0400 |
| commit | e41fb7ca529d64d3dda9f7870a82ae2a49b130e9 (patch) | |
| tree | bcf2731bb62d8e4335530717cc77f4e22321393e | |
| parent | 76118ec84ee5c1e865d10cd5d99c02878dd56ade (diff) | |
| download | rust-e41fb7ca529d64d3dda9f7870a82ae2a49b130e9.tar.gz rust-e41fb7ca529d64d3dda9f7870a82ae2a49b130e9.zip | |
similar_names stop linting for 3-char names
| -rw-r--r-- | clippy_lints/src/non_expressive_names.rs | 5 | ||||
| -rw-r--r-- | clippy_utils/src/ast_utils/mod.rs | 2 | ||||
| -rw-r--r-- | tests/ui/similar_names.rs | 4 | ||||
| -rw-r--r-- | tests/ui/similar_names.stderr | 4 |
4 files changed, 12 insertions, 3 deletions
diff --git a/clippy_lints/src/non_expressive_names.rs b/clippy_lints/src/non_expressive_names.rs index c5873589b26..1961ac1516d 100644 --- a/clippy_lints/src/non_expressive_names.rs +++ b/clippy_lints/src/non_expressive_names.rs @@ -248,6 +248,11 @@ impl SimilarNamesNameVisitor<'_, '_, '_> { continue; } + // Skip similarity check if both names are exactly 3 characters + if count == 3 && existing_name.len == 3 { + continue; + } + let dissimilar = match existing_name.len.cmp(&count) { Ordering::Greater => existing_name.len - count != 1 || levenstein_not_1(interned_name, existing_str), Ordering::Less => count - existing_name.len != 1 || levenstein_not_1(existing_str, interned_name), diff --git a/clippy_utils/src/ast_utils/mod.rs b/clippy_utils/src/ast_utils/mod.rs index e65914b9b5e..a0246d37343 100644 --- a/clippy_utils/src/ast_utils/mod.rs +++ b/clippy_utils/src/ast_utils/mod.rs @@ -325,7 +325,7 @@ pub fn eq_item<K>(l: &Item<K>, r: &Item<K>, mut eq_kind: impl FnMut(&K, &K) -> b over(&l.attrs, &r.attrs, eq_attr) && eq_vis(&l.vis, &r.vis) && eq_kind(&l.kind, &r.kind) } -#[expect(clippy::similar_names, clippy::too_many_lines)] // Just a big match statement +#[expect(clippy::too_many_lines)] // Just a big match statement pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool { use ItemKind::*; match (l, r) { diff --git a/tests/ui/similar_names.rs b/tests/ui/similar_names.rs index 69b6ab6220b..55a141209f0 100644 --- a/tests/ui/similar_names.rs +++ b/tests/ui/similar_names.rs @@ -89,6 +89,10 @@ fn main() { let iter: i32; let item: i32; + + // 3 letter names are allowed to be similar + let kta: i32; + let ktv: i32; } fn foo() { diff --git a/tests/ui/similar_names.stderr b/tests/ui/similar_names.stderr index 8d722fb8b56..c226f73d4db 100644 --- a/tests/ui/similar_names.stderr +++ b/tests/ui/similar_names.stderr @@ -49,13 +49,13 @@ LL | let parser: i32; | ^^^^^^ error: binding's name is too similar to existing binding - --> tests/ui/similar_names.rs:98:16 + --> tests/ui/similar_names.rs:102:16 | LL | bpple: sprang, | ^^^^^^ | note: existing binding defined here - --> tests/ui/similar_names.rs:97:16 + --> tests/ui/similar_names.rs:101:16 | LL | apple: spring, | ^^^^^^ |
