Skip to content

Commit 69af0e1

Browse files
committed
Recognize Err
1 parent 6e0e09c commit 69af0e1

File tree

5 files changed

+61
-23
lines changed

5 files changed

+61
-23
lines changed

clippy_lints/src/methods/mod.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3666,7 +3666,10 @@ impl Methods {
36663666
}
36673667
unnecessary_literal_unwrap::check(cx, expr, recv, name);
36683668
},
3669-
("expect_err", [_]) => expect_used::check(cx, expr, recv, true, self.allow_expect_in_tests),
3669+
("expect_err", [_]) => {
3670+
unnecessary_literal_unwrap::check(cx, expr, recv, name);
3671+
expect_used::check(cx, expr, recv, true, self.allow_expect_in_tests);
3672+
},
36703673
("extend", [arg]) => {
36713674
string_extend_chars::check(cx, expr, recv, arg);
36723675
extend_with_drain::check(cx, expr, recv, arg);
@@ -3874,7 +3877,10 @@ impl Methods {
38743877
unnecessary_literal_unwrap::check(cx, expr, recv, name);
38753878
unwrap_used::check(cx, expr, recv, false, self.allow_unwrap_in_tests);
38763879
},
3877-
("unwrap_err", []) => unwrap_used::check(cx, expr, recv, true, self.allow_unwrap_in_tests),
3880+
("unwrap_err", []) => {
3881+
unnecessary_literal_unwrap::check(cx, expr, recv, name);
3882+
unwrap_used::check(cx, expr, recv, true, self.allow_unwrap_in_tests)
3883+
},
38783884
("unwrap_or", [u_arg]) => {
38793885
match method_call(recv) {
38803886
Some((arith @ ("checked_add" | "checked_sub" | "checked_mul"), lhs, [rhs], _, _)) => {

clippy_lints/src/methods/unnecessary_literal_unwrap.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,16 @@ pub(super) fn check(cx: &LateContext<'_>, expr: &hir::Expr<'_>, recv: &hir::Expr
99
let init = clippy_utils::expr_or_init(cx, recv);
1010

1111
if let hir::ExprKind::Call(call, [arg]) = init.kind {
12-
let mess = if is_res_lang_ctor(cx, path_res(cx, call), hir::LangItem::OptionSome) {
13-
Some("Some")
12+
let constructor = if is_res_lang_ctor(cx, path_res(cx, call), hir::LangItem::OptionSome) {
13+
"Some"
1414
} else if is_res_lang_ctor(cx, path_res(cx, call), hir::LangItem::ResultOk) {
15-
Some("Ok")
15+
"Ok"
16+
} else if is_res_lang_ctor(cx, path_res(cx, call), hir::LangItem::ResultErr) {
17+
"Err"
1618
} else {
17-
None
19+
return;
1820
};
1921

20-
let Some(constructor) = mess else {
21-
return;
22-
};
23-
2422
if init.span == recv.span {
2523
span_lint_and_then(
2624
cx,

tests/ui/unnecessary_literal_unwrap.fixed

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,14 @@ fn unwrap_option() {
77
let _val = 1;
88
}
99

10-
fn unwrap_result() {
10+
fn unwrap_result_ok() {
11+
let _val = 1;
12+
let _val = 1;
13+
}
14+
15+
fn unwrap_result_err() {
1116
let _val = 1;
1217
let _val = 1;
13-
// let val = Err(1).unwrap_err();
1418
}
1519

1620
fn unwrap_methods_option() {
@@ -27,7 +31,8 @@ fn unwrap_methods_result() {
2731

2832
fn main() {
2933
unwrap_option();
30-
unwrap_result();
34+
unwrap_result_ok();
35+
unwrap_result_err();
3136
unwrap_methods_option();
3237
unwrap_methods_result();
3338
}

tests/ui/unnecessary_literal_unwrap.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,14 @@ fn unwrap_option() {
77
let _val = Some(1).expect("this never happens");
88
}
99

10-
fn unwrap_result() {
10+
fn unwrap_result_ok() {
1111
let _val = Ok::<usize, ()>(1).unwrap();
1212
let _val = Ok::<usize, ()>(1).expect("this never happens");
13-
// let val = Err(1).unwrap_err();
13+
}
14+
15+
fn unwrap_result_err() {
16+
let _val = Err::<(), usize>(1).unwrap_err();
17+
let _val = Err::<(), usize>(1).expect_err("this never happens");
1418
}
1519

1620
fn unwrap_methods_option() {
@@ -27,7 +31,8 @@ fn unwrap_methods_result() {
2731

2832
fn main() {
2933
unwrap_option();
30-
unwrap_result();
34+
unwrap_result_ok();
35+
unwrap_result_err();
3136
unwrap_methods_option();
3237
unwrap_methods_result();
3338
}

tests/ui/unnecessary_literal_unwrap.stderr

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,33 @@ LL - let _val = Ok::<usize, ()>(1).expect("this never happens");
4747
LL + let _val = 1;
4848
|
4949

50-
error: used `unwrap_or()` on `Some` value
50+
error: used `unwrap_err()` on `Err` value
51+
--> $DIR/unnecessary_literal_unwrap.rs:16:16
52+
|
53+
LL | let _val = Err::<(), usize>(1).unwrap_err();
54+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
55+
|
56+
help: remove the `Err` and `unwrap_err()`
57+
|
58+
LL - let _val = Err::<(), usize>(1).unwrap_err();
59+
LL + let _val = 1;
60+
|
61+
62+
error: used `expect_err()` on `Err` value
5163
--> $DIR/unnecessary_literal_unwrap.rs:17:16
5264
|
65+
LL | let _val = Err::<(), usize>(1).expect_err("this never happens");
66+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
67+
|
68+
help: remove the `Err` and `expect_err()`
69+
|
70+
LL - let _val = Err::<(), usize>(1).expect_err("this never happens");
71+
LL + let _val = 1;
72+
|
73+
74+
error: used `unwrap_or()` on `Some` value
75+
--> $DIR/unnecessary_literal_unwrap.rs:21:16
76+
|
5377
LL | let _val = Some(1).unwrap_or(2);
5478
| ^^^^^^^^^^^^^^^^^^^^
5579
|
@@ -60,7 +84,7 @@ LL + let _val = 1;
6084
|
6185

6286
error: used `unwrap_or_default()` on `Some` value
63-
--> $DIR/unnecessary_literal_unwrap.rs:18:16
87+
--> $DIR/unnecessary_literal_unwrap.rs:22:16
6488
|
6589
LL | let _val = Some(1).unwrap_or_default();
6690
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -72,7 +96,7 @@ LL + let _val = 1;
7296
|
7397

7498
error: used `unwrap_or_else()` on `Some` value
75-
--> $DIR/unnecessary_literal_unwrap.rs:19:16
99+
--> $DIR/unnecessary_literal_unwrap.rs:23:16
76100
|
77101
LL | let _val = Some(1).unwrap_or_else(|| _val);
78102
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -84,7 +108,7 @@ LL + let _val = 1;
84108
|
85109

86110
error: used `unwrap_or()` on `Ok` value
87-
--> $DIR/unnecessary_literal_unwrap.rs:23:16
111+
--> $DIR/unnecessary_literal_unwrap.rs:27:16
88112
|
89113
LL | let _val = Ok::<usize, ()>(1).unwrap_or(2);
90114
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -96,7 +120,7 @@ LL + let _val = 1;
96120
|
97121

98122
error: used `unwrap_or_default()` on `Ok` value
99-
--> $DIR/unnecessary_literal_unwrap.rs:24:16
123+
--> $DIR/unnecessary_literal_unwrap.rs:28:16
100124
|
101125
LL | let _val = Ok::<usize, ()>(1).unwrap_or_default();
102126
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -108,7 +132,7 @@ LL + let _val = 1;
108132
|
109133

110134
error: used `unwrap_or_else()` on `Ok` value
111-
--> $DIR/unnecessary_literal_unwrap.rs:25:16
135+
--> $DIR/unnecessary_literal_unwrap.rs:29:16
112136
|
113137
LL | let _val = Ok::<usize, ()>(1).unwrap_or_else(|()| _val);
114138
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -119,5 +143,5 @@ LL - let _val = Ok::<usize, ()>(1).unwrap_or_else(|()| _val);
119143
LL + let _val = 1;
120144
|
121145

122-
error: aborting due to 10 previous errors
146+
error: aborting due to 12 previous errors
123147

0 commit comments

Comments
 (0)