Skip to content

Commit d2ea635

Browse files
author
Michael Wright
committed
Update unwrap_get code review suggestions
1 parent 4add1e2 commit d2ea635

File tree

4 files changed

+24
-15
lines changed

4 files changed

+24
-15
lines changed

clippy_lints/src/methods/mod.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1628,14 +1628,13 @@ fn lint_get_unwrap(cx: &LateContext<'_, '_>, expr: &hir::Expr, get_args: &[hir::
16281628
// Handle the case where the result is immedately dereferenced
16291629
// by not requiring ref and pulling the dereference into the
16301630
// suggestion.
1631-
if needs_ref {
1632-
if let Some(parent) = get_parent_expr(cx, expr) {
1633-
if let hir::ExprKind::Unary(op, _) = parent.node {
1634-
if op == hir::UnOp::UnDeref {
1635-
needs_ref = false;
1636-
span = parent.span;
1637-
}
1638-
}
1631+
if_chain! {
1632+
if needs_ref;
1633+
if let Some(parent) = get_parent_expr(cx, expr);
1634+
if let hir::ExprKind::Unary(hir::UnOp::UnDeref, _) = parent.node;
1635+
then {
1636+
needs_ref = false;
1637+
span = parent.span;
16391638
}
16401639
}
16411640

tests/ui/get_unwrap.fixed

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ fn main() {
4646
let _ = &some_hashmap[&1];
4747
let _ = &some_btreemap[&1];
4848
let _ = false_positive.get(0).unwrap();
49+
// Test with deref
50+
let _: u8 = boxed_slice[1];
4951
}
5052

5153
{

tests/ui/get_unwrap.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ fn main() {
4646
let _ = some_hashmap.get(&1).unwrap();
4747
let _ = some_btreemap.get(&1).unwrap();
4848
let _ = false_positive.get(0).unwrap();
49+
// Test with deref
50+
let _: u8 = *boxed_slice.get(1).unwrap();
4951
}
5052

5153
{

tests/ui/get_unwrap.stderr

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,41 +36,47 @@ error: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more
3636
LL | let _ = some_btreemap.get(&1).unwrap();
3737
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&some_btreemap[&1]`
3838

39+
error: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise
40+
--> $DIR/get_unwrap.rs:50:21
41+
|
42+
LL | let _: u8 = *boxed_slice.get(1).unwrap();
43+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `boxed_slice[1]`
44+
3945
error: called `.get_mut().unwrap()` on a slice. Using `[]` is more clear and more concise
40-
--> $DIR/get_unwrap.rs:53:9
46+
--> $DIR/get_unwrap.rs:55:9
4147
|
4248
LL | *boxed_slice.get_mut(0).unwrap() = 1;
4349
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `boxed_slice[0]`
4450

4551
error: called `.get_mut().unwrap()` on a slice. Using `[]` is more clear and more concise
46-
--> $DIR/get_unwrap.rs:54:9
52+
--> $DIR/get_unwrap.rs:56:9
4753
|
4854
LL | *some_slice.get_mut(0).unwrap() = 1;
4955
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `some_slice[0]`
5056

5157
error: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise
52-
--> $DIR/get_unwrap.rs:55:9
58+
--> $DIR/get_unwrap.rs:57:9
5359
|
5460
LL | *some_vec.get_mut(0).unwrap() = 1;
5561
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `some_vec[0]`
5662

5763
error: called `.get_mut().unwrap()` on a VecDeque. Using `[]` is more clear and more concise
58-
--> $DIR/get_unwrap.rs:56:9
64+
--> $DIR/get_unwrap.rs:58:9
5965
|
6066
LL | *some_vecdeque.get_mut(0).unwrap() = 1;
6167
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `some_vecdeque[0]`
6268

6369
error: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise
64-
--> $DIR/get_unwrap.rs:65:17
70+
--> $DIR/get_unwrap.rs:67:17
6571
|
6672
LL | let _ = some_vec.get(0..1).unwrap().to_vec();
6773
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `some_vec[0..1]`
6874

6975
error: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise
70-
--> $DIR/get_unwrap.rs:66:17
76+
--> $DIR/get_unwrap.rs:68:17
7177
|
7278
LL | let _ = some_vec.get_mut(0..1).unwrap().to_vec();
7379
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `some_vec[0..1]`
7480

75-
error: aborting due to 12 previous errors
81+
error: aborting due to 13 previous errors
7682

0 commit comments

Comments
 (0)