@@ -2914,71 +2914,50 @@ fn add_missing_lifetime_specifiers_label(
2914
2914
if count > 1 {
2915
2915
err. span_label ( span, format ! ( "expected {} lifetime parameters" , count) ) ;
2916
2916
} else {
2917
- let mut introduce_suggestion = vec ! [ ] ;
2918
- if let Some ( generics) = missing_named_lifetime_spots. iter ( ) . last ( ) {
2919
- introduce_suggestion. push ( match & generics. params {
2920
- [ ] => ( generics. span , "<'lifetime>" . to_string ( ) ) ,
2921
- [ param, ..] => ( param. span . shrink_to_lo ( ) , "'lifetime, " . to_string ( ) ) ,
2922
- } ) ;
2923
- }
2917
+ let suggest_existing = |err : & mut DiagnosticBuilder < ' _ > , sugg| {
2918
+ err. span_suggestion (
2919
+ span,
2920
+ "consider using the named lifetime" ,
2921
+ sugg,
2922
+ Applicability :: MaybeIncorrect ,
2923
+ ) ;
2924
+ } ;
2925
+ let suggest_new = |err : & mut DiagnosticBuilder < ' _ > , sugg| {
2926
+ err. span_label ( span, "expected named lifetime parameter" ) ;
2927
+
2928
+ if let Some ( generics) = missing_named_lifetime_spots. iter ( ) . last ( ) {
2929
+ let mut introduce_suggestion = vec ! [ ] ;
2930
+ introduce_suggestion. push ( match & generics. params {
2931
+ [ ] => ( generics. span , "<'lifetime>" . to_string ( ) ) ,
2932
+ [ param, ..] => ( param. span . shrink_to_lo ( ) , "'lifetime, " . to_string ( ) ) ,
2933
+ } ) ;
2934
+ introduce_suggestion. push ( ( span, sugg) ) ;
2935
+ err. multipart_suggestion (
2936
+ "consider introducing a named lifetime parameter" ,
2937
+ introduce_suggestion,
2938
+ Applicability :: MaybeIncorrect ,
2939
+ ) ;
2940
+ }
2941
+ } ;
2924
2942
2925
2943
match ( lifetime_names. len ( ) , lifetime_names. iter ( ) . next ( ) , snippet) {
2926
2944
( 1 , Some ( name) , Some ( "&" ) ) => {
2927
- err. span_suggestion (
2928
- span,
2929
- "consider using the named lifetime" ,
2930
- format ! ( "&{} " , name) ,
2931
- Applicability :: MaybeIncorrect ,
2932
- ) ;
2945
+ suggest_existing ( err, format ! ( "&{} " , name) ) ;
2933
2946
}
2934
2947
( 1 , Some ( name) , Some ( "'_" ) ) => {
2935
- err. span_suggestion (
2936
- span,
2937
- "consider using the named lifetime" ,
2938
- name. to_string ( ) ,
2939
- Applicability :: MaybeIncorrect ,
2940
- ) ;
2948
+ suggest_existing ( err, name. to_string ( ) ) ;
2941
2949
}
2942
2950
( 1 , Some ( name) , Some ( snippet) ) if !snippet. ends_with ( ">" ) => {
2943
- err. span_suggestion (
2944
- span,
2945
- "consider using the named lifetime" ,
2946
- format ! ( "{}<{}>" , snippet, name) ,
2947
- Applicability :: MaybeIncorrect ,
2948
- ) ;
2951
+ suggest_existing ( err, format ! ( "{}<{}>" , snippet, name) ) ;
2949
2952
}
2950
2953
( 0 , _, Some ( "&" ) ) => {
2951
- err. span_label ( span, "expected named lifetime parameter" ) ;
2952
- if !introduce_suggestion. is_empty ( ) {
2953
- introduce_suggestion. push ( ( span, "&'lifetime " . to_string ( ) ) ) ;
2954
- err. multipart_suggestion (
2955
- "consider introducing a named lifetime parameter" ,
2956
- introduce_suggestion,
2957
- Applicability :: MaybeIncorrect ,
2958
- ) ;
2959
- }
2954
+ suggest_new ( err, "&'lifetime " . to_string ( ) ) ;
2960
2955
}
2961
2956
( 0 , _, Some ( "'_" ) ) => {
2962
- err. span_label ( span, "expected named lifetime parameter" ) ;
2963
- if !introduce_suggestion. is_empty ( ) {
2964
- introduce_suggestion. push ( ( span, "'lifetime" . to_string ( ) ) ) ;
2965
- err. multipart_suggestion (
2966
- "consider introducing a named lifetime parameter" ,
2967
- introduce_suggestion,
2968
- Applicability :: MaybeIncorrect ,
2969
- ) ;
2970
- }
2957
+ suggest_new ( err, "'lifetime" . to_string ( ) ) ;
2971
2958
}
2972
2959
( 0 , _, Some ( snippet) ) if !snippet. ends_with ( ">" ) => {
2973
- err. span_label ( span, "expected named lifetime parameter" ) ;
2974
- if !introduce_suggestion. is_empty ( ) {
2975
- introduce_suggestion. push ( ( span, format ! ( "{}<'lifetime>" , snippet) ) ) ;
2976
- err. multipart_suggestion (
2977
- "consider introducing a named lifetime parameter" ,
2978
- introduce_suggestion,
2979
- Applicability :: MaybeIncorrect ,
2980
- ) ;
2981
- }
2960
+ suggest_new ( err, format ! ( "{}<'lifetime>" , snippet) ) ;
2982
2961
}
2983
2962
_ => {
2984
2963
err. span_label ( span, "expected lifetime parameter" ) ;
0 commit comments