@@ -174,7 +174,7 @@ fn suggest_restriction(
174
174
return ;
175
175
}
176
176
// Given `fn foo(t: impl Trait)` where `Trait` requires assoc type `A`...
177
- if let Some ( ( name , fn_sig) ) =
177
+ if let Some ( ( bound_str , fn_sig) ) =
178
178
fn_sig. zip ( projection) . and_then ( |( sig, p) | match p. self_ty ( ) . kind {
179
179
// Shenanigans to get the `Trait` from the `impl Trait`.
180
180
ty:: Param ( param) => {
@@ -193,14 +193,14 @@ fn suggest_restriction(
193
193
// but instead we choose to suggest replacing all instances of `impl Trait` with `T`
194
194
// where `T: Trait`.
195
195
let mut ty_spans = vec ! [ ] ;
196
- let impl_name = format ! ( "impl {}" , name ) ;
196
+ let impl_trait_str = format ! ( "impl {}" , bound_str ) ;
197
197
for input in fn_sig. decl . inputs {
198
198
if let hir:: TyKind :: Path ( hir:: QPath :: Resolved (
199
199
None ,
200
200
hir:: Path { segments : [ segment] , .. } ,
201
201
) ) = input. kind
202
202
{
203
- if segment. ident . as_str ( ) == impl_name . as_str ( ) {
203
+ if segment. ident . as_str ( ) == impl_trait_str . as_str ( ) {
204
204
// `fn foo(t: impl Trait)`
205
205
// ^^^^^^^^^^ get this to suggest `T` instead
206
206
@@ -210,14 +210,14 @@ fn suggest_restriction(
210
210
}
211
211
}
212
212
213
- let type_param_name = generics. params . next_type_param_name ( Some ( & name ) ) ;
213
+ let type_param_name = generics. params . next_type_param_name ( Some ( & bound_str ) ) ;
214
214
// The type param `T: Trait` we will suggest to introduce.
215
- let type_param = format ! ( "{}: {}" , type_param_name, name ) ;
215
+ let type_param = format ! ( "{}: {}" , type_param_name, bound_str ) ;
216
216
217
217
// FIXME: modify the `trait_ref` instead of string shenanigans.
218
218
// Turn `<impl Trait as Foo>::Bar: Qux` into `<T as Foo>::Bar: Qux`.
219
219
let pred = trait_ref. without_const ( ) . to_predicate ( ) . to_string ( ) ;
220
- let pred = pred. replace ( & impl_name , & type_param_name) ;
220
+ let pred = pred. replace ( & impl_trait_str , & type_param_name) ;
221
221
let mut sugg = vec ! [
222
222
match generics
223
223
. params
@@ -257,10 +257,10 @@ fn suggest_restriction(
257
257
) ;
258
258
} else {
259
259
// Trivial case: `T` needs an extra bound: `T: Bound`.
260
- let ( sp, s ) =
260
+ let ( sp, sugg ) =
261
261
predicate_constraint ( generics, trait_ref. without_const ( ) . to_predicate ( ) . to_string ( ) ) ;
262
262
let appl = Applicability :: MachineApplicable ;
263
- err. span_suggestion ( sp, & format ! ( "consider further restricting {}" , msg) , s , appl) ;
263
+ err. span_suggestion ( sp, & format ! ( "consider further restricting {}" , msg) , sugg , appl) ;
264
264
}
265
265
}
266
266
0 commit comments