]> git.lizzy.rs Git - rust.git/commitdiff
Let `mk_fn_def` take an iterator instead to simplify some call sites
authorOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>
Tue, 13 Dec 2022 10:37:19 +0000 (10:37 +0000)
committerOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>
Wed, 14 Dec 2022 15:36:39 +0000 (15:36 +0000)
compiler/rustc_middle/src/ty/adjustment.rs
compiler/rustc_middle/src/ty/context.rs
compiler/rustc_mir_build/src/build/matches/test.rs
compiler/rustc_mir_transform/src/shim.rs

index 7036c4a7b27d60b8da7772a1e575c33297736d4d..8ce06404de0811d64a177271ba6d4679278e007f 100644 (file)
@@ -131,7 +131,7 @@ pub fn method_call(&self, tcx: TyCtxt<'tcx>, source: Ty<'tcx>) -> Ty<'tcx> {
             .find(|m| m.kind == ty::AssocKind::Fn)
             .unwrap()
             .def_id;
-        tcx.mk_fn_def(method_def_id, tcx.mk_substs_trait(source, []))
+        tcx.mk_fn_def(method_def_id, [source])
     }
 }
 
index ad097b39d10844987aefbad1859c7dadf8f2d427..fc7bdb5535257df03fe9fea7b317ba97eb7aa939 100644 (file)
@@ -2565,12 +2565,20 @@ pub fn mk_diverging_default(self) -> Ty<'tcx> {
     }
 
     #[inline]
-    pub fn mk_fn_def(self, def_id: DefId, substs: SubstsRef<'tcx>) -> Ty<'tcx> {
+    pub fn mk_fn_def(
+        self,
+        def_id: DefId,
+        substs: impl IntoIterator<Item = impl Into<GenericArg<'tcx>>>,
+    ) -> Ty<'tcx> {
+        let substs = substs.into_iter().map(Into::into);
+        let n = self.generics_of(def_id).count();
         debug_assert_eq!(
-            self.generics_of(def_id).count(),
-            substs.len(),
-            "wrong number of generic parameters for {def_id:?}: {substs:?}",
+            (n, Some(n)),
+            substs.size_hint(),
+            "wrong number of generic parameters for {def_id:?}: {:?} \nDid you accidentally include the self-type in the params list?",
+            substs.collect::<Vec<_>>(),
         );
+        let substs = self.mk_substs(substs);
         self.mk_ty(FnDef(def_id, substs))
     }
 
index 6d5a98342d2936730549754f62fcacdadd06bcae..de6a48f7cc411c4c7afb830f729c5bcb95227dfe 100644 (file)
@@ -838,8 +838,6 @@ fn trait_method<'tcx>(
     method_name: Symbol,
     substs: impl IntoIterator<Item = impl Into<GenericArg<'tcx>>>,
 ) -> ConstantKind<'tcx> {
-    let substs = tcx.mk_substs(substs.into_iter().map(Into::into));
-
     // The unhygienic comparison here is acceptable because this is only
     // used on known traits.
     let item = tcx
index f92a0e826dcdfb6dcf55e264235d07e360a5137f..ec84243fbeb8e2f67aa76570dec0e3602e131d39 100644 (file)
@@ -417,10 +417,8 @@ fn make_clone_call(
     ) {
         let tcx = self.tcx;
 
-        let substs = tcx.mk_substs_trait(ty, []);
-
         // `func == Clone::clone(&ty) -> ty`
-        let func_ty = tcx.mk_fn_def(self.def_id, substs);
+        let func_ty = tcx.mk_fn_def(self.def_id, [ty]);
         let func = Operand::Constant(Box::new(Constant {
             span: self.span,
             user_ty: None,