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