mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-05 19:58:32 +00:00
Auto merge of #12509 - Veykril:ty-utils, r=Veykril
internal: Remove `Generics::type_iter` in favor of `Generics::iter`
This commit is contained in:
commit
d513f657a3
@ -133,14 +133,6 @@ pub enum WherePredicateTypeTarget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl GenericParams {
|
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
|
/// Iterator of type_or_consts field
|
||||||
pub fn iter<'a>(
|
pub fn iter<'a>(
|
||||||
&'a self,
|
&'a self,
|
||||||
|
@ -292,9 +292,13 @@ impl<'a> TyLoweringContext<'a> {
|
|||||||
if let Some(def) = self.resolver.generic_def() {
|
if let Some(def) = self.resolver.generic_def() {
|
||||||
let generics = generics(self.db.upcast(), def);
|
let generics = generics(self.db.upcast(), def);
|
||||||
let param = generics
|
let param = generics
|
||||||
.type_iter()
|
.iter()
|
||||||
.filter(|(_, data)| {
|
.filter(|(_, data)| {
|
||||||
data.provenance == TypeParamProvenance::ArgumentImplTrait
|
matches!(
|
||||||
|
data,
|
||||||
|
TypeOrConstParamData::TypeParamData(data)
|
||||||
|
if data.provenance == TypeParamProvenance::ArgumentImplTrait
|
||||||
|
)
|
||||||
})
|
})
|
||||||
.nth(idx as usize)
|
.nth(idx as usize)
|
||||||
.map_or(TyKind::Error, |(id, _)| {
|
.map_or(TyKind::Error, |(id, _)| {
|
||||||
|
@ -8,7 +8,7 @@ use chalk_ir::{fold::Shift, BoundVar, DebruijnIndex};
|
|||||||
use hir_def::{
|
use hir_def::{
|
||||||
db::DefDatabase,
|
db::DefDatabase,
|
||||||
generics::{
|
generics::{
|
||||||
GenericParams, TypeOrConstParamData, TypeParamData, TypeParamProvenance, WherePredicate,
|
GenericParams, TypeOrConstParamData, TypeParamProvenance, WherePredicate,
|
||||||
WherePredicateTypeTarget,
|
WherePredicateTypeTarget,
|
||||||
},
|
},
|
||||||
intern::Interned,
|
intern::Interned,
|
||||||
@ -204,25 +204,6 @@ pub(crate) struct Generics {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl 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>(
|
pub(crate) fn iter_id<'a>(
|
||||||
&'a self,
|
&'a self,
|
||||||
) -> impl Iterator<Item = Either<TypeParamId, ConstParamId>> + 'a {
|
) -> impl Iterator<Item = Either<TypeParamId, ConstParamId>> + 'a {
|
||||||
|
Loading…
Reference in New Issue
Block a user