From f9499ea9f55926bd53cd6897878a05f7982dc48f Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Wed, 26 May 2021 14:35:39 +0200 Subject: [PATCH 1/2] * Fix bug where some
tags were not closed. * Don't generate a
if there is no documentation --- src/librustdoc/html/render/print_item.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/librustdoc/html/render/print_item.rs b/src/librustdoc/html/render/print_item.rs index 50153ac14a204..e06168c708c18 100644 --- a/src/librustdoc/html/render/print_item.rs +++ b/src/librustdoc/html/render/print_item.rs @@ -578,14 +578,23 @@ fn item_trait(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::Tra info!("Documenting {} on {:?}", name, t.name); let item_type = m.type_(); let id = cx.derive_id(format!("{}.{}", item_type, name)); - write!(w, "
"); - write!(w, "

", id = id,); + let mut content = Buffer::empty_from(w); + document(&mut content, cx, m, Some(t)); + let toggled = !content.is_empty(); + if toggled { + write!(w, "
"); + } + write!(w, "

", id = id); render_assoc_item(w, m, AssocItemLink::Anchor(Some(&id)), ItemType::Impl, cx); w.write_str(""); render_stability_since(w, m, t, cx.tcx()); write_srclink(cx, m, w); - w.write_str("

"); - document(w, cx, m, Some(t)); + w.write_str("

"); + if toggled { + write!(w, "
"); + w.push_buffer(content); + write!(w, "
"); + } } if !types.is_empty() { From 3bed0be9fc7cf77b56404db8291b227385e1550f Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Wed, 26 May 2021 14:36:58 +0200 Subject: [PATCH 2/2] Update trait toggle test --- src/test/rustdoc/toggle-trait-fn.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/test/rustdoc/toggle-trait-fn.rs b/src/test/rustdoc/toggle-trait-fn.rs index a160809cbf957..7fcac78556b72 100644 --- a/src/test/rustdoc/toggle-trait-fn.rs +++ b/src/test/rustdoc/toggle-trait-fn.rs @@ -1,7 +1,11 @@ #![crate_name = "foo"] // @has foo/trait.Foo.html -// @has - '//details[@class="rustdoc-toggle"]//code' 'bar' +// @!has - '//details[@class="rustdoc-toggle"]//code' 'bar' +// @has - '//code' 'bar' +// @has - '//details[@class="rustdoc-toggle"]//code' 'foo' pub trait Foo { fn bar() -> (); + /// hello + fn foo(); }