Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions src/librustdoc/clean/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -552,6 +552,15 @@ impl ItemEnum {
_ => return None,
})
}

pub fn is_associated(&self) -> bool {
match *self {
ItemEnum::TypedefItem(_, _) |
ItemEnum::AssociatedConstItem(_, _) |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like associated consts don't need to be shown all the time, since we don't show const values any more.

ItemEnum::AssociatedTypeItem(_, _) => true,
_ => false,
}
}
}

#[derive(Clone, RustcEncodable, RustcDecodable, Debug)]
Expand Down
9 changes: 5 additions & 4 deletions src/librustdoc/html/render.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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, "<h4 id='{}' class=\"{}\">", id, item_type)?;
write!(w, "<h4 id='{}' class=\"{}{}\">", id, item_type, extra_class)?;
write!(w, "{}", spotlight_decl(decl)?)?;
write!(w, "<span id='{}' class='invisible'>", ns_id)?;
write!(w, "<table class='table-display'><tbody><tr><td><code>")?;
Expand All @@ -3910,7 +3912,6 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi
render_stability_since_raw(w, item.stable_since(), outer_version)?;
}
write!(w, "</td></tr></tbody></table></span></h4>")?;
is_hidden = false;
}
}
clean::TypedefItem(ref tydef, _) => {
Expand Down
18 changes: 14 additions & 4 deletions src/librustdoc/html/static/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 = "[<span class='inner'>" + labelForToggleButton(true) + "</span>" +
"] Show hidden default items";
"] Show hidden undocumented items";
newToggle.onclick = function() {
if (hasClass(this, "collapsed")) {
removeClass(this, "collapsed");
Expand All @@ -2075,7 +2085,7 @@
}
}, true);
this.innerHTML = "[<span class='inner'>" + labelForToggleButton(false) +
"</span>] Hide default items"
"</span>] Hide undocumented items"
} else {
addClass(this, "collapsed");
onEach(this.parentNode.getElementsByClassName("x"), function(x) {
Expand All @@ -2085,7 +2095,7 @@
}
}, true);
this.innerHTML = "[<span class='inner'>" + labelForToggleButton(true) +
"</span>] Show hidden default items";
"</span>] Show hidden undocumented items";
}
};
e.insertBefore(newToggle, e.firstChild);
Expand Down
2 changes: 1 addition & 1 deletion src/test/rustdoc/assoc-consts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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."
Expand Down
2 changes: 1 addition & 1 deletion src/test/rustdoc/manual_impl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down