about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--clippy_lints/src/loops.rs39
1 files changed, 17 insertions, 22 deletions
diff --git a/clippy_lints/src/loops.rs b/clippy_lints/src/loops.rs
index f7db2563d2b..df06031d999 100644
--- a/clippy_lints/src/loops.rs
+++ b/clippy_lints/src/loops.rs
@@ -1145,29 +1145,24 @@ fn detect_same_item_push<'tcx>(
                 let vec_str = snippet_with_macro_callsite(cx, vec.span, "");
                 let item_str = snippet_with_macro_callsite(cx, pushed_item.span, "");
                 if let ExprKind::Path(ref qpath) = pushed_item.kind {
-                    if let Res::Local(hir_id) = qpath_res(cx, qpath, pushed_item.hir_id) {
+                    if_chain! {
+                        if let Res::Local(hir_id) = qpath_res(cx, qpath, pushed_item.hir_id);
                         let node = cx.tcx.hir().get(hir_id);
-                        if_chain! {
-                            if let Node::Binding(pat) = node;
-                            if let PatKind::Binding(bind_ann, ..) = pat.kind;
-                            then {
-                                match bind_ann {
-                                    BindingAnnotation::RefMut | BindingAnnotation::Mutable => {},
-                                    _ => {
-                                        span_lint_and_help(
-                                            cx,
-                                            SAME_ITEM_PUSH,
-                                            vec.span,
-                                            "it looks like the same item is being pushed into this Vec",
-                                            None,
-                                            &format!(
-                                                "try using vec![{};SIZE] or {}.resize(NEW_SIZE, {})",
-                                                item_str, vec_str, item_str
-                                            ),
-                                        )
-                                    }
-                                }
-                            }
+                        if let Node::Binding(pat) = node;
+                        if let PatKind::Binding(bind_ann, ..) = pat.kind;
+                        if !matches!(bind_ann, BindingAnnotation::RefMut | BindingAnnotation::Mutable);
+                        then {
+                            span_lint_and_help(
+                                cx,
+                                SAME_ITEM_PUSH,
+                                vec.span,
+                                "it looks like the same item is being pushed into this Vec",
+                                None,
+                                &format!(
+                                    "try using vec![{};SIZE] or {}.resize(NEW_SIZE, {})",
+                                    item_str, vec_str, item_str
+                                ),
+                            )
                         }
                     }
                 } else if mutated_variables(pushed_item, cx).map_or(false, |mutvars| mutvars.is_empty()) {