@@ -176,8 +176,8 @@ fn convert_to_from(
176
176
return None ;
177
177
} ;
178
178
let body = cx. tcx . hir_body ( body_id) ;
179
- let [ input ] = body. params else { return None } ;
180
- let PatKind :: Binding ( .., self_ident, None ) = input . pat . kind else {
179
+ let [ self_param ] = body. params else { return None } ;
180
+ let PatKind :: Binding ( .., self_ident, None ) = self_param . pat . kind else {
181
181
return None ;
182
182
} ;
183
183
@@ -197,11 +197,21 @@ fn convert_to_from(
197
197
// fn into(self) -> T -> fn from(self) -> T
198
198
// ~~~~ ~~~~
199
199
( impl_item. ident. span, String :: from( "from" ) ) ,
200
- // fn into([mut] self) -> T -> fn into([mut] v: T) -> T
201
- // ~~~~ ~~~~
202
- ( self_ident. span, format!( "val: {from}" ) ) ,
203
200
] ;
204
201
202
+ if self_ident. span . overlaps ( self_param. ty_span ) {
203
+ // fn into([mut] self) -> T -> fn into([mut] val: T) -> T
204
+ // ~~~~ ~~~~~~
205
+ suggestions. push ( ( self_ident. span , format ! ( "val: {from}" ) ) ) ;
206
+ } else {
207
+ // fn into([mut] self: U) -> T -> fn into([mut] val: U) -> T
208
+ // ~~~~ ~~~
209
+ suggestions. push ( ( self_ident. span , String :: from ( "val" ) ) ) ;
210
+ // fn into([mut] val: U) -> T -> fn into([mut] val: T) -> T
211
+ // ~ ~
212
+ suggestions. push ( ( self_param. ty_span , from. to_owned ( ) ) ) ;
213
+ }
214
+
205
215
if let FnRetTy :: Return ( _) = sig. decl . output {
206
216
// fn into(self) -> T -> fn into(self) -> Self
207
217
// ~ ~~~~
0 commit comments