rustc: remove type information from TraitDef.

This commit is contained in:
Eduard-Mihai Burtescu 2016-11-25 02:29:26 +02:00
parent f50dbd580f
commit 3f338eed99
22 changed files with 123 additions and 160 deletions

View file

@ -151,14 +151,13 @@ pub fn record_extern_fqn(cx: &DocContext, did: DefId, kind: clean::TypeKind) {
}
pub fn build_external_trait(cx: &DocContext, did: DefId) -> clean::Trait {
let def = cx.tcx.lookup_trait_def(did);
let trait_items = cx.tcx.associated_items(did).map(|item| item.clean(cx)).collect();
let predicates = cx.tcx.item_predicates(did);
let generics = (def.generics, &predicates).clean(cx);
let generics = (cx.tcx.item_generics(did), &predicates).clean(cx);
let generics = filter_non_trait_generics(did, generics);
let (generics, supertrait_bounds) = separate_supertrait_bounds(generics);
clean::Trait {
unsafety: def.unsafety,
unsafety: cx.tcx.lookup_trait_def(did).unsafety,
generics: generics,
items: trait_items,
bounds: supertrait_bounds,

View file

@ -1407,9 +1407,8 @@ impl<'tcx> Clean<Item> for ty::AssociatedItem {
// are actually located on the trait/impl itself, so we need to load
// all of the generics from there and then look for bounds that are
// applied to this associated type in question.
let def = cx.tcx.lookup_trait_def(did);
let predicates = cx.tcx.item_predicates(did);
let generics = (def.generics, &predicates).clean(cx);
let generics = (cx.tcx.item_generics(did), &predicates).clean(cx);
generics.where_predicates.iter().filter_map(|pred| {
let (name, self_type, trait_, bounds) = match *pred {
WherePredicate::BoundPredicate {