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