Skip to content

Commit 1d159e7

Browse files
rsdypksunkara
authored andcommitted
Recognize Ok
1 parent daf6197 commit 1d159e7

File tree

4 files changed

+58
-18
lines changed

4 files changed

+58
-18
lines changed

clippy_lints/src/methods/unnecessary_literal_unwrap.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,17 @@ use super::UNNECESSARY_LITERAL_UNWRAP;
77

88
pub(super) fn check(cx: &LateContext<'_>, expr: &hir::Expr<'_>, recv: &hir::Expr<'_>, arg: &hir::Expr<'_>, name: &str) {
99
let mess = if is_res_lang_ctor(cx, path_res(cx, recv), hir::LangItem::OptionSome) {
10-
Some((UNNECESSARY_LITERAL_UNWRAP, "Some"))
10+
Some("Some")
11+
} else if is_res_lang_ctor(cx, path_res(cx, recv), hir::LangItem::ResultOk) {
12+
Some("Ok")
1113
} else {
1214
None
1315
};
1416

15-
if let Some((lint, constructor)) = mess {
17+
if let Some(constructor) = mess {
1618
span_lint_and_then(
1719
cx,
18-
lint,
20+
UNNECESSARY_LITERAL_UNWRAP,
1921
expr.span,
2022
&format!("used `{name}()` on `{constructor}` value"),
2123
|diag| {

tests/ui/unnecessary_literal_unwrap.fixed

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,17 @@
22
#![warn(clippy::unnecessary_literal_unwrap)]
33

44
fn unwrap_option() {
5-
let val = 1;
6-
let val = 1;
5+
let _val = 1;
6+
let _val = 1;
7+
}
8+
9+
fn unwrap_result() {
10+
let _val = 1;
11+
let _val = 1;
12+
// let val = Err(1).unwrap_err();
713
}
814

915
fn main() {
1016
unwrap_option();
17+
unwrap_result();
1118
}

tests/ui/unnecessary_literal_unwrap.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,17 @@
22
#![warn(clippy::unnecessary_literal_unwrap)]
33

44
fn unwrap_option() {
5-
let val = Some(1).unwrap();
6-
let val = Some(1).expect("this never happens");
5+
let _val = Some(1).unwrap();
6+
let _val = Some(1).expect("this never happens");
7+
}
8+
9+
fn unwrap_result() {
10+
let _val = Ok::<usize, ()>(1).unwrap();
11+
let _val = Ok::<usize, ()>(1).expect("this never happens");
12+
// let val = Err(1).unwrap_err();
713
}
814

915
fn main() {
1016
unwrap_option();
17+
unwrap_result();
1118
}
Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,51 @@
11
error: used `unwrap()` on `Some` value
2-
--> $DIR/unnecessary_literal_unwrap.rs:5:15
2+
--> $DIR/unnecessary_literal_unwrap.rs:5:16
33
|
4-
LL | let val = Some(1).unwrap();
5-
| ^^^^^^^^^^^^^^^^
4+
LL | let _val = Some(1).unwrap();
5+
| ^^^^^^^^^^^^^^^^
66
|
77
= note: `-D clippy::unnecessary-literal-unwrap` implied by `-D warnings`
88
help: remove the `Some` and `unwrap()`
99
|
10-
LL - let val = Some(1).unwrap();
11-
LL + let val = 1;
10+
LL - let _val = Some(1).unwrap();
11+
LL + let _val = 1;
1212
|
1313

1414
error: used `expect()` on `Some` value
15-
--> $DIR/unnecessary_literal_unwrap.rs:6:15
15+
--> $DIR/unnecessary_literal_unwrap.rs:6:16
1616
|
17-
LL | let val = Some(1).expect("this never happens");
18-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
17+
LL | let _val = Some(1).expect("this never happens");
18+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1919
|
2020
help: remove the `Some` and `expect()`
2121
|
22-
LL - let val = Some(1).expect("this never happens");
23-
LL + let val = 1;
22+
LL - let _val = Some(1).expect("this never happens");
23+
LL + let _val = 1;
2424
|
2525

26-
error: aborting due to 2 previous errors
26+
error: used `unwrap()` on `Ok` value
27+
--> $DIR/unnecessary_literal_unwrap.rs:10:16
28+
|
29+
LL | let _val = Ok::<usize, ()>(1).unwrap();
30+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
31+
|
32+
help: remove the `Ok` and `unwrap()`
33+
|
34+
LL - let _val = Ok::<usize, ()>(1).unwrap();
35+
LL + let _val = 1;
36+
|
37+
38+
error: used `expect()` on `Ok` value
39+
--> $DIR/unnecessary_literal_unwrap.rs:11:16
40+
|
41+
LL | let _val = Ok::<usize, ()>(1).expect("this never happens");
42+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
43+
|
44+
help: remove the `Ok` and `expect()`
45+
|
46+
LL - let _val = Ok::<usize, ()>(1).expect("this never happens");
47+
LL + let _val = 1;
48+
|
49+
50+
error: aborting due to 4 previous errors
2751

0 commit comments

Comments
 (0)