]> git.lizzy.rs Git - rust.git/blobdiff - crates/hir_ty/src/diagnostics/expr.rs
internal: Replace Vec with Box in hir Expr
[rust.git] / crates / hir_ty / src / diagnostics / expr.rs
index abcb84401b4af04b32dd645e21bba5c0d0d7d955..195c53c17e211fb3a2f514e53a2f87b4a668e51a 100644 (file)
@@ -202,19 +202,16 @@ fn validate_call(&mut self, db: &dyn HirDatabase, call_id: ExprId, expr: &Expr)
         }
 
         let is_method_call = matches!(expr, Expr::MethodCall { .. });
-        let (sig, args) = match expr {
+        let (sig, mut arg_count) = match expr {
             Expr::Call { callee, args } => {
                 let callee = &self.infer.type_of_expr[*callee];
                 let sig = match callee.callable_sig(db) {
                     Some(sig) => sig,
                     None => return,
                 };
-                (sig, args.clone())
+                (sig, args.len())
             }
             Expr::MethodCall { receiver, args, .. } => {
-                let mut args = args.clone();
-                args.insert(0, *receiver);
-
                 let receiver = &self.infer.type_of_expr[*receiver];
                 if receiver.strip_references().is_unknown() {
                     // if the receiver is of unknown type, it's very likely we
@@ -229,7 +226,7 @@ fn validate_call(&mut self, db: &dyn HirDatabase, call_id: ExprId, expr: &Expr)
                 };
                 let sig = db.callable_item_signature(callee.into()).substitute(&Interner, &subst);
 
-                (sig, args)
+                (sig, args.len() + 1)
             }
             _ => return,
         };
@@ -241,7 +238,6 @@ fn validate_call(&mut self, db: &dyn HirDatabase, call_id: ExprId, expr: &Expr)
         let params = sig.params();
 
         let mut param_count = params.len();
-        let mut arg_count = args.len();
 
         if arg_count != param_count {
             if is_method_call {