diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-06-02 18:12:46 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-06-02 18:12:46 +0200 |
| commit | 82130eb9d2cc68f66cdbbc60b085fbba5ba544ec (patch) | |
| tree | 59ab82af93a41af34deb1b3398841db8de54038c | |
| parent | ec51b15b81575d276fdd817a5ee7f4760f3951cd (diff) | |
| parent | 36a91abba3c16a3c7cdff2c20f5391bf30dbf5e4 (diff) | |
| download | rust-82130eb9d2cc68f66cdbbc60b085fbba5ba544ec.tar.gz rust-82130eb9d2cc68f66cdbbc60b085fbba5ba544ec.zip | |
Rollup merge of #112189 - compiler-errors:bad-gen, r=cjgillot
Debug-assert that closures and generators are made with the right number of substitutions Just in case.
| -rw-r--r-- | compiler/rustc_middle/src/ty/context.rs | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/compiler/rustc_middle/src/ty/context.rs b/compiler/rustc_middle/src/ty/context.rs index 673d09cddf4..e7335104e61 100644 --- a/compiler/rustc_middle/src/ty/context.rs +++ b/compiler/rustc_middle/src/ty/context.rs @@ -1884,18 +1884,28 @@ impl<'tcx> TyCtxt<'tcx> { } #[inline] - pub fn mk_closure(self, closure_id: DefId, closure_substs: SubstsRef<'tcx>) -> Ty<'tcx> { - self.mk_ty_from_kind(Closure(closure_id, closure_substs)) + pub fn mk_closure(self, def_id: DefId, closure_substs: SubstsRef<'tcx>) -> Ty<'tcx> { + debug_assert_eq!( + closure_substs.len(), + self.generics_of(self.typeck_root_def_id(def_id)).count() + 3, + "closure constructed with incorrect substitutions" + ); + self.mk_ty_from_kind(Closure(def_id, closure_substs)) } #[inline] pub fn mk_generator( self, - id: DefId, + def_id: DefId, generator_substs: SubstsRef<'tcx>, movability: hir::Movability, ) -> Ty<'tcx> { - self.mk_ty_from_kind(Generator(id, generator_substs, movability)) + debug_assert_eq!( + generator_substs.len(), + self.generics_of(self.typeck_root_def_id(def_id)).count() + 5, + "generator constructed with incorrect number of substitutions" + ); + self.mk_ty_from_kind(Generator(def_id, generator_substs, movability)) } #[inline] |
