diff options
| author | Oli Scherer <git-spam-no-reply9815368754983@oli-obk.de> | 2022-11-17 10:22:44 +0000 |
|---|---|---|
| committer | Oli Scherer <git-spam-no-reply9815368754983@oli-obk.de> | 2022-11-21 20:30:45 +0000 |
| commit | 250dcf421a6db36f85f69c481eab27a0b45887af (patch) | |
| tree | 3a81dd7628e73e35c0680d8ea9bfa69567bb03df /compiler/rustc_trait_selection/src/infer.rs | |
| parent | 0c47deed9fa7ef3c59453cf7a88159b36ff67b95 (diff) | |
| download | rust-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.rs | 14 |
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(), |
