Skip to content

Commit c38bf3d

Browse files
committed
wrap everything in span_lint_and_then
separate commit to improve diffs
1 parent 4b27234 commit c38bf3d

1 file changed

Lines changed: 20 additions & 18 deletions

File tree

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use clippy_utils::diagnostics::{span_lint, span_lint_and_sugg};
1+
use clippy_utils::diagnostics::span_lint_and_then;
22
use clippy_utils::msrvs::{self, Msrv};
33
use clippy_utils::res::{MaybeDef, MaybeTypeckRes};
44
use clippy_utils::source::snippet;
@@ -12,22 +12,24 @@ use super::FILTER_MAP_NEXT;
1212
pub(super) fn check(cx: &LateContext<'_>, expr: &Expr<'_>, recv: &Expr<'_>, arg: &Expr<'_>, msrv: Msrv) {
1313
if cx.ty_based_def(expr).opt_parent(cx).is_diag_item(cx, sym::Iterator) && msrv.meets(cx, msrvs::ITERATOR_FIND_MAP)
1414
{
15-
let msg = "called `filter_map(..).next()` on an `Iterator`. \
16-
This is more succinctly expressed by calling `.find_map(..)` instead";
17-
let filter_snippet = snippet(cx, arg.span, "..");
18-
if filter_snippet.lines().count() <= 1 {
19-
let iter_snippet = snippet(cx, recv.span, "..");
20-
span_lint_and_sugg(
21-
cx,
22-
FILTER_MAP_NEXT,
23-
expr.span,
24-
msg,
25-
"try",
26-
format!("{iter_snippet}.find_map({filter_snippet})"),
27-
Applicability::MachineApplicable,
28-
);
29-
} else {
30-
span_lint(cx, FILTER_MAP_NEXT, expr.span, msg);
31-
}
15+
span_lint_and_then(
16+
cx,
17+
FILTER_MAP_NEXT,
18+
expr.span,
19+
"called `filter_map(..).next()` on an `Iterator`. \
20+
This is more succinctly expressed by calling `.find_map(..)` instead",
21+
|diag| {
22+
let filter_snippet = snippet(cx, arg.span, "..");
23+
if filter_snippet.lines().count() <= 1 {
24+
let iter_snippet = snippet(cx, recv.span, "..");
25+
diag.span_suggestion(
26+
expr.span,
27+
"try",
28+
format!("{iter_snippet}.find_map({filter_snippet})"),
29+
Applicability::MachineApplicable,
30+
);
31+
}
32+
},
33+
);
3234
}
3335
}

0 commit comments

Comments
 (0)