1
Fork 0

Consolidate ty::Generics

This commit is contained in:
varkor 2018-03-08 10:39:31 +00:00
parent eca0da5985
commit fe0c119e7d
27 changed files with 186 additions and 126 deletions

View file

@ -225,30 +225,28 @@ impl<'a, 'tcx, 'rcx> AutoTraitFinder<'a, 'tcx, 'rcx> {
fn generics_to_path_params(&self, generics: ty::Generics) -> hir::PathParameters {
let lifetimes = HirVec::from_vec(
generics
.regions
.iter()
.map(|p| {
let name = if p.name == "" {
hir::LifetimeName::Static
} else {
hir::LifetimeName::Name(p.name.as_symbol())
};
generics.lifetimes()
.iter()
.map(|p| {
let name = if p.name == "" {
hir::LifetimeName::Static
} else {
hir::LifetimeName::Name(p.name.as_symbol())
};
hir::Lifetime {
id: ast::DUMMY_NODE_ID,
span: DUMMY_SP,
name,
}
})
.collect(),
hir::Lifetime {
id: ast::DUMMY_NODE_ID,
span: DUMMY_SP,
name,
}
})
.collect(),
);
let types = HirVec::from_vec(
generics
.types
.iter()
.map(|p| P(self.ty_param_to_ty(p.clone())))
.collect(),
generics.types()
.into_iter()
.map(|p| P(self.ty_param_to_ty(p.clone())))
.collect(),
);
hir::PathParameters {

View file

@ -1800,7 +1800,7 @@ impl<'a, 'tcx> Clean<Generics> for (&'a ty::Generics,
// Bounds in the type_params and lifetimes fields are repeated in the
// predicates field (see rustc_typeck::collect::ty_generics), so remove
// them.
let stripped_typarams = gens.types.iter().filter_map(|tp| {
let stripped_typarams = gens.types().iter().filter_map(|tp| {
if tp.name == keywords::SelfType.name().as_str() {
assert_eq!(tp.index, 0);
None
@ -1849,16 +1849,15 @@ impl<'a, 'tcx> Clean<Generics> for (&'a ty::Generics,
// and instead see `where T: Foo + Bar + Sized + 'a`
Generics {
params: gens.regions
.clean(cx)
.into_iter()
.map(|lp| GenericParam::Lifetime(lp))
.chain(
simplify::ty_params(stripped_typarams)
params: gens.lifetimes()
.into_iter()
.map(|tp| GenericParam::Type(tp))
)
.collect(),
.map(|lp| GenericParam::Lifetime(lp.clean(cx)))
.chain(
simplify::ty_params(stripped_typarams)
.into_iter()
.map(|tp| GenericParam::Type(tp))
)
.collect(),
where_predicates: simplify::where_clauses(cx, where_predicates),
}
}