rust/tests/ui/similar_names.rs
Trevor Gross 09f18f61c6 [similar_names] don't raise if the first character is different
A lot of cases of the "noise" cases of `similar_names` come from two
idents with a different first letter, which is easy enough to
differentiate visually but causes this lint to be raised.

Do not raise the lint in these cases, as long as the first character
does not have a lookalike.

Link: https://github.com/rust-lang/rust-clippy/issues/10926
2024-02-09 23:19:27 -06:00

127 lines
2.7 KiB
Rust

#![warn(clippy::similar_names)]
#![allow(
unused,
clippy::println_empty_string,
clippy::empty_loop,
clippy::never_loop,
clippy::diverging_sub_expression,
clippy::let_unit_value
)]
struct Foo {
apple: i32,
bpple: i32,
}
fn main() {
let specter: i32;
let spectre: i32;
// ok; first letter is different enough
let apple: i32;
let bpple: i32;
let cpple: i32;
let a_bar: i32;
let b_bar: i32;
let c_bar: i32;
let items = [5];
for item in &items {
loop {}
}
let foo_x: i32;
let foo_y: i32;
let rhs: i32;
let lhs: i32;
let bla_rhs: i32;
let bla_lhs: i32;
let blubrhs: i32;
let blublhs: i32;
let blubx: i32;
let bluby: i32;
//~^ ERROR: binding's name is too similar to existing binding
let cake: i32;
let cakes: i32;
let coke: i32;
//~^ ERROR: binding's name is too similar to existing binding
match 5 {
cheese @ 1 => {},
rabbit => panic!(),
}
let cheese: i32;
match (42, 43) {
(cheese1, 1) => {},
(cheese2, 2) => panic!(),
_ => println!(""),
}
let ipv4: i32;
let ipv6: i32;
let abcd1: i32;
let abdc2: i32;
let xyz1abc: i32;
let xyz2abc: i32;
let xyzeabc: i32;
//~^ ERROR: binding's name is too similar to existing binding
let parser: i32;
let parsed: i32;
let parsee: i32;
//~^ ERROR: binding's name is too similar to existing binding
let setter: i32;
let getter: i32;
let tx1: i32;
let rx1: i32;
let tx_cake: i32;
let rx_cake: i32;
// names often used in win32 code (for example WindowProc)
let wparam: i32;
let lparam: i32;
let iter: i32;
let item: i32;
}
fn foo() {
let Foo { apple, bpple } = unimplemented!();
let Foo {
apple: spring,
bpple: sprang,
//~^ ERROR: binding's name is too similar to existing binding
} = unimplemented!();
}
// false positive similar_names (#3057, #2651)
// clippy claimed total_reg_src_size and total_size and
// numb_reg_src_checkouts and total_bin_size were similar
#[derive(Debug, Clone)]
pub(crate) struct DirSizes {
pub(crate) total_size: u64,
pub(crate) numb_bins: u64,
pub(crate) total_bin_size: u64,
pub(crate) total_reg_size: u64,
pub(crate) total_git_db_size: u64,
pub(crate) total_git_repos_bare_size: u64,
pub(crate) numb_git_repos_bare_repos: u64,
pub(crate) numb_git_checkouts: u64,
pub(crate) total_git_chk_size: u64,
pub(crate) total_reg_cache_size: u64,
pub(crate) total_reg_src_size: u64,
pub(crate) numb_reg_cache_entries: u64,
pub(crate) numb_reg_src_checkouts: u64,
}
fn ignore_underscore_prefix() {
let hello: ();
let _hello: ();
}