about summary refs log tree commit diff
path: root/src/tools/clippy/tests/ui/manual_pattern_char_comparison.rs
blob: 451480df422506eff00bbb2fcfb66ba27411036e (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
#![warn(clippy::manual_pattern_char_comparison)]

struct NotStr;

impl NotStr {
    fn find(&self, _: impl FnMut(char) -> bool) {}
}

fn main() {
    let sentence = "Hello, world!";
    sentence.trim_end_matches(|c: char| c == '.' || c == ',' || c == '!' || c == '?');
    //~^ manual_pattern_char_comparison
    sentence.split(|c: char| c == '\n' || c == 'X');
    //~^ manual_pattern_char_comparison
    sentence.split(|c| c == '\n' || c == 'X');
    //~^ manual_pattern_char_comparison
    sentence.splitn(3, |c: char| c == 'X');
    //~^ manual_pattern_char_comparison
    sentence.splitn(3, |c: char| c.is_whitespace() || c == 'X');
    let char_compare = 'X';
    sentence.splitn(3, |c: char| c == char_compare);
    //~^ manual_pattern_char_comparison
    sentence.split(|c: char| matches!(c, '\n' | 'X' | 'Y'));
    //~^ manual_pattern_char_comparison
    sentence.splitn(3, |c: char| matches!(c, 'X'));
    //~^ manual_pattern_char_comparison
    sentence.splitn(3, |c: char| matches!(c, 'X' | 'W'));
    //~^ manual_pattern_char_comparison
    sentence.find(|c| c == '🎈');
    //~^ manual_pattern_char_comparison

    let not_str = NotStr;
    not_str.find(|c: char| c == 'X');

    "".find(|c| c == 'a' || c > 'z');

    let x = true;
    "".find(|c| c == 'a' || x || c == 'b');

    let d = 'd';
    "".find(|c| c == 'a' || d == 'b');

    "".find(|c| match c {
        'a' | 'b' => true,
        _ => c.is_ascii(),
    });

    "".find(|c| matches!(c, 'a' | 'b' if false));

    "".find(|c| matches!(c, 'a' | '1'..'4'));
    "".find(|c| c == 'a' || matches!(c, '1'..'4'));
    macro_rules! m {
        ($e:expr) => {
            $e == '?'
        };
    }
    "".find(|c| m!(c));
}

#[clippy::msrv = "1.57"]
fn msrv_1_57() {
    let sentence = "Hello, world!";
    sentence.trim_end_matches(|c: char| c == '.' || c == ',' || c == '!' || c == '?');
}

#[clippy::msrv = "1.58"]
fn msrv_1_58() {
    let sentence = "Hello, world!";
    sentence.trim_end_matches(|c: char| c == '.' || c == ',' || c == '!' || c == '?');
    //~^ manual_pattern_char_comparison
}