@@ -41,40 +41,32 @@ pub(super) fn check(
4141 expr. span ,
4242 format ! ( "called `filter(..).{next_method}()` on an `{required_trait}`" ) ,
4343 |diag| {
44- let sugg_msg = format ! ( "use `.{find_method}(..)` instead" ) ;
45-
4644 let mut app = Applicability :: MachineApplicable ;
47- // add note if not multi-line
4845 let filter_snippet = snippet_with_applicability ( cx, filter_arg. span , ".." , & mut app) ;
49- if filter_snippet. lines ( ) . count ( ) <= 1 {
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)
52- && let Node :: Pat ( pat) = cx. tcx . hir_node ( id)
53- && let PatKind :: Binding ( BindingMode ( _, Mutability :: Not ) , _, ident, _) = pat. kind
54- {
55- app = Applicability :: Unspecified ;
56- Some ( ( pat. span , ident) )
57- } else {
58- None
59- } ;
60-
61- diag. span_suggestion_verbose (
62- expr. span ,
63- sugg_msg,
64- format ! ( "{iter_snippet}.{find_method}({filter_snippet})" ) ,
65- app,
66- ) ;
46+ let iter_snippet = snippet_with_applicability ( cx, recv. span , ".." , & mut app) ;
6747
68- if let Some ( ( pat_span, ident) ) = pat {
69- diag. span_help (
70- pat_span,
71- format ! (
72- "you will also need to make `{ident}` mutable, because `{find_method}` takes `&mut self`"
73- ) ,
74- ) ;
75- }
48+ let pat = if let Some ( id) = path_to_local_with_projections ( recv)
49+ && let Node :: Pat ( pat) = cx. tcx . hir_node ( id)
50+ && let PatKind :: Binding ( BindingMode ( _, Mutability :: Not ) , _, ident, _) = pat. kind
51+ {
52+ app = Applicability :: Unspecified ;
53+ Some ( ( pat. span , ident) )
7654 } else {
77- diag. help ( sugg_msg) ;
55+ None
56+ } ;
57+
58+ diag. span_suggestion_verbose (
59+ expr. span ,
60+ format ! ( "use `.{find_method}(..)` instead" ) ,
61+ format ! ( "{iter_snippet}.{find_method}({filter_snippet})" ) ,
62+ app,
63+ ) ;
64+
65+ if let Some ( ( pat_span, ident) ) = pat {
66+ diag. span_help (
67+ pat_span,
68+ format ! ( "you will also need to make `{ident}` mutable, because `{find_method}` takes `&mut self`" ) ,
69+ ) ;
7870 }
7971 } ,
8072 ) ;
0 commit comments