diff --git a/clippy_lints/src/loops.rs b/clippy_lints/src/loops.rs index 0c737d94806..3e1bce044e3 100644 --- a/clippy_lints/src/loops.rs +++ b/clippy_lints/src/loops.rs @@ -2328,8 +2328,10 @@ fn check_needless_collect<'a, 'tcx>(expr: &'tcx Expr, cx: &LateContext<'a, 'tcx> } fn shorten_needless_collect_span(expr: &Expr) -> Span { - if let ExprKind::MethodCall(_, _, ref args) = expr.node { - if let ExprKind::MethodCall(_, ref span, _) = args[0].node { + if_chain! { + if let ExprKind::MethodCall(_, _, ref args) = expr.node; + if let ExprKind::MethodCall(_, ref span, _) = args[0].node; + then { return expr.span.with_lo(span.lo() - BytePos(1)); } } diff --git a/tests/ui/needless_collect.rs b/tests/ui/needless_collect.rs index 1aff8ee9565..b001f20d527 100644 --- a/tests/ui/needless_collect.rs +++ b/tests/ui/needless_collect.rs @@ -1,7 +1,9 @@ +#![feature(tool_lints)] + use std::collections::{HashMap, HashSet, BTreeSet}; -#[warn(clippy, needless_collect)] -#[allow(unused_variables, iter_cloned_collect)] +#[warn(clippy::needless_collect)] +#[allow(unused_variables, clippy::iter_cloned_collect)] fn main() { let sample = [1; 5]; let len = sample.iter().collect::>().len(); diff --git a/tests/ui/needless_collect.stderr b/tests/ui/needless_collect.stderr index c2dd0879fb8..0124db3b975 100644 --- a/tests/ui/needless_collect.stderr +++ b/tests/ui/needless_collect.stderr @@ -1,27 +1,27 @@ error: avoid using `collect()` when not needed - --> $DIR/needless_collect.rs:7:28 + --> $DIR/needless_collect.rs:9:28 | -7 | let len = sample.iter().collect::>().len(); +9 | let len = sample.iter().collect::>().len(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `.count()` | - = note: `-D needless-collect` implied by `-D warnings` + = note: `-D clippy::needless-collect` implied by `-D warnings` error: avoid using `collect()` when not needed - --> $DIR/needless_collect.rs:8:21 - | -8 | if sample.iter().collect::>().is_empty() { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `.next().is_none()` - -error: avoid using `collect()` when not needed - --> $DIR/needless_collect.rs:11:27 + --> $DIR/needless_collect.rs:10:21 | -11 | sample.iter().cloned().collect::>().contains(&1); +10 | if sample.iter().collect::>().is_empty() { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `.next().is_none()` + +error: avoid using `collect()` when not needed + --> $DIR/needless_collect.rs:13:27 + | +13 | sample.iter().cloned().collect::>().contains(&1); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `.any(|&x| x == 1)` error: avoid using `collect()` when not needed - --> $DIR/needless_collect.rs:12:34 + --> $DIR/needless_collect.rs:14:34 | -12 | sample.iter().map(|x| (x, x)).collect::>().len(); +14 | sample.iter().map(|x| (x, x)).collect::>().len(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `.count()` error: aborting due to 4 previous errors