diff options
| author | rsdy <p@symmetree.dev> | 2023-02-16 14:37:18 +0000 |
|---|---|---|
| committer | Pavan Kumar Sunkara <pavan.sss1991@gmail.com> | 2023-06-12 16:19:26 +0100 |
| commit | 1d159e7d11d86d030c030ec0ec23a88871289d1b (patch) | |
| tree | 1ee514ace20f2ee8e603a19822b9025e05655299 | |
| parent | daf61974813ba6f9e7513068bc8cce2839fb8939 (diff) | |
| download | rust-1d159e7d11d86d030c030ec0ec23a88871289d1b.tar.gz rust-1d159e7d11d86d030c030ec0ec23a88871289d1b.zip | |
Recognize `Ok`
| -rw-r--r-- | clippy_lints/src/methods/unnecessary_literal_unwrap.rs | 8 | ||||
| -rw-r--r-- | tests/ui/unnecessary_literal_unwrap.fixed | 11 | ||||
| -rw-r--r-- | tests/ui/unnecessary_literal_unwrap.rs | 11 | ||||
| -rw-r--r-- | tests/ui/unnecessary_literal_unwrap.stderr | 46 |
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 |
