about summary refs log tree commit diff
path: root/src/tools/clippy/tests/ui/similar_names.rs
blob: 55a141209f0fcf8e0398cb5de9759af1c4e54f4e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#![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;
    //~^ similar_names

    let cake: i32;
    let cakes: i32;
    let coke: i32;
    //~^ similar_names

    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;
    //~^ similar_names

    let parser: i32;
    let parsed: i32;
    let parsee: i32;
    //~^ similar_names

    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;

    // 3 letter names are allowed to be similar
    let kta: i32;
    let ktv: i32;
}

fn foo() {
    let Foo { apple, bpple } = unimplemented!();
    let Foo {
        apple: spring,
        bpple: sprang,
        //~^ similar_names
    } = 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: ();
}