From 45bb4097b4bb2670f93d0836d40d31bbde38aab2 Mon Sep 17 00:00:00 2001 From: Edward Barnard Date: Mon, 3 Jun 2019 22:11:57 +0100 Subject: [PATCH] Only show methods that appear in the impl block for types in the Implementors and Implementations on Foreign Types sections of trait documentation pages. --- src/librustdoc/html/render.rs | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 3555e2e7498b8..88ac5aa58d64e 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -3066,7 +3066,7 @@ fn render_implementor(cx: &Context, implementor: &Impl, w: &mut fmt::Formatter<' _ => false, }; render_impl(w, cx, implementor, AssocItemLink::Anchor(None), RenderMode::Normal, - implementor.impl_item.stable_since(), false, Some(use_absolute), false)?; + implementor.impl_item.stable_since(), false, Some(use_absolute), false, false)?; Ok(()) } @@ -3077,7 +3077,7 @@ fn render_impls(cx: &Context, w: &mut fmt::Formatter<'_>, let did = i.trait_did().unwrap(); let assoc_link = AssocItemLink::GotoSource(did, &i.inner_impl().provided_trait_methods); render_impl(w, cx, i, assoc_link, - RenderMode::Normal, containing_item.stable_since(), true, None, false)?; + RenderMode::Normal, containing_item.stable_since(), true, None, false, true)?; } Ok(()) } @@ -3307,7 +3307,7 @@ fn item_trait( ); render_impl(w, cx, &implementor, assoc_link, RenderMode::Normal, implementor.impl_item.stable_since(), false, - None, true)?; + None, true, false)?; } write_loading_content(w, "")?; } @@ -3979,7 +3979,7 @@ fn render_assoc_items(w: &mut fmt::Formatter<'_>, }; for i in &non_trait { render_impl(w, cx, i, AssocItemLink::Anchor(None), render_mode, - containing_item.stable_since(), true, None, false)?; + containing_item.stable_since(), true, None, false, true)?; } } if let AssocItemRender::DerefFor { .. } = what { @@ -4161,7 +4161,8 @@ fn spotlight_decl(decl: &clean::FnDecl) -> Result { fn render_impl(w: &mut fmt::Formatter<'_>, cx: &Context, i: &Impl, link: AssocItemLink<'_>, render_mode: RenderMode, outer_version: Option<&str>, show_def_docs: bool, - use_absolute: Option, is_on_foreign_type: bool) -> fmt::Result { + use_absolute: Option, is_on_foreign_type: bool, + show_default_items: bool) -> fmt::Result { if render_mode == RenderMode::Normal { let id = cx.derive_id(match i.inner_impl().trait_ { Some(ref t) => if is_on_foreign_type { @@ -4345,9 +4346,13 @@ fn render_impl(w: &mut fmt::Formatter<'_>, cx: &Context, i: &Impl, link: AssocIt // If we've implemented a trait, then also emit documentation for all // default items which weren't overridden in the implementation block. - if let Some(t) = trait_ { - render_default_items(w, cx, t, &i.inner_impl(), - render_mode, outer_version, show_def_docs)?; + // We don't emit documentation for default items if they appear in the + // Implementations on Foreign Types or Implementors sections. + if show_default_items { + if let Some(t) = trait_ { + render_default_items(w, cx, t, &i.inner_impl(), + render_mode, outer_version, show_def_docs)?; + } } write!(w, "")?;