@@ -1356,6 +1356,31 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> {
13561356                            Applicability :: MaybeIncorrect , 
13571357                        ) ; 
13581358                    }  else  { 
1359+                         let  is_mut = mut_ref_self_ty_satisfies_pred || ref_inner_ty_mut; 
1360+                         let  sugg_prefix = format ! ( "&{}" ,  if  is_mut {  "mut "  }  else {  ""  } ) ; 
1361+                         let  sugg_msg = & format ! ( 
1362+                             "consider{} borrowing here" , 
1363+                             if  is_mut {  " mutably"  }  else {  ""  } 
1364+                         ) ; 
1365+ 
1366+                         // Issue #109436, we need to add parentheses properly for method calls 
1367+                         // for example, `foo.into()` should be `(&foo).into()` 
1368+                         if  let  Ok ( snippet)  = self . tcx . sess . source_map ( ) . span_to_snippet ( 
1369+                             self . tcx . sess . source_map ( ) . span_look_ahead ( span,  Some ( "." ) ,  Some ( 50 ) ) , 
1370+                         )  { 
1371+                             if  snippet == "."  { 
1372+                                 err. multipart_suggestion_verbose ( 
1373+                                     sugg_msg, 
1374+                                     vec ! [ 
1375+                                         ( span. shrink_to_lo( ) ,  format!( "({}" ,  sugg_prefix) ) , 
1376+                                         ( span. shrink_to_hi( ) ,  ")" . to_string( ) ) , 
1377+                                     ] , 
1378+                                     Applicability :: MaybeIncorrect , 
1379+                                 ) ; 
1380+                                 return  true ; 
1381+                             } 
1382+                         } 
1383+ 
13591384                        // Issue #104961, we need to add parentheses properly for compond expressions 
13601385                        // for example, `x.starts_with("hi".to_string() + "you")` 
13611386                        // should be `x.starts_with(&("hi".to_string() + "you"))` 
@@ -1372,14 +1397,7 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> {
13721397                            _ => false , 
13731398                        } ; 
13741399
1375-                         let  is_mut = mut_ref_self_ty_satisfies_pred || ref_inner_ty_mut; 
13761400                        let  span = if  needs_parens {  span }  else  {  span. shrink_to_lo ( )  } ; 
1377-                         let  sugg_prefix = format ! ( "&{}" ,  if  is_mut {  "mut "  }  else {  ""  } ) ; 
1378-                         let  sugg_msg = & format ! ( 
1379-                             "consider{} borrowing here" , 
1380-                             if  is_mut {  " mutably"  }  else {  ""  } 
1381-                         ) ; 
1382- 
13831401                        let  suggestions = if  !needs_parens { 
13841402                            vec ! [ ( span. shrink_to_lo( ) ,  format!( "{}" ,  sugg_prefix) ) ] 
13851403                        }  else  { 
0 commit comments