about summary refs log tree commit diff
diff options
context:
space:
mode:
authorrsdy <p@symmetree.dev>2023-02-16 14:37:18 +0000
committerPavan Kumar Sunkara <pavan.sss1991@gmail.com>2023-06-12 16:19:26 +0100
commit1d159e7d11d86d030c030ec0ec23a88871289d1b (patch)
tree1ee514ace20f2ee8e603a19822b9025e05655299
parentdaf61974813ba6f9e7513068bc8cce2839fb8939 (diff)
downloadrust-1d159e7d11d86d030c030ec0ec23a88871289d1b.tar.gz
rust-1d159e7d11d86d030c030ec0ec23a88871289d1b.zip
Recognize `Ok`
-rw-r--r--clippy_lints/src/methods/unnecessary_literal_unwrap.rs8
-rw-r--r--tests/ui/unnecessary_literal_unwrap.fixed11
-rw-r--r--tests/ui/unnecessary_literal_unwrap.rs11
-rw-r--r--tests/ui/unnecessary_literal_unwrap.stderr46
4 files changed, 58 insertions, 18 deletions
diff --git a/clippy_lints/src/methods/unnecessary_literal_unwrap.rs b/clippy_lints/src/methods/unnecessary_literal_unwrap.rs
index 9a82d7e58ea..0c8a70fedb9 100644
--- a/clippy_lints/src/methods/unnecessary_literal_unwrap.rs
+++ b/clippy_lints/src/methods/unnecessary_literal_unwrap.rs
@@ -7,15 +7,17 @@ use super::UNNECESSARY_LITERAL_UNWRAP;
 
 pub(super) fn check(cx: &LateContext<'_>, expr: &hir::Expr<'_>, recv: &hir::Expr<'_>, arg: &hir::Expr<'_>, name: &str) {
     let mess = if is_res_lang_ctor(cx, path_res(cx, recv), hir::LangItem::OptionSome) {
-        Some((UNNECESSARY_LITERAL_UNWRAP, "Some"))
+        Some("Some")
+    } else if is_res_lang_ctor(cx, path_res(cx, recv), hir::LangItem::ResultOk) {
+        Some("Ok")
     } else {
         None
     };
 
-    if let Some((lint, constructor)) = mess {
+    if let Some(constructor) = mess {
         span_lint_and_then(
             cx,
-            lint,
+            UNNECESSARY_LITERAL_UNWRAP,
             expr.span,
             &format!("used `{name}()` on `{constructor}` value"),
             |diag| {
diff --git a/tests/ui/unnecessary_literal_unwrap.fixed b/tests/ui/unnecessary_literal_unwrap.fixed
index 8696048d332..b59dec7d48a 100644
--- a/tests/ui/unnecessary_literal_unwrap.fixed
+++ b/tests/ui/unnecessary_literal_unwrap.fixed
@@ -2,10 +2,17 @@
 #![warn(clippy::unnecessary_literal_unwrap)]
 
 fn unwrap_option() {
-    let val = 1;
-    let val = 1;
+    let _val = 1;
+    let _val = 1;
+}
+
+fn unwrap_result() {
+    let _val = 1;
+    let _val = 1;
+    // let val = Err(1).unwrap_err();
 }
 
 fn main() {
     unwrap_option();
+    unwrap_result();
 }
diff --git a/tests/ui/unnecessary_literal_unwrap.rs b/tests/ui/unnecessary_literal_unwrap.rs
index ae41634495b..c46204f7a99 100644
--- a/tests/ui/unnecessary_literal_unwrap.rs
+++ b/tests/ui/unnecessary_literal_unwrap.rs
@@ -2,10 +2,17 @@
 #![warn(clippy::unnecessary_literal_unwrap)]
 
 fn unwrap_option() {
-    let val = Some(1).unwrap();
-    let val = Some(1).expect("this never happens");
+    let _val = Some(1).unwrap();
+    let _val = Some(1).expect("this never happens");
+}
+
+fn unwrap_result() {
+    let _val = Ok::<usize, ()>(1).unwrap();
+    let _val = Ok::<usize, ()>(1).expect("this never happens");
+    // let val = Err(1).unwrap_err();
 }
 
 fn main() {
     unwrap_option();
+    unwrap_result();
 }
diff --git a/tests/ui/unnecessary_literal_unwrap.stderr b/tests/ui/unnecessary_literal_unwrap.stderr
index 00d7f186fc4..c5e3cd1657b 100644
--- a/tests/ui/unnecessary_literal_unwrap.stderr
+++ b/tests/ui/unnecessary_literal_unwrap.stderr
@@ -1,27 +1,51 @@
 error: used `unwrap()` on `Some` value
-  --> $DIR/unnecessary_literal_unwrap.rs:5:15
+  --> $DIR/unnecessary_literal_unwrap.rs:5:16
    |
-LL |     let val = Some(1).unwrap();
-   |               ^^^^^^^^^^^^^^^^
+LL |     let _val = Some(1).unwrap();
+   |                ^^^^^^^^^^^^^^^^
    |
    = note: `-D clippy::unnecessary-literal-unwrap` implied by `-D warnings`
 help: remove the `Some` and `unwrap()`
    |
-LL -     let val = Some(1).unwrap();
-LL +     let val = 1;
+LL -     let _val = Some(1).unwrap();
+LL +     let _val = 1;
    |
 
 error: used `expect()` on `Some` value
-  --> $DIR/unnecessary_literal_unwrap.rs:6:15
+  --> $DIR/unnecessary_literal_unwrap.rs:6:16
    |
-LL |     let val = Some(1).expect("this never happens");
-   |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+LL |     let _val = Some(1).expect("this never happens");
+   |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
 help: remove the `Some` and `expect()`
    |
-LL -     let val = Some(1).expect("this never happens");
-LL +     let val = 1;
+LL -     let _val = Some(1).expect("this never happens");
+LL +     let _val = 1;
    |
 
-error: aborting due to 2 previous errors
+error: used `unwrap()` on `Ok` value
+  --> $DIR/unnecessary_literal_unwrap.rs:10:16
+   |
+LL |     let _val = Ok::<usize, ()>(1).unwrap();
+   |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+help: remove the `Ok` and `unwrap()`
+   |
+LL -     let _val = Ok::<usize, ()>(1).unwrap();
+LL +     let _val = 1;
+   |
+
+error: used `expect()` on `Ok` value
+  --> $DIR/unnecessary_literal_unwrap.rs:11:16
+   |
+LL |     let _val = Ok::<usize, ()>(1).expect("this never happens");
+   |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+help: remove the `Ok` and `expect()`
+   |
+LL -     let _val = Ok::<usize, ()>(1).expect("this never happens");
+LL +     let _val = 1;
+   |
+
+error: aborting due to 4 previous errors