From b2f80ddf34124ac516139de751af3824ab190eef Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Mon, 22 Oct 2018 00:43:23 +0200 Subject: [PATCH] Fix multiple errors --- src/librustdoc/clean/mod.rs | 9 +++++++++ src/librustdoc/html/render.rs | 9 +++++---- src/librustdoc/html/static/main.js | 18 ++++++++++++++---- src/test/rustdoc/assoc-consts.rs | 2 +- src/test/rustdoc/manual_impl.rs | 2 +- 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index db605e57735a..f7f2a45255e6 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -552,6 +552,15 @@ impl ItemEnum { _ => return None, }) } + + pub fn is_associated(&self) -> bool { + match *self { + ItemEnum::TypedefItem(_, _) | + ItemEnum::AssociatedConstItem(_, _) | + ItemEnum::AssociatedTypeItem(_, _) => true, + _ => false, + } + } } #[derive(Clone, RustcEncodable, RustcDecodable, Debug)] diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index bb95696c5130..72a1a30387cf 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -3881,19 +3881,21 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi RenderMode::ForDeref { mut_: deref_mut_ } => should_render_item(&item, deref_mut_), }; - let (mut is_hidden, extra_class) = if item.doc_value().is_some() { + let (is_hidden, extra_class) = if trait_.is_none() || + item.doc_value().is_some() || + item.inner.is_associated() { (false, "") } else { (true, " hidden") }; match item.inner { clean::MethodItem(clean::Method { ref decl, .. }) | - clean::TyMethodItem(clean::TyMethod{ ref decl, .. }) => { + clean::TyMethodItem(clean::TyMethod { ref decl, .. }) => { // Only render when the method is not static or we allow static methods if render_method_item { let id = cx.derive_id(format!("{}.{}", item_type, name)); let ns_id = cx.derive_id(format!("{}.{}", name, item_type.name_space())); - write!(w, "

", id, item_type)?; + write!(w, "

", id, item_type, extra_class)?; write!(w, "{}", spotlight_decl(decl)?)?; write!(w, "

")?; - is_hidden = false; } } clean::TypedefItem(ref tydef, _) => { diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index dbcb2df3cf9c..23da4dfbbbd3 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -2059,12 +2059,22 @@ onEach(document.getElementsByClassName('impl'), func); onEach(document.getElementsByClassName('impl-items'), function(e) { onEach(e.getElementsByClassName('associatedconstant'), func); - if (e.getElementsByClassName('hidden').length > 0) { + var hiddenElems = e.getElementsByClassName('hidden'); + var needToggle = false; + + for (var i = 0; i < hiddenElems.length; ++i) { + if (hasClass(hiddenElems[i], "content") === false && + hasClass(hiddenElems[i], "docblock") === false) { + needToggle = true; + break; + } + } + if (needToggle === true) { var newToggle = document.createElement('a'); newToggle.href = 'javascript:void(0)'; newToggle.className = 'collapse-toggle hidden-default collapsed'; newToggle.innerHTML = "[" + labelForToggleButton(true) + "" + - "] Show hidden default items"; + "] Show hidden undocumented items"; newToggle.onclick = function() { if (hasClass(this, "collapsed")) { removeClass(this, "collapsed"); @@ -2075,7 +2085,7 @@ } }, true); this.innerHTML = "[" + labelForToggleButton(false) + - "] Hide default items" + "] Hide undocumented items" } else { addClass(this, "collapsed"); onEach(this.parentNode.getElementsByClassName("x"), function(x) { @@ -2085,7 +2095,7 @@ } }, true); this.innerHTML = "[" + labelForToggleButton(true) + - "] Show hidden default items"; + "] Show hidden undocumented items"; } }; e.insertBefore(newToggle, e.firstChild); diff --git a/src/test/rustdoc/assoc-consts.rs b/src/test/rustdoc/assoc-consts.rs index 9ace87149182..d4f8e614ad07 100644 --- a/src/test/rustdoc/assoc-consts.rs +++ b/src/test/rustdoc/assoc-consts.rs @@ -99,7 +99,7 @@ impl Qux for Bar { /// Docs for QUX1 in impl. const QUX1: i8 = 5; // @has - '//*[@id="associatedconstant.QUX_DEFAULT0"]' 'const QUX_DEFAULT0: u16' - // @has - '//*[@class="docblock hidden"]' "Docs for QUX_DEFAULT12 in trait." + // @has - '//*[@class="docblock"]' "Docs for QUX_DEFAULT12 in trait." const QUX_DEFAULT0: u16 = 6; // @has - '//*[@id="associatedconstant.QUX_DEFAULT1"]' 'const QUX_DEFAULT1: i16' // @has - '//*[@class="docblock"]' "Docs for QUX_DEFAULT1 in impl." diff --git a/src/test/rustdoc/manual_impl.rs b/src/test/rustdoc/manual_impl.rs index 54a8a7648334..ea46dae4f832 100644 --- a/src/test/rustdoc/manual_impl.rs +++ b/src/test/rustdoc/manual_impl.rs @@ -74,7 +74,7 @@ impl T for S2 { // @has manual_impl/struct.S3.html '//*[@class="trait"]' 'T' // @has - '//*[@class="docblock"]' 'Docs associated with the S3 trait implementation.' // @has - '//*[@class="docblock"]' 'Docs associated with the S3 trait b_method implementation.' -// @has - '//*[@class="docblock"]' 'Docs associated with the trait a_method definition.' +// @has - '//*[@class="docblock hidden"]' 'Docs associated with the trait a_method definition.' pub struct S3(usize); /// Docs associated with the S3 trait implementation.