@@ -255,22 +255,26 @@ impl<'a> LateResolutionVisitor<'a, '_> {
255
255
}
256
256
257
257
// Check if the first argument is `self` and suggest calling a method.
258
- let mut has_self_arg = false ;
259
- let mut args_span = None ;
258
+ let mut has_self_arg = None ;
260
259
if let PathSource :: Expr ( parent) = source {
261
260
match & parent. map ( |p| & p. kind ) {
262
261
Some ( ExprKind :: Call ( _, args) ) if args. len ( ) > 0 => {
263
262
let mut expr_kind = & args[ 0 ] . kind ;
264
263
loop {
265
264
match expr_kind {
266
265
ExprKind :: Path ( _, arg_name) if arg_name. segments . len ( ) == 1 => {
267
- has_self_arg = arg_name. segments [ 0 ] . ident . name == kw:: SelfLower ;
268
- if args. len ( ) > 1 {
269
- args_span = Some ( Span :: new (
270
- args[ 1 ] . span . lo ( ) ,
271
- args. last ( ) . unwrap ( ) . span . hi ( ) ,
272
- parent. unwrap ( ) . span . ctxt ( ) ,
273
- ) ) ;
266
+ if arg_name. segments [ 0 ] . ident . name == kw:: SelfLower {
267
+ let call_span = parent. unwrap ( ) . span ;
268
+ let args_span = if args. len ( ) > 1 {
269
+ Some ( Span :: new (
270
+ args[ 1 ] . span . lo ( ) ,
271
+ args. last ( ) . unwrap ( ) . span . hi ( ) ,
272
+ call_span. ctxt ( ) ,
273
+ ) )
274
+ } else {
275
+ None
276
+ } ;
277
+ has_self_arg = Some ( ( call_span, args_span) ) ;
274
278
}
275
279
break ;
276
280
} ,
@@ -283,7 +287,7 @@ impl<'a> LateResolutionVisitor<'a, '_> {
283
287
}
284
288
} ;
285
289
286
- if has_self_arg {
290
+ if let Some ( ( call_span , args_span ) ) = has_self_arg {
287
291
let mut args_snippet: String = String :: from ( "" ) ;
288
292
if let Some ( args_span) = args_span {
289
293
if let Ok ( snippet) = self . r . session . source_map ( ) . span_to_snippet ( args_span) {
@@ -292,7 +296,7 @@ impl<'a> LateResolutionVisitor<'a, '_> {
292
296
}
293
297
294
298
err. span_suggestion (
295
- span ,
299
+ call_span ,
296
300
& format ! ( "try calling `{}` as a method" , ident) ,
297
301
format ! ( "self.{}({})" , path_str, args_snippet) ,
298
302
Applicability :: MachineApplicable ,
0 commit comments