Skip to content

Commit 6bbc5aa

Browse files
committed
Added tests for signed integers
1 parent 5bd34a6 commit 6bbc5aa

File tree

2 files changed

+130
-45
lines changed

2 files changed

+130
-45
lines changed

tests/ui/implicit_saturating_sub.rs

Lines changed: 75 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,130 @@
11
#![warn(clippy::implicit_saturating_sub)]
22

33
fn main() {
4+
5+
// Tests for unsigned integers
6+
47
let end_8: u8 = 10;
58
let start_8: u8 = 5;
6-
let mut i_8: u8 = end_8 - start_8;
9+
let mut u_8: u8 = end_8 - start_8;
710

811
// Lint
9-
if i_8 > 0 {
10-
i_8 -= 1;
12+
if u_8 > 0 {
13+
u_8 -= 1;
1114
}
1215

1316
match end_8 {
1417
10 => {
1518
// Lint
16-
if i_8 > 0 {
17-
i_8 -= 1;
19+
if u_8 > 0 {
20+
u_8 -= 1;
1821
}
1922
},
20-
11 => i_8 += 1,
21-
_ => i_8 = 0,
23+
11 => u_8 += 1,
24+
_ => u_8 = 0,
2225
}
2326

2427
let end_16: u16 = 35;
2528
let start_16: u16 = 40;
2629

27-
let mut i_16: u16 = end_16 - start_16;
30+
let mut u_16: u16 = end_16 - start_16;
2831

2932
// Lint
30-
if i_16 > 0 {
31-
i_16 -= 1;
33+
if u_16 > 0 {
34+
u_16 -= 1;
3235
}
3336

3437
let mut end_32: u32 = 7000;
3538
let mut start_32: u32 = 7010;
3639

37-
let mut i_32: u32 = end_32 - start_32;
40+
let mut u_32: u32 = end_32 - start_32;
3841

3942
// Lint
40-
if i_32 != 0 {
41-
i_32 -= 1;
43+
if u_32 != 0 {
44+
u_32 -= 1;
4245
}
4346

4447
// No Lint
45-
if i_32 > 0 {
46-
i_16 += 1;
48+
if u_32 > 0 {
49+
u_16 += 1;
4750
}
4851

4952
// No Lint
50-
if i_32 != 0 {
53+
if u_32 != 0 {
5154
end_32 -= 1;
5255
start_32 += 1;
5356
}
5457

5558
let mut end_64: u64 = 75001;
5659
let mut start_64: u64 = 75000;
5760

58-
let mut i_64: u64 = end_64 - start_64;
61+
let mut u_64: u64 = end_64 - start_64;
5962

6063
// Lint
61-
if i_64 > 0 {
62-
i_64 -= 1;
64+
if u_64 > 0 {
65+
u_64 -= 1;
6366
}
6467

6568
// No Lint
66-
if i_64 >= 1 {
67-
i_64 -= 1;
69+
if u_64 >= 1 {
70+
u_64 -= 1;
6871
}
6972

7073
// No Lint
71-
if i_64 > 0 {
74+
if u_64 > 0 {
7275
end_64 -= 1;
7376
}
7477

75-
// Should signed integers trigger the lint ?
76-
// let endi_64: i64 = 45;
77-
// let starti_64: i64 = 44;
78+
// Tests for usize
79+
let end_usize: usize = 8054;
80+
let start_usize: usize = 8050;
81+
82+
let mut u_usize: usize = end_usize - start_usize;
83+
84+
// Lint
85+
if u_usize > 0 {
86+
u_usize -= 1;
87+
}
88+
89+
// Tests for signed integers
90+
91+
let endi_8: i8 = 10;
92+
let starti_8: i8 = 50;
93+
94+
let mut i_8: i8 = endi_8 - starti_8;
95+
96+
// Lint
97+
if i_8 > i8::MIN {
98+
i_8 -= 1;
99+
}
100+
101+
let endi_16: i16 = 45;
102+
let starti_16: i16 = 44;
78103

79-
// let mut ii_64 = endi_64 - starti_64;
104+
let mut i_16: i16 = endi_16 - starti_16;
80105

81-
// Should this produce a warning
82-
// if ii_64 > 0 {
83-
// ii_64 -= 1;
84-
// }
106+
// Lint
107+
if i_16 > i16::MIN {
108+
i_16 -= 1;
109+
}
110+
111+
let endi_32: i32 = 45;
112+
let starti_32: i32 = 44;
113+
114+
let mut i_32: i32 = endi_32 - starti_32;
115+
116+
// Lint
117+
if i_32 > i32::MIN {
118+
i_32 -= 1;
119+
}
120+
121+
let endi_64: i64 = 45;
122+
let starti_64: i64 = 44;
123+
124+
let mut i_64: i64 = endi_64 - starti_64;
125+
126+
// Lint
127+
if i_64 > i64::MIN {
128+
i_64 -= 1;
129+
}
85130
}
Lines changed: 55 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,84 @@
11
error: Implicitly performing saturating subtraction
2-
--> $DIR/implicit_saturating_sub.rs:9:5
2+
--> $DIR/implicit_saturating_sub.rs:12:5
33
|
4-
LL | / if i_8 > 0 {
5-
LL | | i_8 -= 1;
4+
LL | / if u_8 > 0 {
5+
LL | | u_8 -= 1;
66
LL | | }
7-
| |_____^ help: try: `i_8 = i_8.saturating_sub(1);`
7+
| |_____^ help: try: `u_8 = u_8.saturating_sub(1);`
88
|
99
= note: `-D clippy::implicit-saturating-sub` implied by `-D warnings`
1010

1111
error: Implicitly performing saturating subtraction
12-
--> $DIR/implicit_saturating_sub.rs:16:13
12+
--> $DIR/implicit_saturating_sub.rs:19:13
1313
|
14-
LL | / if i_8 > 0 {
15-
LL | | i_8 -= 1;
14+
LL | / if u_8 > 0 {
15+
LL | | u_8 -= 1;
1616
LL | | }
17-
| |_____________^ help: try: `i_8 = i_8.saturating_sub(1);`
17+
| |_____________^ help: try: `u_8 = u_8.saturating_sub(1);`
18+
19+
error: Implicitly performing saturating subtraction
20+
--> $DIR/implicit_saturating_sub.rs:33:5
21+
|
22+
LL | / if u_16 > 0 {
23+
LL | | u_16 -= 1;
24+
LL | | }
25+
| |_____^ help: try: `u_16 = u_16.saturating_sub(1);`
26+
27+
error: Implicitly performing saturating subtraction
28+
--> $DIR/implicit_saturating_sub.rs:43:5
29+
|
30+
LL | / if u_32 != 0 {
31+
LL | | u_32 -= 1;
32+
LL | | }
33+
| |_____^ help: try: `u_32 = u_32.saturating_sub(1);`
34+
35+
error: Implicitly performing saturating subtraction
36+
--> $DIR/implicit_saturating_sub.rs:64:5
37+
|
38+
LL | / if u_64 > 0 {
39+
LL | | u_64 -= 1;
40+
LL | | }
41+
| |_____^ help: try: `u_64 = u_64.saturating_sub(1);`
42+
43+
error: Implicitly performing saturating subtraction
44+
--> $DIR/implicit_saturating_sub.rs:85:5
45+
|
46+
LL | / if u_usize > 0 {
47+
LL | | u_usize -= 1;
48+
LL | | }
49+
| |_____^ help: try: `u_usize = u_usize.saturating_sub(1);`
50+
51+
error: Implicitly performing saturating subtraction
52+
--> $DIR/implicit_saturating_sub.rs:97:5
53+
|
54+
LL | / if i_8 > i8::MIN {
55+
LL | | i_8 -= 1;
56+
LL | | }
57+
| |_____^ help: try: `i_8 = i_8.saturating_sub(1);`
1858

1959
error: Implicitly performing saturating subtraction
20-
--> $DIR/implicit_saturating_sub.rs:30:5
60+
--> $DIR/implicit_saturating_sub.rs:107:5
2161
|
22-
LL | / if i_16 > 0 {
62+
LL | / if i_16 > i16::MIN {
2363
LL | | i_16 -= 1;
2464
LL | | }
2565
| |_____^ help: try: `i_16 = i_16.saturating_sub(1);`
2666

2767
error: Implicitly performing saturating subtraction
28-
--> $DIR/implicit_saturating_sub.rs:40:5
68+
--> $DIR/implicit_saturating_sub.rs:117:5
2969
|
30-
LL | / if i_32 != 0 {
70+
LL | / if i_32 > i32::MIN {
3171
LL | | i_32 -= 1;
3272
LL | | }
3373
| |_____^ help: try: `i_32 = i_32.saturating_sub(1);`
3474

3575
error: Implicitly performing saturating subtraction
36-
--> $DIR/implicit_saturating_sub.rs:61:5
76+
--> $DIR/implicit_saturating_sub.rs:127:5
3777
|
38-
LL | / if i_64 > 0 {
78+
LL | / if i_64 > i64::MIN {
3979
LL | | i_64 -= 1;
4080
LL | | }
4181
| |_____^ help: try: `i_64 = i_64.saturating_sub(1);`
4282

43-
error: aborting due to 5 previous errors
83+
error: aborting due to 10 previous errors
4484

0 commit comments

Comments
 (0)