@@ -161,6 +161,7 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
161
161
msg : String ,
162
162
fallback_label : String ,
163
163
span : Span ,
164
+ span_label : Option < ( Span , & ' a str ) > ,
164
165
could_be_expr : bool ,
165
166
suggestion : Option < ( Span , & ' a str , String ) > ,
166
167
}
@@ -172,6 +173,12 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
172
173
msg : format ! ( "expected {}, found {} `{}`" , expected, res. descr( ) , path_str) ,
173
174
fallback_label : format ! ( "not a {expected}" ) ,
174
175
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
+ } ,
175
182
could_be_expr : match res {
176
183
Res :: Def ( DefKind :: Fn , _) => {
177
184
// 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> {
251
258
format ! ( "not found in {mod_str}" )
252
259
} ,
253
260
span : item_span,
261
+ span_label : None ,
254
262
could_be_expr : false ,
255
263
suggestion,
256
264
}
@@ -262,6 +270,10 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
262
270
263
271
self . suggest_swapping_misplaced_self_ty_and_trait ( & mut err, source, res, base_error. span ) ;
264
272
273
+ if let Some ( ( span, label) ) = base_error. span_label {
274
+ err. span_label ( span, label) ;
275
+ }
276
+
265
277
if let Some ( sugg) = base_error. suggestion {
266
278
err. span_suggestion_verbose ( sugg. 0 , sugg. 1 , sugg. 2 , Applicability :: MaybeIncorrect ) ;
267
279
}
0 commit comments