1
Fork 0

Use render_impl_summary when rendering traits.

This commit is contained in:
Jacob Hoffman-Andrews 2021-06-08 10:39:57 -07:00
parent ce6472987d
commit bff4f073c8
2 changed files with 29 additions and 43 deletions

View file

@ -1542,15 +1542,10 @@ fn render_impl(
} }
} }
if render_mode == RenderMode::Normal { if render_mode == RenderMode::Normal {
let on_trait_page = matches!(*parent.kind, clean::ItemKind::TraitItem(_)); let toggled = !(impl_items.is_empty() && default_impl_items.is_empty());
let has_impl_items = !(impl_items.is_empty() && default_impl_items.is_empty());
let toggled = !on_trait_page && has_impl_items;
let is_implementing_trait = i.inner_impl().trait_.is_some();
if toggled { if toggled {
close_tags.insert_str(0, "</details>"); close_tags.insert_str(0, "</details>");
write!(w, "<details class=\"rustdoc-toggle implementors-toggle\" open>"); write!(w, "<details class=\"rustdoc-toggle implementors-toggle\" open>");
}
if toggled {
write!(w, "<summary>") write!(w, "<summary>")
} }
render_impl_summary( render_impl_summary(
@ -1573,7 +1568,6 @@ fn render_impl(
} }
} }
if !on_trait_page {
if let Some(ref dox) = cx.shared.maybe_collapsed_doc_value(&i.impl_item) { if let Some(ref dox) = cx.shared.maybe_collapsed_doc_value(&i.impl_item) {
let mut ids = cx.id_map.borrow_mut(); let mut ids = cx.id_map.borrow_mut();
write!( write!(
@ -1591,7 +1585,6 @@ fn render_impl(
); );
} }
} }
}
if !default_impl_items.is_empty() || !impl_items.is_empty() { if !default_impl_items.is_empty() || !impl_items.is_empty() {
w.write_str("<div class=\"impl-items\">"); w.write_str("<div class=\"impl-items\">");
w.push_buffer(default_impl_items); w.push_buffer(default_impl_items);
@ -1601,7 +1594,7 @@ fn render_impl(
w.write_str(&close_tags); w.write_str(&close_tags);
} }
fn render_impl_summary( pub(crate) fn render_impl_summary(
w: &mut Buffer, w: &mut Buffer,
cx: &Context<'_>, cx: &Context<'_>,
i: &Impl, i: &Impl,

View file

@ -15,11 +15,11 @@ use rustc_span::symbol::{kw, sym, Symbol};
use super::{ use super::{
collect_paths_for_type, document, ensure_trailing_slash, item_ty_to_strs, notable_traits_decl, collect_paths_for_type, document, ensure_trailing_slash, item_ty_to_strs, notable_traits_decl,
render_assoc_item, render_assoc_items, render_attributes_in_code, render_attributes_in_pre, render_assoc_item, render_assoc_items, render_attributes_in_code, render_attributes_in_pre,
render_impl, render_stability_since_raw, write_srclink, AssocItemLink, Context, render_impl_summary, render_stability_since_raw, write_srclink, AssocItemLink, Context,
}; };
use crate::clean::{self, GetDefId}; use crate::clean::{self, GetDefId};
use crate::formats::item_type::ItemType; use crate::formats::item_type::ItemType;
use crate::formats::{AssocItemRender, Impl, RenderMode}; use crate::formats::{AssocItemRender, Impl};
use crate::html::escape::Escape; use crate::html::escape::Escape;
use crate::html::format::{print_abi_with_space, print_where_clause, Buffer, PrintWithSpace}; use crate::html::format::{print_abi_with_space, print_where_clause, Buffer, PrintWithSpace};
use crate::html::highlight; use crate::html::highlight;
@ -691,22 +691,17 @@ fn item_trait(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::Tra
write_small_section_header(w, "foreign-impls", "Implementations on Foreign Types", ""); write_small_section_header(w, "foreign-impls", "Implementations on Foreign Types", "");
for implementor in foreign { for implementor in foreign {
let provided_methods = implementor.inner_impl().provided_trait_methods(cx.tcx()); let outer_version = implementor.impl_item.stable_since(cx.tcx());
let assoc_link = let outer_const_version = implementor.impl_item.const_stable_since(cx.tcx());
AssocItemLink::GotoSource(implementor.impl_item.def_id, &provided_methods); render_impl_summary(
render_impl(
w, w,
cx, cx,
&implementor, &implementor,
it, outer_version.as_deref(),
assoc_link, outer_const_version.as_deref(),
RenderMode::Normal,
implementor.impl_item.stable_since(cx.tcx()).as_deref(),
implementor.impl_item.const_stable_since(cx.tcx()).as_deref(),
false, false,
None, None,
true, true,
false,
&[], &[],
); );
} }
@ -1320,19 +1315,17 @@ fn render_implementor(
} => implementor_dups[&path.last()].1, } => implementor_dups[&path.last()].1,
_ => false, _ => false,
}; };
render_impl( let outer_version = trait_.stable_since(cx.tcx());
let outer_const_version = trait_.const_stable_since(cx.tcx());
render_impl_summary(
w, w,
cx, cx,
implementor, implementor,
trait_, outer_version.as_deref(),
AssocItemLink::Anchor(None), outer_const_version.as_deref(),
RenderMode::Normal,
trait_.stable_since(cx.tcx()).as_deref(),
trait_.const_stable_since(cx.tcx()).as_deref(),
false, false,
Some(use_absolute), Some(use_absolute),
false, false,
false,
aliases, aliases,
); );
} }