@@ -329,58 +329,60 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
329329 if self . body . local_decls [ local] . is_user_variable ( ) =>
330330 {
331331 let local_decl = & self . body . local_decls [ local] ;
332- let suggestion = match local_decl. local_info {
333- LocalInfo :: User ( ClearCrossCrate :: Set ( mir:: BindingForm :: ImplicitSelf ( _) ) ) => {
334- Some ( suggest_ampmut_self ( self . infcx . tcx , local_decl) )
335- }
336-
337- LocalInfo :: User ( ClearCrossCrate :: Set ( mir:: BindingForm :: Var (
338- mir:: VarBindingForm {
339- binding_mode : ty:: BindingMode :: BindByValue ( _) ,
340- opt_ty_info,
341- ..
342- } ,
343- ) ) ) => Some ( suggest_ampmut (
344- self . infcx . tcx ,
345- self . body ,
346- local,
347- local_decl,
348- opt_ty_info,
349- ) ) ,
350-
351- LocalInfo :: User ( ClearCrossCrate :: Set ( mir:: BindingForm :: Var (
352- mir:: VarBindingForm {
353- binding_mode : ty:: BindingMode :: BindByReference ( _) ,
354- ..
355- } ,
356- ) ) ) => {
357- let pattern_span = local_decl. source_info . span ;
358- suggest_ref_mut ( self . infcx . tcx , pattern_span)
359- . map ( |replacement| ( pattern_span, replacement) )
360- }
361-
362- LocalInfo :: User ( ClearCrossCrate :: Clear ) => bug ! ( "saw cleared local state" ) ,
363-
364- _ => unreachable ! ( ) ,
365- } ;
366332
367333 let ( pointer_sigil, pointer_desc) = if local_decl. ty . is_region_ptr ( ) {
368334 ( "&" , "reference" )
369335 } else {
370336 ( "*const" , "pointer" )
371337 } ;
372338
373- if let Some ( ( err_help_span, suggested_code) ) = suggestion {
374- err. span_suggestion (
375- err_help_span,
376- & format ! ( "consider changing this to be a mutable {}" , pointer_desc) ,
377- suggested_code,
378- Applicability :: MachineApplicable ,
379- ) ;
380- }
381-
382339 match self . local_names [ local] {
383340 Some ( name) if !local_decl. from_compiler_desugaring ( ) => {
341+ let suggestion = match local_decl. local_info {
342+ LocalInfo :: User ( ClearCrossCrate :: Set (
343+ mir:: BindingForm :: ImplicitSelf ( _) ,
344+ ) ) => Some ( suggest_ampmut_self ( self . infcx . tcx , local_decl) ) ,
345+
346+ LocalInfo :: User ( ClearCrossCrate :: Set ( mir:: BindingForm :: Var (
347+ mir:: VarBindingForm {
348+ binding_mode : ty:: BindingMode :: BindByValue ( _) ,
349+ opt_ty_info,
350+ ..
351+ } ,
352+ ) ) ) => Some ( suggest_ampmut (
353+ self . infcx . tcx ,
354+ self . body ,
355+ local,
356+ local_decl,
357+ opt_ty_info,
358+ ) ) ,
359+
360+ LocalInfo :: User ( ClearCrossCrate :: Set ( mir:: BindingForm :: Var (
361+ mir:: VarBindingForm {
362+ binding_mode : ty:: BindingMode :: BindByReference ( _) ,
363+ ..
364+ } ,
365+ ) ) ) => {
366+ let pattern_span = local_decl. source_info . span ;
367+ suggest_ref_mut ( self . infcx . tcx , pattern_span)
368+ . map ( |replacement| ( pattern_span, replacement) )
369+ }
370+
371+ LocalInfo :: User ( ClearCrossCrate :: Clear ) => {
372+ bug ! ( "saw cleared local state" )
373+ }
374+
375+ _ => unreachable ! ( ) ,
376+ } ;
377+
378+ if let Some ( ( err_help_span, suggested_code) ) = suggestion {
379+ err. span_suggestion (
380+ err_help_span,
381+ & format ! ( "consider changing this to be a mutable {}" , pointer_desc) ,
382+ suggested_code,
383+ Applicability :: MachineApplicable ,
384+ ) ;
385+ }
384386 err. span_label (
385387 span,
386388 format ! (
0 commit comments