about summary refs log tree commit diff
path: root/src/tools/clippy/tests/ui/bool_comparison.rs
blob: 01ee35859f0da64c055a3eb6a9b313b77e597cb7 (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
// run-rustfix

#[warn(clippy::bool_comparison)]
fn main() {
    let x = true;
    if x == true {
        "yes"
    } else {
        "no"
    };
    if x == false {
        "yes"
    } else {
        "no"
    };
    if true == x {
        "yes"
    } else {
        "no"
    };
    if false == x {
        "yes"
    } else {
        "no"
    };
    if x != true {
        "yes"
    } else {
        "no"
    };
    if x != false {
        "yes"
    } else {
        "no"
    };
    if true != x {
        "yes"
    } else {
        "no"
    };
    if false != x {
        "yes"
    } else {
        "no"
    };
    if x < true {
        "yes"
    } else {
        "no"
    };
    if false < x {
        "yes"
    } else {
        "no"
    };
    if x > false {
        "yes"
    } else {
        "no"
    };
    if true > x {
        "yes"
    } else {
        "no"
    };
    let y = true;
    if x < y {
        "yes"
    } else {
        "no"
    };
    if x > y {
        "yes"
    } else {
        "no"
    };
}

#[allow(dead_code)]
fn issue3703() {
    struct Foo;
    impl PartialEq<bool> for Foo {
        fn eq(&self, _: &bool) -> bool {
            true
        }
    }
    impl PartialEq<Foo> for bool {
        fn eq(&self, _: &Foo) -> bool {
            true
        }
    }
    impl PartialOrd<bool> for Foo {
        fn partial_cmp(&self, _: &bool) -> Option<std::cmp::Ordering> {
            None
        }
    }
    impl PartialOrd<Foo> for bool {
        fn partial_cmp(&self, _: &Foo) -> Option<std::cmp::Ordering> {
            None
        }
    }

    if Foo == true {}
    if true == Foo {}
    if Foo != true {}
    if true != Foo {}
    if Foo == false {}
    if false == Foo {}
    if Foo != false {}
    if false != Foo {}
    if Foo < false {}
    if false < Foo {}
}

#[allow(dead_code)]
fn issue4983() {
    let a = true;
    let b = false;

    if a == !b {};
    if !a == b {};
    if a == b {};
    if !a == !b {};

    if b == !a {};
    if !b == a {};
    if b == a {};
    if !b == !a {};
}