]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/tests/ui/implicit_saturating_sub.rs
Auto merge of #71794 - RalfJung:miri, r=RalfJung
[rust.git] / src / tools / clippy / tests / ui / implicit_saturating_sub.rs
1 // run-rustfix
2 #![allow(unused_assignments, unused_mut, clippy::assign_op_pattern)]
3 #![warn(clippy::implicit_saturating_sub)]
4
5 fn main() {
6     // Tests for unsigned integers
7
8     let end_8: u8 = 10;
9     let start_8: u8 = 5;
10     let mut u_8: u8 = end_8 - start_8;
11
12     // Lint
13     if u_8 > 0 {
14         u_8 = u_8 - 1;
15     }
16
17     match end_8 {
18         10 => {
19             // Lint
20             if u_8 > 0 {
21                 u_8 -= 1;
22             }
23         },
24         11 => u_8 += 1,
25         _ => u_8 = 0,
26     }
27
28     let end_16: u16 = 40;
29     let start_16: u16 = 35;
30
31     let mut u_16: u16 = end_16 - start_16;
32
33     // Lint
34     if u_16 > 0 {
35         u_16 -= 1;
36     }
37
38     let mut end_32: u32 = 7000;
39     let mut start_32: u32 = 7010;
40
41     let mut u_32: u32 = end_32 - start_32;
42
43     // Lint
44     if u_32 != 0 {
45         u_32 -= 1;
46     }
47
48     // No Lint
49     if u_32 > 0 {
50         u_16 += 1;
51     }
52
53     // No Lint
54     if u_32 != 0 {
55         end_32 -= 1;
56         start_32 += 1;
57     }
58
59     let mut end_64: u64 = 75001;
60     let mut start_64: u64 = 75000;
61
62     let mut u_64: u64 = end_64 - start_64;
63
64     // Lint
65     if u_64 > 0 {
66         u_64 -= 1;
67     }
68
69     // Lint
70     if 0 < u_64 {
71         u_64 -= 1;
72     }
73
74     // Lint
75     if 0 != u_64 {
76         u_64 -= 1;
77     }
78
79     // No Lint
80     if u_64 >= 1 {
81         u_64 -= 1;
82     }
83
84     // No Lint
85     if u_64 > 0 {
86         end_64 -= 1;
87     }
88
89     // Tests for usize
90     let end_usize: usize = 8054;
91     let start_usize: usize = 8050;
92
93     let mut u_usize: usize = end_usize - start_usize;
94
95     // Lint
96     if u_usize > 0 {
97         u_usize -= 1;
98     }
99
100     // Tests for signed integers
101
102     let endi_8: i8 = 10;
103     let starti_8: i8 = 50;
104
105     let mut i_8: i8 = endi_8 - starti_8;
106
107     // Lint
108     if i_8 > i8::MIN {
109         i_8 -= 1;
110     }
111
112     // Lint
113     if i_8 > i8::min_value() {
114         i_8 -= 1;
115     }
116
117     // Lint
118     if i_8 != i8::MIN {
119         i_8 -= 1;
120     }
121
122     // Lint
123     if i_8 != i8::min_value() {
124         i_8 -= 1;
125     }
126
127     let endi_16: i16 = 45;
128     let starti_16: i16 = 44;
129
130     let mut i_16: i16 = endi_16 - starti_16;
131
132     // Lint
133     if i_16 > i16::MIN {
134         i_16 -= 1;
135     }
136
137     // Lint
138     if i_16 > i16::min_value() {
139         i_16 -= 1;
140     }
141
142     // Lint
143     if i_16 != i16::MIN {
144         i_16 -= 1;
145     }
146
147     // Lint
148     if i_16 != i16::min_value() {
149         i_16 -= 1;
150     }
151
152     let endi_32: i32 = 45;
153     let starti_32: i32 = 44;
154
155     let mut i_32: i32 = endi_32 - starti_32;
156
157     // Lint
158     if i_32 > i32::MIN {
159         i_32 -= 1;
160     }
161
162     // Lint
163     if i_32 > i32::min_value() {
164         i_32 -= 1;
165     }
166
167     // Lint
168     if i_32 != i32::MIN {
169         i_32 -= 1;
170     }
171
172     // Lint
173     if i_32 != i32::min_value() {
174         i_32 -= 1;
175     }
176
177     let endi_64: i64 = 45;
178     let starti_64: i64 = 44;
179
180     let mut i_64: i64 = endi_64 - starti_64;
181
182     // Lint
183     if i64::min_value() < i_64 {
184         i_64 -= 1;
185     }
186
187     // Lint
188     if i64::MIN != i_64 {
189         i_64 -= 1;
190     }
191
192     // Lint
193     if i64::MIN < i_64 {
194         i_64 -= 1;
195     }
196
197     // No Lint
198     if i_64 > 0 {
199         i_64 -= 1;
200     }
201
202     // No Lint
203     if i_64 != 0 {
204         i_64 -= 1;
205     }
206 }