Unnamed repository; edit this file 'description' to name the repository.
Auto merge of #12509 - Veykril:ty-utils, r=Veykril
internal: Remove `Generics::type_iter` in favor of `Generics::iter`
bors 2022-06-12
parent eacade2 · parent 7a0ab13 · commit d513f65
-rw-r--r--crates/hir-def/src/generics.rs8
-rw-r--r--crates/hir-ty/src/lower.rs8
-rw-r--r--crates/hir-ty/src/utils.rs21
3 files changed, 7 insertions, 30 deletions
diff --git a/crates/hir-def/src/generics.rs b/crates/hir-def/src/generics.rs
index 04b77894ae..f54f084ec3 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<Item = (Idx<TypeOrConstParamData>, &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 a3787728ea..f64027c218 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 bdb7677f5d..fb39e6095c 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<Item = (TypeOrConstParamId, &'a TypeParamData)> + '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<Item = Either<TypeParamId, ConstParamId>> + 'a {