about summary refs log tree commit diff
path: root/compiler/rustc_trait_selection/src/infer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_trait_selection/src/infer.rs')
-rw-r--r--compiler/rustc_trait_selection/src/infer.rs14
1 files changed, 11 insertions, 3 deletions
diff --git a/compiler/rustc_trait_selection/src/infer.rs b/compiler/rustc_trait_selection/src/infer.rs
index 0f2e22604dc..73e220dc7af 100644
--- a/compiler/rustc_trait_selection/src/infer.rs
+++ b/compiler/rustc_trait_selection/src/infer.rs
@@ -113,12 +113,20 @@ impl<'tcx> InferCtxtExt<'tcx> for InferCtxt<'tcx> {
     fn type_implements_trait(
         &self,
         trait_def_id: DefId,
-        ty: Ty<'tcx>,
+        self_ty: Ty<'tcx>,
         params: SubstsRef<'tcx>,
         param_env: ty::ParamEnv<'tcx>,
     ) -> traits::EvaluationResult {
-        let trait_ref =
-            ty::TraitRef { def_id: trait_def_id, substs: self.tcx.mk_substs_trait(ty, params) };
+        let trait_ref = ty::TraitRef {
+            def_id: trait_def_id,
+            substs: self.tcx.mk_substs_trait(self_ty, params),
+        };
+
+        debug_assert_eq!(
+            self.tcx.generics_of(trait_def_id).count() - 1,
+            params.len(),
+            "wrong number of generic parameters for {trait_def_id:?}, did you accidentally include the self-type in the params list?"
+        );
 
         let obligation = traits::Obligation {
             cause: traits::ObligationCause::dummy(),