about summary refs log tree commit diff
path: root/src/tools/clippy/tests/ui/unnecessary_min_or_max.fixed
blob: 2650cae5baf46072f48877a88cb763b0a9cb139f (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
//@aux-build:external_consts.rs

#![allow(unused)]
#![warn(clippy::unnecessary_min_or_max)]
#![allow(clippy::identity_op)]

extern crate external_consts;

const X: i32 = 1;

fn main() {
    // Both are Literals
    let _ = (-6_i32);
    //~^ unnecessary_min_or_max
    let _ = 9;
    //~^ unnecessary_min_or_max
    let _ = 6;
    //~^ unnecessary_min_or_max
    let _ = 9_u32;
    //~^ unnecessary_min_or_max
    let _ = 6;
    //~^ unnecessary_min_or_max
    let _ = 7_u8;
    //~^ unnecessary_min_or_max

    let x: u32 = 42;
    // unsigned with zero
    let _ = 0;
    //~^ unnecessary_min_or_max
    let _ = x;
    //~^ unnecessary_min_or_max
    let _ = 0_u32;
    //~^ unnecessary_min_or_max
    let _ = x;
    //~^ unnecessary_min_or_max

    let x: i32 = 42;
    // signed MIN
    let _ = i32::MIN;
    //~^ unnecessary_min_or_max
    let _ = x;
    //~^ unnecessary_min_or_max
    let _ = i32::MIN;
    //~^ unnecessary_min_or_max
    let _ = x;
    //~^ unnecessary_min_or_max

    let _ = i32::MIN - 0;
    //~^ unnecessary_min_or_max
    let _ = x;
    //~^ unnecessary_min_or_max

    let _ = i32::MIN - 0;
    //~^ unnecessary_min_or_max

    // The below cases shouldn't be lint
    let mut min = u32::MAX;
    for _ in 0..1000 {
        min = min.min(random_u32());
    }

    let _ = 2.min(external_consts::MAGIC_NUMBER);
    let _ = 2.max(external_consts::MAGIC_NUMBER);
    let _ = external_consts::MAGIC_NUMBER.min(2);
    let _ = external_consts::MAGIC_NUMBER.max(2);

    let _ = X.min(external_consts::MAGIC_NUMBER);
    let _ = X.max(external_consts::MAGIC_NUMBER);
    let _ = external_consts::MAGIC_NUMBER.min(X);
    let _ = external_consts::MAGIC_NUMBER.max(X);

    let _ = X.max(12);
    let _ = X.min(12);
    let _ = 12.min(X);
    let _ = 12.max(X);
    let _ = (X + 1).max(12);
    let _ = (X + 1).min(12);
    let _ = 12.min(X - 1);
    let _ = 12.max(X - 1);
}
fn random_u32() -> u32 {
    // random number generator
    0
}

struct Issue13191 {
    min: u16,
    max: u16,
}

impl Issue13191 {
    fn new() -> Self {
        Self { min: 0, max: 0 }
    }

    fn min(mut self, value: u16) -> Self {
        self.min = value;
        self
    }

    fn max(mut self, value: u16) -> Self {
        self.max = value;
        self
    }
}

fn issue_13191() {
    // should not fixed
    Issue13191::new().min(0);

    // should not fixed
    Issue13191::new().max(0);
}