@@ -161,6 +161,7 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
161161 msg : String ,
162162 fallback_label : String ,
163163 span : Span ,
164+ span_label : Option < ( Span , & ' a str ) > ,
164165 could_be_expr : bool ,
165166 suggestion : Option < ( Span , & ' a str , String ) > ,
166167 }
@@ -172,6 +173,12 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
172173 msg : format ! ( "expected {}, found {} `{}`" , expected, res. descr( ) , path_str) ,
173174 fallback_label : format ! ( "not a {expected}" ) ,
174175 span,
176+ span_label : match res {
177+ Res :: Def ( kind, def_id) if kind == DefKind :: TyParam => {
178+ self . def_span ( def_id) . map ( |span| ( span, "found this type pararmeter" ) )
179+ }
180+ _ => None ,
181+ } ,
175182 could_be_expr : match res {
176183 Res :: Def ( DefKind :: Fn , _) => {
177184 // Verify whether this is a fn call or an Fn used as a type.
@@ -251,6 +258,7 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
251258 format ! ( "not found in {mod_str}" )
252259 } ,
253260 span : item_span,
261+ span_label : None ,
254262 could_be_expr : false ,
255263 suggestion,
256264 }
@@ -262,6 +270,10 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
262270
263271 self . suggest_swapping_misplaced_self_ty_and_trait ( & mut err, source, res, base_error. span ) ;
264272
273+ if let Some ( ( span, label) ) = base_error. span_label {
274+ err. span_label ( span, label) ;
275+ }
276+
265277 if let Some ( sugg) = base_error. suggestion {
266278 err. span_suggestion_verbose ( sugg. 0 , sugg. 1 , sugg. 2 , Applicability :: MaybeIncorrect ) ;
267279 }
0 commit comments