From f2b58f3da22033632618fdd828f763dbb19433e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Rakic?= Date: Mon, 26 Dec 2022 21:45:58 +0000 Subject: [PATCH] clean-up `for_each_impl` to use `all_impls` handle `impls_for_ref_x` and reduce duplication when iterating over all impls. also: use it in `for_each_relevant_impl_treating_projections` --- compiler/rustc_middle/src/ty/trait_def.rs | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/compiler/rustc_middle/src/ty/trait_def.rs b/compiler/rustc_middle/src/ty/trait_def.rs index 333cdb50c23dd..a2157fc05d548 100644 --- a/compiler/rustc_middle/src/ty/trait_def.rs +++ b/compiler/rustc_middle/src/ty/trait_def.rs @@ -105,18 +105,10 @@ impl<'tcx> TraitDef { impl<'tcx> TyCtxt<'tcx> { /// `trait_def_id` MUST BE the `DefId` of a trait. - pub fn for_each_impl(self, trait_def_id: DefId, mut f: F) { - let impls = self.trait_impls_of(trait_def_id); - - for &impl_def_id in impls.blanket_impls.iter() { + pub fn for_each_impl(self, trait_def_id: DefId, mut f: impl FnMut(DefId)) { + for impl_def_id in self.all_impls(trait_def_id) { f(impl_def_id); } - - for v in impls.non_blanket_impls.values() { - for &impl_def_id in v { - f(impl_def_id); - } - } } /// Iterate over every impl that could possibly match the self type `self_ty`. @@ -190,9 +182,7 @@ impl<'tcx> TyCtxt<'tcx> { } } } else { - for impl_def_id in self.all_impls(trait_def_id) { - f(impl_def_id); - } + self.for_each_impl(trait_def_id, f); } }