@@ -64,11 +64,11 @@ use rustc_errors::{
6464 codes:: * , pluralize, struct_span_code_err, Applicability , Diag , DiagCtxt , DiagStyledString ,
6565 ErrorGuaranteed , IntoDiagArg , StringPart ,
6666} ;
67- use rustc_hir as hir;
6867use rustc_hir:: def:: DefKind ;
6968use rustc_hir:: def_id:: { DefId , LocalDefId } ;
7069use rustc_hir:: intravisit:: Visitor ;
7170use rustc_hir:: lang_items:: LangItem ;
71+ use rustc_hir:: { self as hir, ParamName } ;
7272use rustc_macros:: extension;
7373use rustc_middle:: bug;
7474use rustc_middle:: dep_graph:: DepContext ;
@@ -2429,7 +2429,8 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> {
24292429 let ( type_scope, type_param_sugg_span) = match bound_kind {
24302430 GenericKind :: Param ( param) => {
24312431 let generics = self . tcx . generics_of ( generic_param_scope) ;
2432- let def_id = generics. type_param ( param, self . tcx ) . def_id . expect_local ( ) ;
2432+ let type_param = generics. type_param ( param, self . tcx ) ;
2433+ let def_id = type_param. def_id . expect_local ( ) ;
24332434 let scope = self . tcx . local_def_id_to_hir_id ( def_id) . owner . def_id ;
24342435 // Get the `hir::Param` to verify whether it already has any bounds.
24352436 // We do this to avoid suggesting code that ends up as `T: 'a'b`,
@@ -2439,7 +2440,18 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> {
24392440 Some ( ( span, open_paren_sp) ) => Some ( ( span, true , open_paren_sp) ) ,
24402441 // If `param` corresponds to `Self`, no usable suggestion span.
24412442 None if generics. has_self && param. index == 0 => None ,
2442- None => Some ( ( self . tcx . def_span ( def_id) . shrink_to_hi ( ) , false , None ) ) ,
2443+ None => {
2444+ let span = if let Some ( param) =
2445+ hir_generics. params . iter ( ) . find ( |param| param. def_id == def_id)
2446+ && let ParamName :: Plain ( ident) = param. name
2447+ {
2448+ ident. span . shrink_to_hi ( )
2449+ } else {
2450+ let span = self . tcx . def_span ( def_id) ;
2451+ span. shrink_to_hi ( )
2452+ } ;
2453+ Some ( ( span, false , None ) )
2454+ }
24432455 } ;
24442456 ( scope, sugg_span)
24452457 }
0 commit comments