about summary refs log tree commit diff
path: root/compiler/rustc_trait_selection/src/infer.rs
diff options
context:
space:
mode:
authorOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>2022-11-17 10:22:44 +0000
committerOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>2022-11-21 20:30:45 +0000
commit250dcf421a6db36f85f69c481eab27a0b45887af (patch)
tree3a81dd7628e73e35c0680d8ea9bfa69567bb03df /compiler/rustc_trait_selection/src/infer.rs
parent0c47deed9fa7ef3c59453cf7a88159b36ff67b95 (diff)
downloadrust-250dcf421a6db36f85f69c481eab27a0b45887af.tar.gz
rust-250dcf421a6db36f85f69c481eab27a0b45887af.zip
Check that type_implements_trait actually is passed the right amount of generic params
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(),