Skip to content

Commit 471d138

Browse files
committed
Added few more tests and other cases
1 parent 409049f commit 471d138

File tree

2 files changed

+107
-19
lines changed

2 files changed

+107
-19
lines changed

tests/ui/implicit_saturating_sub.rs

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

33
fn main() {
4-
let mut end = 10;
5-
let mut start = 5;
6-
let mut i: u32 = end - start;
4+
let end_8: u8 = 10;
5+
let start_8: u8 = 5;
6+
let mut i_8: u8 = end_8 - start_8;
77

8-
if i > 0 {
9-
i -= 1;
8+
// Lint
9+
if i_8 > 0 {
10+
i_8 -= 1;
1011
}
1112

12-
match end {
13+
match end_8 {
1314
10 => {
14-
if i > 0 {
15-
i -= 1;
15+
// Lint
16+
if i_8 > 0 {
17+
i_8 -= 1;
1618
}
1719
},
18-
11 => i += 1,
19-
_ => i = 0,
20+
11 => i_8 += 1,
21+
_ => i_8 = 0,
2022
}
23+
24+
let end_16: u16 = 35;
25+
let start_16: u16 = 40;
26+
27+
let mut i_16: u16 = end_16 - start_16;
28+
29+
// Lint
30+
if i_16 > 0 {
31+
i_16 -= 1;
32+
}
33+
34+
let mut end_32: u32 = 7000;
35+
let mut start_32: u32 = 7010;
36+
37+
let mut i_32: u32 = end_32 - start_32;
38+
39+
// Lint
40+
if i_32 != 0 {
41+
i_32 -= 1;
42+
}
43+
44+
// No Lint
45+
if i_32 > 0 {
46+
i_16 += 1;
47+
}
48+
49+
// No Lint
50+
if i_32 != 0 {
51+
end_32 -= 1;
52+
start_32 += 1;
53+
}
54+
55+
let mut end_64: u64 = 75001;
56+
let mut start_64: u64 = 75000;
57+
58+
let mut i_64: u64 = end_64 - start_64;
59+
60+
// Lint
61+
if i_64 > 0 {
62+
i_64 -= 1;
63+
}
64+
65+
// No Lint
66+
if i_64 >= 1 {
67+
i_64 -= 1;
68+
}
69+
70+
// No Lint
71+
if i_64 > 0 {
72+
end_64 -= 1;
73+
}
74+
75+
// Should signed integers trigger the lint ?
76+
// let endi_64: i64 = 45;
77+
// let starti_64: i64 = 44;
78+
79+
// let mut ii_64 = endi_64 - starti_64;
80+
81+
// Should this produce a warning
82+
// if ii_64 > 0 {
83+
// ii_64 -= 1;
84+
// }
2185
}
Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,44 @@
11
error: Implicitly performing saturating subtraction
2-
--> $DIR/implicit_saturating_sub.rs:8:5
2+
--> $DIR/implicit_saturating_sub.rs:9:5
33
|
4-
LL | / if i > 0 {
5-
LL | | i -= 1;
4+
LL | / if i_8 > 0 {
5+
LL | | i_8 -= 1;
66
LL | | }
7-
| |_____^ help: try: `i.saturating_sub(1);`
7+
| |_____^ help: try: `i_8 = i_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:14:13
12+
--> $DIR/implicit_saturating_sub.rs:16:13
1313
|
14-
LL | / if i > 0 {
15-
LL | | i -= 1;
14+
LL | / if i_8 > 0 {
15+
LL | | i_8 -= 1;
1616
LL | | }
17-
| |_____________^ help: try: `i.saturating_sub(1);`
17+
| |_____________^ help: try: `i_8 = i_8.saturating_sub(1);`
1818

19-
error: aborting due to 2 previous errors
19+
error: Implicitly performing saturating subtraction
20+
--> $DIR/implicit_saturating_sub.rs:30:5
21+
|
22+
LL | / if i_16 > 0 {
23+
LL | | i_16 -= 1;
24+
LL | | }
25+
| |_____^ help: try: `i_16 = i_16.saturating_sub(1);`
26+
27+
error: Implicitly performing saturating subtraction
28+
--> $DIR/implicit_saturating_sub.rs:40:5
29+
|
30+
LL | / if i_32 != 0 {
31+
LL | | i_32 -= 1;
32+
LL | | }
33+
| |_____^ help: try: `i_32 = i_32.saturating_sub(1);`
34+
35+
error: Implicitly performing saturating subtraction
36+
--> $DIR/implicit_saturating_sub.rs:61:5
37+
|
38+
LL | / if i_64 > 0 {
39+
LL | | i_64 -= 1;
40+
LL | | }
41+
| |_____^ help: try: `i_64 = i_64.saturating_sub(1);`
42+
43+
error: aborting due to 5 previous errors
2044

0 commit comments

Comments
 (0)