From b8b04f6385ce9909a165ff47c5ebf49ded1fc6db Mon Sep 17 00:00:00 2001 From: ashtneoi Date: Tue, 10 Jul 2018 23:23:13 -0700 Subject: [PATCH] Put the two halves of suggest_ampmut back together --- src/librustc_mir/borrow_check/mod.rs | 38 ++++++++++++---------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/src/librustc_mir/borrow_check/mod.rs b/src/librustc_mir/borrow_check/mod.rs index 95601f13371..039f43cd213 100644 --- a/src/librustc_mir/borrow_check/mod.rs +++ b/src/librustc_mir/borrow_check/mod.rs @@ -1850,22 +1850,18 @@ enum AccessKind { binding_mode: ty::BindingMode::BindByValue(_), opt_ty_info, .. - }))) => { - if let Some(x) = try_suggest_ampmut_rhs( - self.tcx, self.mir, *local, - ) { - Some(x) - } else { - Some(suggest_ampmut_type(local_decl, opt_ty_info)) - } - }, + }))) => Some(suggest_ampmut( + self.tcx, + self.mir, + *local, + local_decl, + opt_ty_info, + )), Some(ClearCrossCrate::Set(mir::BindingForm::Var(mir::VarBindingForm { binding_mode: ty::BindingMode::BindByReference(_), .. - }))) => { - suggest_ref_mut(self.tcx, local_decl) - }, + }))) => suggest_ref_mut(self.tcx, local_decl), Some(ClearCrossCrate::Clear) => bug!("saw cleared local state"), @@ -1927,12 +1923,13 @@ fn suggest_ampmut_self<'cx, 'gcx, 'tcx>( // // This implementation attempts to emulate AST-borrowck prioritization // by trying (3.), then (2.) and finally falling back on (1.). - - fn try_suggest_ampmut_rhs<'cx, 'gcx, 'tcx>( + fn suggest_ampmut<'cx, 'gcx, 'tcx>( tcx: TyCtxt<'cx, 'gcx, 'tcx>, mir: &Mir<'tcx>, local: Local, - ) -> Option<(Span, String)> { + local_decl: &mir::LocalDecl<'tcx>, + opt_ty_info: Option, + ) -> (Span, String) { let locations = mir.find_assignments(local); if locations.len() > 0 { let assignment_rhs_span = mir.source_info(locations[0]).span; @@ -1940,17 +1937,14 @@ fn try_suggest_ampmut_rhs<'cx, 'gcx, 'tcx>( if let Ok(src) = snippet { if src.starts_with('&') { let borrowed_expr = src[1..].to_string(); - return Some((assignment_rhs_span, format!("&mut {}", borrowed_expr))); + return ( + assignment_rhs_span, + format!("&mut {}", borrowed_expr), + ); } } } - None - } - fn suggest_ampmut_type<'tcx>( - local_decl: &mir::LocalDecl<'tcx>, - opt_ty_info: Option, - ) -> (Span, String) { let highlight_span = match opt_ty_info { // if this is a variable binding with an explicit type, // try to highlight that for the suggestion. -- 2.44.0