about summary refs log tree commit diff
diff options
context:
space:
mode:
authory21 <30553356+y21@users.noreply.github.com>2023-07-04 00:49:18 +0200
committery21 <30553356+y21@users.noreply.github.com>2023-07-11 08:41:36 +0200
commit0b5dac09757237a407a1cdfbff16eeb4606f6390 (patch)
tree1a952d6110dc07d784a8c5df8a1b9ea034bd8b5f
parentcd1c8532e99c4c594c6704be6d4274131bb71004 (diff)
downloadrust-0b5dac09757237a407a1cdfbff16eeb4606f6390.tar.gz
rust-0b5dac09757237a407a1cdfbff16eeb4606f6390.zip
[`unnecessary_literal_unwrap`]: also handle unwrap_err_unchecked
-rw-r--r--clippy_lints/src/methods/mod.rs5
-rw-r--r--clippy_lints/src/methods/unnecessary_literal_unwrap.rs2
-rw-r--r--tests/ui/unnecessary_literal_unwrap.fixed1
-rw-r--r--tests/ui/unnecessary_literal_unwrap.rs1
-rw-r--r--tests/ui/unnecessary_literal_unwrap.stderr14
5 files changed, 17 insertions, 6 deletions
diff --git a/clippy_lints/src/methods/mod.rs b/clippy_lints/src/methods/mod.rs
index 6e936e92cbd..d6057ce45f6 100644
--- a/clippy_lints/src/methods/mod.rs
+++ b/clippy_lints/src/methods/mod.rs
@@ -4000,9 +4000,6 @@ impl Methods {
                     unnecessary_literal_unwrap::check(cx, expr, recv, name, args);
                     unwrap_used::check(cx, expr, recv, false, self.allow_unwrap_in_tests);
                 },
-                ("unwrap_unchecked", []) => {
-                    unnecessary_literal_unwrap::check(cx, expr, recv, name, args);
-                }
                 ("unwrap_err", []) => {
                     unnecessary_literal_unwrap::check(cx, expr, recv, name, args);
                     unwrap_used::check(cx, expr, recv, true, self.allow_unwrap_in_tests);
@@ -4022,7 +4019,7 @@ impl Methods {
                     }
                     unnecessary_literal_unwrap::check(cx, expr, recv, name, args);
                 },
-                ("unwrap_or_default", []) => {
+                ("unwrap_or_default" | "unwrap_unchecked" | "unwrap_err_unchecked", []) => {
                     unnecessary_literal_unwrap::check(cx, expr, recv, name, args);
                 }
                 ("unwrap_or_else", [u_arg]) => {
diff --git a/clippy_lints/src/methods/unnecessary_literal_unwrap.rs b/clippy_lints/src/methods/unnecessary_literal_unwrap.rs
index 13895b67ed0..54de300e6bc 100644
--- a/clippy_lints/src/methods/unnecessary_literal_unwrap.rs
+++ b/clippy_lints/src/methods/unnecessary_literal_unwrap.rs
@@ -67,7 +67,7 @@ pub(super) fn check(
                 (expr.span.with_hi(args[0].span.lo()), "panic!(".to_string()),
                 (expr.span.with_lo(args[0].span.hi()), ")".to_string()),
             ]),
-            ("Some" | "Ok", "unwrap_unchecked", _) => {
+            ("Some" | "Ok", "unwrap_unchecked", _) | ("Err", "unwrap_err_unchecked", _) => {
                 let mut suggs = vec![
                     (recv.span.with_hi(call_args[0].span.lo()), String::new()),
                     (expr.span.with_lo(call_args[0].span.hi()), String::new()),
diff --git a/tests/ui/unnecessary_literal_unwrap.fixed b/tests/ui/unnecessary_literal_unwrap.fixed
index 0e7ba6bcbbb..276cd800b89 100644
--- a/tests/ui/unnecessary_literal_unwrap.fixed
+++ b/tests/ui/unnecessary_literal_unwrap.fixed
@@ -85,6 +85,7 @@ fn unwrap_unchecked() {
     let _ = 1;
     let _ = unsafe { 1 + *(&1 as *const i32) };
     let _ = 1 + 1;
+    let _ = 123;
 }
 
 fn main() {
diff --git a/tests/ui/unnecessary_literal_unwrap.rs b/tests/ui/unnecessary_literal_unwrap.rs
index fda7fd36ff9..3065778d779 100644
--- a/tests/ui/unnecessary_literal_unwrap.rs
+++ b/tests/ui/unnecessary_literal_unwrap.rs
@@ -85,6 +85,7 @@ fn unwrap_unchecked() {
     let _ = unsafe { Ok::<_, ()>(1).unwrap_unchecked() };
     let _ = unsafe { Ok::<_, ()>(1).unwrap_unchecked() + *(&1 as *const i32) };
     let _ = unsafe { Ok::<_, ()>(1).unwrap_unchecked() } + 1;
+    let _ = unsafe { Err::<(), i32>(123).unwrap_err_unchecked() };
 }
 
 fn main() {
diff --git a/tests/ui/unnecessary_literal_unwrap.stderr b/tests/ui/unnecessary_literal_unwrap.stderr
index e5b93c3d9af..5823313b736 100644
--- a/tests/ui/unnecessary_literal_unwrap.stderr
+++ b/tests/ui/unnecessary_literal_unwrap.stderr
@@ -481,5 +481,17 @@ LL -     let _ = unsafe { Ok::<_, ()>(1).unwrap_unchecked() } + 1;
 LL +     let _ = 1 + 1;
    |
 
-error: aborting due to 42 previous errors
+error: used `unwrap_err_unchecked()` on `Err` value
+  --> $DIR/unnecessary_literal_unwrap.rs:88:22
+   |
+LL |     let _ = unsafe { Err::<(), i32>(123).unwrap_err_unchecked() };
+   |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+help: remove the `Err` and `unwrap_err_unchecked()`
+   |
+LL -     let _ = unsafe { Err::<(), i32>(123).unwrap_err_unchecked() };
+LL +     let _ = 123;
+   |
+
+error: aborting due to 43 previous errors