]> git.lizzy.rs Git - rust.git/commitdiff
Also return the method spans in utils::method_calls
authorflip1995 <hello@philkrones.com>
Wed, 28 Aug 2019 08:41:06 +0000 (10:41 +0200)
committerflip1995 <hello@philkrones.com>
Thu, 29 Aug 2019 15:34:02 +0000 (17:34 +0200)
clippy_lints/src/utils/mod.rs

index 8fb45899653c0d3d1a740d5f5ff871be42af7a1d..9d88e020fd1168130219c541ab748df01210c1f9 100644 (file)
@@ -339,25 +339,27 @@ pub fn resolve_node(cx: &LateContext<'_, '_>, qpath: &QPath, id: HirId) -> Res {
 
 /// Returns the method names and argument list of nested method call expressions that make up
 /// `expr`.
-pub fn method_calls(expr: &Expr, max_depth: usize) -> (Vec<Symbol>, Vec<&[Expr]>) {
+pub fn method_calls(expr: &Expr, max_depth: usize) -> (Vec<Symbol>, Vec<&[Expr]>, Vec<Span>) {
     let mut method_names = Vec::with_capacity(max_depth);
     let mut arg_lists = Vec::with_capacity(max_depth);
+    let mut spans = Vec::with_capacity(max_depth);
 
     let mut current = expr;
     for _ in 0..max_depth {
-        if let ExprKind::MethodCall(path, _, args) = &current.node {
+        if let ExprKind::MethodCall(path, span, args) = &current.node {
             if args.iter().any(|e| e.span.from_expansion()) {
                 break;
             }
             method_names.push(path.ident.name);
             arg_lists.push(&**args);
+            spans.push(*span);
             current = &args[0];
         } else {
             break;
         }
     }
 
-    (method_names, arg_lists)
+    (method_names, arg_lists, spans)
 }
 
 /// Matches an `Expr` against a chain of methods, and return the matched `Expr`s.