pull impl generics from HIR if available
This commit is contained in:
parent
fe26efe748
commit
de6a89783c
1 changed files with 19 additions and 13 deletions
|
@ -335,23 +335,29 @@ pub fn build_impl(cx: &DocContext, did: DefId, ret: &mut Vec<clean::Item>) {
|
||||||
}
|
}
|
||||||
|
|
||||||
let predicates = tcx.predicates_of(did);
|
let predicates = tcx.predicates_of(did);
|
||||||
let trait_items = if let Some(nodeid) = tcx.hir.as_local_node_id(did) {
|
let (trait_items, generics) = if let Some(nodeid) = tcx.hir.as_local_node_id(did) {
|
||||||
match tcx.hir.expect_item(nodeid).node {
|
match tcx.hir.expect_item(nodeid).node {
|
||||||
hir::ItemKind::Impl(.., ref item_ids) => {
|
hir::ItemKind::Impl(.., ref gen, _, _, ref item_ids) => {
|
||||||
item_ids.iter()
|
(
|
||||||
.map(|ii| tcx.hir.impl_item(ii.id).clean(cx))
|
item_ids.iter()
|
||||||
.collect::<Vec<_>>()
|
.map(|ii| tcx.hir.impl_item(ii.id).clean(cx))
|
||||||
|
.collect::<Vec<_>>(),
|
||||||
|
gen.clean(cx),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
_ => panic!("did given to build_impl was not an impl"),
|
_ => panic!("did given to build_impl was not an impl"),
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
tcx.associated_items(did).filter_map(|item| {
|
(
|
||||||
if associated_trait.is_some() || item.vis == ty::Visibility::Public {
|
tcx.associated_items(did).filter_map(|item| {
|
||||||
Some(item.clean(cx))
|
if associated_trait.is_some() || item.vis == ty::Visibility::Public {
|
||||||
} else {
|
Some(item.clean(cx))
|
||||||
None
|
} else {
|
||||||
}
|
None
|
||||||
}).collect::<Vec<_>>()
|
}
|
||||||
|
}).collect::<Vec<_>>(),
|
||||||
|
(tcx.generics_of(did), &predicates).clean(cx),
|
||||||
|
)
|
||||||
};
|
};
|
||||||
let polarity = tcx.impl_polarity(did);
|
let polarity = tcx.impl_polarity(did);
|
||||||
let trait_ = associated_trait.clean(cx).map(|bound| {
|
let trait_ = associated_trait.clean(cx).map(|bound| {
|
||||||
|
@ -379,7 +385,7 @@ pub fn build_impl(cx: &DocContext, did: DefId, ret: &mut Vec<clean::Item>) {
|
||||||
ret.push(clean::Item {
|
ret.push(clean::Item {
|
||||||
inner: clean::ImplItem(clean::Impl {
|
inner: clean::ImplItem(clean::Impl {
|
||||||
unsafety: hir::Unsafety::Normal,
|
unsafety: hir::Unsafety::Normal,
|
||||||
generics: (tcx.generics_of(did), &predicates).clean(cx),
|
generics,
|
||||||
provided_trait_methods: provided,
|
provided_trait_methods: provided,
|
||||||
trait_,
|
trait_,
|
||||||
for_,
|
for_,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue