about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2024-03-19 17:00:31 +0100
committerGuillaume Gomez <guillaume1.gomez@gmail.com>2024-08-29 20:20:13 +0200
commit27c63433659773c70dca86a3d6f3b9bd7654c2c3 (patch)
treead7b56f1ee19058fec1e320a20597ce5014d4d33
parent2622a87587ada00d6aac1d036da8a2f579a675ba (diff)
Add ui test to ensure that if `0` is returned from both `if` and `else`, it will not break clippy
-rw-r--r--tests/ui/implicit_saturating_sub.fixed13
-rw-r--r--tests/ui/implicit_saturating_sub.rs6
-rw-r--r--tests/ui/manual_arithmetic_check.fixed8
-rw-r--r--tests/ui/manual_arithmetic_check.rs4
-rw-r--r--tests/ui/manual_arithmetic_check.stderr8
5 files changed, 29 insertions, 10 deletions
diff --git a/tests/ui/implicit_saturating_sub.fixed b/tests/ui/implicit_saturating_sub.fixed
index 27f679797dd..81cc1494914 100644
--- a/tests/ui/implicit_saturating_sub.fixed
+++ b/tests/ui/implicit_saturating_sub.fixed
@@ -184,18 +184,18 @@ fn main() {
     let mut m = Mock;
     let mut u_32 = 3000;
     let a = 200;
-    let mut _b = 8;
+    let mut b = 8;
 
     if m != 0 {
         m -= 1;
     }
 
     if a > 0 {
-        _b -= 1;
+        b -= 1;
     }
 
     if 0 > a {
-        _b -= 1;
+        b -= 1;
     }
 
     if u_32 > 0 {
@@ -214,4 +214,11 @@ fn main() {
     } else if u_32 > 0 {
         u_32 -= 1;
     }
+
+    let result = if a < b {
+        println!("we shouldn't remove this");
+        0
+    } else {
+        a - b
+    };
 }
diff --git a/tests/ui/implicit_saturating_sub.rs b/tests/ui/implicit_saturating_sub.rs
index 05f7d852383..f73396ebd27 100644
--- a/tests/ui/implicit_saturating_sub.rs
+++ b/tests/ui/implicit_saturating_sub.rs
@@ -230,18 +230,18 @@ fn main() {
     let mut m = Mock;
     let mut u_32 = 3000;
     let a = 200;
-    let mut _b = 8;
+    let mut b = 8;
 
     if m != 0 {
         m -= 1;
     }
 
     if a > 0 {
-        _b -= 1;
+        b -= 1;
     }
 
     if 0 > a {
-        _b -= 1;
+        b -= 1;
     }
 
     if u_32 > 0 {
diff --git a/tests/ui/manual_arithmetic_check.fixed b/tests/ui/manual_arithmetic_check.fixed
index afb2abcbe90..600fcd3765d 100644
--- a/tests/ui/manual_arithmetic_check.fixed
+++ b/tests/ui/manual_arithmetic_check.fixed
@@ -1,8 +1,10 @@
 #![warn(clippy::implicit_saturating_sub)]
+#![allow(clippy::if_same_then_else)]
 
 fn main() {
     let a = 12u32;
     let b = 13u32;
+    let c = 8u32;
 
     let result = a.saturating_sub(b);
     //~^ ERROR: manual arithmetic check found
@@ -13,4 +15,10 @@ fn main() {
     //~^ ERROR: manual arithmetic check found
     let result = a.saturating_sub(b);
     //~^ ERROR: manual arithmetic check found
+
+    // Should not warn!
+    let result = if a > b { a - b } else { a - c };
+
+    // Just to check it won't break clippy.
+    let result = if b > a { 0 } else { 0 };
 }
diff --git a/tests/ui/manual_arithmetic_check.rs b/tests/ui/manual_arithmetic_check.rs
index c11ac7097fc..33f5adafe7e 100644
--- a/tests/ui/manual_arithmetic_check.rs
+++ b/tests/ui/manual_arithmetic_check.rs
@@ -1,4 +1,5 @@
 #![warn(clippy::implicit_saturating_sub)]
+#![allow(clippy::if_same_then_else)]
 
 fn main() {
     let a = 12u32;
@@ -17,4 +18,7 @@ fn main() {
 
     // Should not warn!
     let result = if a > b { a - b } else { a - c };
+
+    // Just to check it won't break clippy.
+    let result = if b > a { 0 } else { 0 };
 }
diff --git a/tests/ui/manual_arithmetic_check.stderr b/tests/ui/manual_arithmetic_check.stderr
index 153a8bb5734..b0cf73cd915 100644
--- a/tests/ui/manual_arithmetic_check.stderr
+++ b/tests/ui/manual_arithmetic_check.stderr
@@ -1,5 +1,5 @@
 error: manual arithmetic check found
-  --> tests/ui/manual_arithmetic_check.rs:7:18
+  --> tests/ui/manual_arithmetic_check.rs:9:18
    |
 LL |     let result = if a > b { a - b } else { 0 };
    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `a.saturating_sub(b)`
@@ -8,19 +8,19 @@ LL |     let result = if a > b { a - b } else { 0 };
    = help: to override `-D warnings` add `#[allow(clippy::implicit_saturating_sub)]`
 
 error: manual arithmetic check found
-  --> tests/ui/manual_arithmetic_check.rs:9:18
+  --> tests/ui/manual_arithmetic_check.rs:11:18
    |
 LL |     let result = if b < a { a - b } else { 0 };
    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `a.saturating_sub(b)`
 
 error: manual arithmetic check found
-  --> tests/ui/manual_arithmetic_check.rs:12:18
+  --> tests/ui/manual_arithmetic_check.rs:14:18
    |
 LL |     let result = if a < b { 0 } else { a - b };
    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `a.saturating_sub(b)`
 
 error: manual arithmetic check found
-  --> tests/ui/manual_arithmetic_check.rs:14:18
+  --> tests/ui/manual_arithmetic_check.rs:16:18
    |
 LL |     let result = if b > a { 0 } else { a - b };
    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `a.saturating_sub(b)`