@@ -224,10 +224,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
224224 }
225225 }
226226
227- use_spans. var_span_label_path_only (
228- & mut err,
229- format ! ( "{} occurs due to use{}" , desired_action. as_noun( ) , use_spans. describe( ) ) ,
230- ) ;
227+ use_spans. var_path_only_subdiag ( & mut err, desired_action) ;
231228
232229 if !is_loop_move {
233230 err. span_label (
@@ -404,10 +401,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
404401 let used = desired_action. as_general_verb_in_past_tense ( ) ;
405402 let mut err =
406403 struct_span_err ! ( self , span, E0381 , "{used} binding {desc}{isnt_initialized}" ) ;
407- use_spans. var_span_label_path_only (
408- & mut err,
409- format ! ( "{} occurs due to use{}" , desired_action. as_noun( ) , use_spans. describe( ) ) ,
410- ) ;
404+ use_spans. var_path_only_subdiag ( & mut err, desired_action) ;
411405
412406 if let InitializationRequiringAction :: PartialAssignment
413407 | InitializationRequiringAction :: Assignment = desired_action
@@ -673,16 +667,16 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
673667 let move_spans = self . move_spans ( place. as_ref ( ) , location) ;
674668 let span = move_spans. args_or_use ( ) ;
675669
676- let mut err =
677- self . cannot_move_when_borrowed ( span, & self . describe_any_place ( place. as_ref ( ) ) ) ;
678- err. span_label ( borrow_span, format ! ( "borrow of {} occurs here" , borrow_msg) ) ;
679- err. span_label ( span, format ! ( "move out of {} occurs here" , value_msg) ) ;
680-
681- borrow_spans. var_span_label_path_only (
682- & mut err,
683- format ! ( "borrow occurs due to use{}" , borrow_spans. describe( ) ) ,
670+ let mut err = self . cannot_move_when_borrowed (
671+ span,
672+ borrow_span,
673+ & self . describe_any_place ( place. as_ref ( ) ) ,
674+ & borrow_msg,
675+ & value_msg,
684676 ) ;
685677
678+ borrow_spans. var_path_only_subdiag ( & mut err, crate :: InitializationRequiringAction :: Borrow ) ;
679+
686680 move_spans. var_span_label (
687681 & mut err,
688682 format ! ( "move occurs due to use{}" , move_spans. describe( ) ) ,
@@ -724,22 +718,15 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
724718 borrow_span,
725719 & self . describe_any_place ( borrow. borrowed_place . as_ref ( ) ) ,
726720 ) ;
727- borrow_spans. var_subdiag (
728- & mut err,
729- |var_span| {
730- use crate :: session_diagnostics:: CaptureVarCause :: * ;
731- let place = & borrow. borrowed_place ;
732- let desc_place = self . describe_any_place ( place. as_ref ( ) ) ;
733- match borrow_spans {
734- UseSpans :: ClosureUse { generator_kind, .. } => match generator_kind {
735- Some ( _) => BorrowUsePlaceGenerator { place : desc_place, var_span } ,
736- None => BorrowUsePlaceClosure { place : desc_place, var_span } ,
737- } ,
738- _ => BorrowUsePlace { place : desc_place, var_span } ,
739- }
740- } ,
741- "mutable" ,
742- ) ;
721+ borrow_spans. var_subdiag ( & mut err, Some ( borrow. kind ) , |kind, var_span| {
722+ use crate :: session_diagnostics:: CaptureVarCause :: * ;
723+ let place = & borrow. borrowed_place ;
724+ let desc_place = self . describe_any_place ( place. as_ref ( ) ) ;
725+ match kind {
726+ Some ( _) => BorrowUsePlaceGenerator { place : desc_place, var_span } ,
727+ None => BorrowUsePlaceClosure { place : desc_place, var_span } ,
728+ }
729+ } ) ;
743730
744731 self . explain_why_borrow_contains_point ( location, borrow, None )
745732 . add_explanation_to_diagnostic (
0 commit comments