@@ -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