|
1 | 1 | use clippy_utils::diagnostics::span_lint_and_then; |
2 | | -use clippy_utils::source::snippet; |
| 2 | +use clippy_utils::source::snippet_with_applicability; |
3 | 3 | use clippy_utils::ty::implements_trait; |
4 | 4 | use clippy_utils::{path_to_local_with_projections, sym}; |
5 | 5 | use rustc_ast::{BindingMode, Mutability}; |
@@ -43,24 +43,26 @@ pub(super) fn check( |
43 | 43 | |diag| { |
44 | 44 | let sugg_msg = format!("use `.{find_method}(..)` instead"); |
45 | 45 |
|
| 46 | + let mut app = Applicability::MachineApplicable; |
46 | 47 | // add note if not multi-line |
47 | | - let filter_snippet = snippet(cx, filter_arg.span, ".."); |
| 48 | + let filter_snippet = snippet_with_applicability(cx, filter_arg.span, "..", &mut app); |
48 | 49 | if filter_snippet.lines().count() <= 1 { |
49 | | - let iter_snippet = snippet(cx, recv.span, ".."); |
50 | | - let (applicability, pat) = if let Some(id) = path_to_local_with_projections(recv) |
| 50 | + let iter_snippet = snippet_with_applicability(cx, recv.span, "..", &mut app); |
| 51 | + let pat = if let Some(id) = path_to_local_with_projections(recv) |
51 | 52 | && let Node::Pat(pat) = cx.tcx.hir_node(id) |
52 | 53 | && let PatKind::Binding(BindingMode(_, Mutability::Not), _, ident, _) = pat.kind |
53 | 54 | { |
54 | | - (Applicability::Unspecified, Some((pat.span, ident))) |
| 55 | + app = Applicability::Unspecified; |
| 56 | + Some((pat.span, ident)) |
55 | 57 | } else { |
56 | | - (Applicability::MachineApplicable, None) |
| 58 | + None |
57 | 59 | }; |
58 | 60 |
|
59 | 61 | diag.span_suggestion_verbose( |
60 | 62 | expr.span, |
61 | 63 | sugg_msg, |
62 | 64 | format!("{iter_snippet}.{find_method}({filter_snippet})"), |
63 | | - applicability, |
| 65 | + app, |
64 | 66 | ); |
65 | 67 |
|
66 | 68 | if let Some((pat_span, ident)) = pat { |
|
0 commit comments