@@ -760,47 +760,26 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
760
760
(
761
761
Some ( ref name) ,
762
762
BorrowExplanation :: MustBeValidFor {
763
- category : category @ ConstraintCategory :: Return ,
763
+ category :
764
+ category
765
+ @
766
+ ( ConstraintCategory :: Return
767
+ | ConstraintCategory :: CallArgument
768
+ | ConstraintCategory :: OpaqueType ) ,
764
769
from_closure : false ,
765
770
ref region_name,
766
771
span,
767
772
..
768
773
} ,
769
- )
770
- | (
771
- Some ( ref name) ,
772
- BorrowExplanation :: MustBeValidFor {
773
- category : category @ ConstraintCategory :: CallArgument ,
774
- from_closure : false ,
775
- ref region_name,
776
- span,
777
- ..
778
- } ,
779
- ) if borrow_spans. for_closure ( ) => self . report_escaping_closure_capture (
780
- borrow_spans,
781
- borrow_span,
782
- region_name,
783
- category,
784
- span,
785
- & format ! ( "`{}`" , name) ,
786
- ) ,
787
- (
788
- Some ( ref name) ,
789
- BorrowExplanation :: MustBeValidFor {
790
- category : category @ ConstraintCategory :: OpaqueType ,
791
- from_closure : false ,
792
- ref region_name,
774
+ ) if borrow_spans. for_generator ( ) | borrow_spans. for_closure ( ) => self
775
+ . report_escaping_closure_capture (
776
+ borrow_spans,
777
+ borrow_span,
778
+ region_name,
779
+ category,
793
780
span,
794
- ..
795
- } ,
796
- ) if borrow_spans. for_generator ( ) => self . report_escaping_closure_capture (
797
- borrow_spans,
798
- borrow_span,
799
- region_name,
800
- category,
801
- span,
802
- & format ! ( "`{}`" , name) ,
803
- ) ,
781
+ & format ! ( "`{}`" , name) ,
782
+ ) ,
804
783
(
805
784
ref name,
806
785
BorrowExplanation :: MustBeValidFor {
@@ -1187,7 +1166,6 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
1187
1166
) -> DiagnosticBuilder < ' cx > {
1188
1167
let tcx = self . infcx . tcx ;
1189
1168
let args_span = use_span. args_or_use ( ) ;
1190
- let mut err = self . cannot_capture_in_long_lived_closure ( args_span, captured_var, var_span) ;
1191
1169
1192
1170
let suggestion = match tcx. sess . source_map ( ) . span_to_snippet ( args_span) {
1193
1171
Ok ( mut string) => {
@@ -1213,6 +1191,9 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
1213
1191
} ,
1214
1192
None => "closure" ,
1215
1193
} ;
1194
+
1195
+ let mut err =
1196
+ self . cannot_capture_in_long_lived_closure ( args_span, kind, captured_var, var_span) ;
1216
1197
err. span_suggestion (
1217
1198
args_span,
1218
1199
& format ! (
@@ -1225,8 +1206,9 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
1225
1206
) ;
1226
1207
1227
1208
let msg = match category {
1228
- ConstraintCategory :: Return => "closure is returned here" . to_string ( ) ,
1229
- ConstraintCategory :: OpaqueType => "generator is returned here" . to_string ( ) ,
1209
+ ConstraintCategory :: Return | ConstraintCategory :: OpaqueType => {
1210
+ format ! ( "{} is returned here" , kind)
1211
+ }
1230
1212
ConstraintCategory :: CallArgument => {
1231
1213
fr_name. highlight_region_name ( & mut err) ;
1232
1214
format ! ( "function requires argument type to outlive `{}`" , fr_name)
0 commit comments