]> git.lizzy.rs Git - rust.git/blob - clippy_lints/src/methods/iter_skip_next.rs
Auto merge of #7546 - mgeier:patch-1, r=giraffate
[rust.git] / clippy_lints / src / methods / iter_skip_next.rs
1 use clippy_utils::diagnostics::span_lint_and_sugg;
2 use clippy_utils::is_trait_method;
3 use clippy_utils::source::snippet;
4 use rustc_errors::Applicability;
5 use rustc_hir as hir;
6 use rustc_lint::LateContext;
7 use rustc_span::sym;
8
9 use super::ITER_SKIP_NEXT;
10
11 pub(super) fn check(cx: &LateContext<'_>, expr: &hir::Expr<'_>, recv: &hir::Expr<'_>, arg: &hir::Expr<'_>) {
12     // lint if caller of skip is an Iterator
13     if is_trait_method(cx, expr, sym::Iterator) {
14         span_lint_and_sugg(
15             cx,
16             ITER_SKIP_NEXT,
17             expr.span.trim_start(recv.span).unwrap(),
18             "called `skip(..).next()` on an iterator",
19             "use `nth` instead",
20             format!(".nth({})", snippet(cx, arg.span, "..")),
21             Applicability::MachineApplicable,
22         );
23     }
24 }