diff --git a/src/librustdoc/clean/inline.rs b/src/librustdoc/clean/inline.rs index d50f9961f91..12a33228cb2 100644 --- a/src/librustdoc/clean/inline.rs +++ b/src/librustdoc/clean/inline.rs @@ -335,23 +335,29 @@ pub fn build_impl(cx: &DocContext, did: DefId, ret: &mut Vec) { } 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 { - hir::ItemKind::Impl(.., ref item_ids) => { - item_ids.iter() - .map(|ii| tcx.hir.impl_item(ii.id).clean(cx)) - .collect::>() + hir::ItemKind::Impl(.., ref gen, _, _, ref item_ids) => { + ( + item_ids.iter() + .map(|ii| tcx.hir.impl_item(ii.id).clean(cx)) + .collect::>(), + gen.clean(cx), + ) } _ => panic!("did given to build_impl was not an impl"), } } else { - tcx.associated_items(did).filter_map(|item| { - if associated_trait.is_some() || item.vis == ty::Visibility::Public { - Some(item.clean(cx)) - } else { - None - } - }).collect::>() + ( + tcx.associated_items(did).filter_map(|item| { + if associated_trait.is_some() || item.vis == ty::Visibility::Public { + Some(item.clean(cx)) + } else { + None + } + }).collect::>(), + (tcx.generics_of(did), &predicates).clean(cx), + ) }; let polarity = tcx.impl_polarity(did); let trait_ = associated_trait.clean(cx).map(|bound| { @@ -379,7 +385,7 @@ pub fn build_impl(cx: &DocContext, did: DefId, ret: &mut Vec) { ret.push(clean::Item { inner: clean::ImplItem(clean::Impl { unsafety: hir::Unsafety::Normal, - generics: (tcx.generics_of(did), &predicates).clean(cx), + generics, provided_trait_methods: provided, trait_, for_,