@@ -329,58 +329,60 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
329
329
if self . body . local_decls [ local] . is_user_variable ( ) =>
330
330
{
331
331
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
- } ;
366
332
367
333
let ( pointer_sigil, pointer_desc) = if local_decl. ty . is_region_ptr ( ) {
368
334
( "&" , "reference" )
369
335
} else {
370
336
( "*const" , "pointer" )
371
337
} ;
372
338
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
-
382
339
match self . local_names [ local] {
383
340
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
+ }
384
386
err. span_label (
385
387
span,
386
388
format ! (
0 commit comments