From 7a0ab1358c21a6414c29111f154eff2efae10d4d Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Sun, 12 Jun 2022 14:40:37 +0200 Subject: [PATCH] internal: Remove `Generics::type_iter` in favor of `Generics::iter` --- crates/hir-def/src/generics.rs | 8 -------- crates/hir-ty/src/lower.rs | 8 ++++++-- crates/hir-ty/src/utils.rs | 21 +-------------------- 3 files changed, 7 insertions(+), 30 deletions(-) diff --git a/crates/hir-def/src/generics.rs b/crates/hir-def/src/generics.rs index 04b77894ae926..f54f084ec3feb 100644 --- a/crates/hir-def/src/generics.rs +++ b/crates/hir-def/src/generics.rs @@ -133,14 +133,6 @@ pub enum WherePredicateTypeTarget { } impl GenericParams { - // FIXME: almost every usecase of this function is wrong. every one should check - // const generics - pub fn type_iter<'a>( - &'a self, - ) -> impl Iterator, &TypeParamData)> { - self.type_or_consts.iter().filter_map(|x| x.1.type_param().map(|y| (x.0, y))) - } - /// Iterator of type_or_consts field pub fn iter<'a>( &'a self, diff --git a/crates/hir-ty/src/lower.rs b/crates/hir-ty/src/lower.rs index a3787728eac08..f64027c218379 100644 --- a/crates/hir-ty/src/lower.rs +++ b/crates/hir-ty/src/lower.rs @@ -292,9 +292,13 @@ impl<'a> TyLoweringContext<'a> { if let Some(def) = self.resolver.generic_def() { let generics = generics(self.db.upcast(), def); let param = generics - .type_iter() + .iter() .filter(|(_, data)| { - data.provenance == TypeParamProvenance::ArgumentImplTrait + matches!( + data, + TypeOrConstParamData::TypeParamData(data) + if data.provenance == TypeParamProvenance::ArgumentImplTrait + ) }) .nth(idx as usize) .map_or(TyKind::Error, |(id, _)| { diff --git a/crates/hir-ty/src/utils.rs b/crates/hir-ty/src/utils.rs index bdb7677f5d786..fb39e6095c094 100644 --- a/crates/hir-ty/src/utils.rs +++ b/crates/hir-ty/src/utils.rs @@ -8,7 +8,7 @@ use chalk_ir::{fold::Shift, BoundVar, DebruijnIndex}; use hir_def::{ db::DefDatabase, generics::{ - GenericParams, TypeOrConstParamData, TypeParamData, TypeParamProvenance, WherePredicate, + GenericParams, TypeOrConstParamData, TypeParamProvenance, WherePredicate, WherePredicateTypeTarget, }, intern::Interned, @@ -204,25 +204,6 @@ pub(crate) struct Generics { } impl Generics { - // FIXME: we should drop this and handle const and type generics at the same time - pub(crate) fn type_iter<'a>( - &'a self, - ) -> impl Iterator + 'a { - self.parent_generics - .as_ref() - .into_iter() - .flat_map(|it| { - it.params - .type_iter() - .map(move |(local_id, p)| (TypeOrConstParamId { parent: it.def, local_id }, p)) - }) - .chain( - self.params.type_iter().map(move |(local_id, p)| { - (TypeOrConstParamId { parent: self.def, local_id }, p) - }), - ) - } - pub(crate) fn iter_id<'a>( &'a self, ) -> impl Iterator> + 'a {