about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJacob Hoffman-Andrews <github@hoffman-andrews.com>2021-06-03 10:28:43 -0700
committerJacob Hoffman-Andrews <github@hoffman-andrews.com>2021-06-16 22:08:36 -0700
commitce6472987d2cb466345a857cb2efdd06307c5ebf (patch)
tree18dec7d1edb4c45c7d2051c1c3e1998d69b4dd92
parent50a407200b970d8a48e4e58de37c94df355f5472 (diff)
downloadrust-ce6472987d2cb466345a857cb2efdd06307c5ebf.tar.gz
rust-ce6472987d2cb466345a857cb2efdd06307c5ebf.zip
Remove methods under Implementors on trait pages
These were hidden by default, and duplicated information already on the
page anyhow.

Also remove the "Auto-hide trait implementors of a trait" setting,
which is not needed anymore.
-rw-r--r--src/librustdoc/html/render/mod.rs38
-rw-r--r--src/librustdoc/html/static/main.js5
-rw-r--r--src/test/rustdoc/issue-19055.rs20
3 files changed, 21 insertions, 42 deletions
diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs
index 0efa014b127..4f3acfb8e82 100644
--- a/src/librustdoc/html/render/mod.rs
+++ b/src/librustdoc/html/render/mod.rs
@@ -490,7 +490,6 @@ fn settings(root_path: &str, suffix: &str, themes: &[StylePath]) -> Result<Strin
         ("auto-hide-method-docs", "Auto-hide item methods' documentation", false).into(),
         ("auto-hide-trait-implementations", "Auto-hide trait implementation documentation", false)
             .into(),
-        ("auto-collapse-implementors", "Auto-hide implementors of a trait", true).into(),
         ("go-to-only-result", "Directly go to item in search if there is only one result", false)
             .into(),
         ("line-numbers", "Show line numbers on code examples", false).into(),
@@ -1543,7 +1542,10 @@ fn render_impl(
         }
     }
     if render_mode == RenderMode::Normal {
-        let toggled = !impl_items.is_empty() || !default_impl_items.is_empty();
+        let on_trait_page = matches!(*parent.kind, clean::ItemKind::TraitItem(_));
+        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 {
             close_tags.insert_str(0, "</details>");
             write!(w, "<details class=\"rustdoc-toggle implementors-toggle\" open>");
@@ -1571,21 +1573,23 @@ fn render_impl(
             }
         }
 
-        if let Some(ref dox) = cx.shared.maybe_collapsed_doc_value(&i.impl_item) {
-            let mut ids = cx.id_map.borrow_mut();
-            write!(
-                w,
-                "<div class=\"docblock\">{}</div>",
-                Markdown(
-                    &*dox,
-                    &i.impl_item.links(cx),
-                    &mut ids,
-                    cx.shared.codes,
-                    cx.shared.edition(),
-                    &cx.shared.playground
-                )
-                .into_string()
-            );
+        if !on_trait_page {
+            if let Some(ref dox) = cx.shared.maybe_collapsed_doc_value(&i.impl_item) {
+                let mut ids = cx.id_map.borrow_mut();
+                write!(
+                    w,
+                    "<div class=\"docblock\">{}</div>",
+                    Markdown(
+                        &*dox,
+                        &i.impl_item.links(cx),
+                        &mut ids,
+                        cx.shared.codes,
+                        cx.shared.edition(),
+                        &cx.shared.playground
+                    )
+                    .into_string()
+                );
+            }
         }
     }
     if !default_impl_items.is_empty() || !impl_items.is_empty() {
diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js
index e43a231d757..98128878999 100644
--- a/src/librustdoc/html/static/main.js
+++ b/src/librustdoc/html/static/main.js
@@ -778,7 +778,6 @@ function hideThemeButtonState() {
         }
 
         var hideMethodDocs = getSettingValue("auto-hide-method-docs") === "true";
-        var hideImplementors = getSettingValue("auto-collapse-implementors") !== "false";
         var hideImplementations = getSettingValue("auto-hide-trait-implementations") === "true";
         var hideLargeItemContents = getSettingValue("auto-hide-large-items") !== "false";
 
@@ -796,10 +795,6 @@ function hideThemeButtonState() {
             setImplementorsTogglesOpen("blanket-implementations-list", false);
         }
 
-        if (!hideImplementors) {
-            setImplementorsTogglesOpen("implementors-list", true);
-        }
-
         onEachLazy(document.getElementsByClassName("rustdoc-toggle"), function (e) {
             if (!hideLargeItemContents && hasClass(e, "type-contents-toggle")) {
                 e.open = true;
diff --git a/src/test/rustdoc/issue-19055.rs b/src/test/rustdoc/issue-19055.rs
deleted file mode 100644
index dbaf744dc47..00000000000
--- a/src/test/rustdoc/issue-19055.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// @has issue_19055/trait.Any.html
-pub trait Any {}
-
-impl<'any> Any + 'any {
-    // @has - '//*[@id="method.is"]' 'fn is'
-    pub fn is<T: 'static>(&self) -> bool { loop {} }
-
-    // @has - '//*[@id="method.downcast_ref"]' 'fn downcast_ref'
-    pub fn downcast_ref<T: 'static>(&self) -> Option<&T> { loop {} }
-
-    // @has - '//*[@id="method.downcast_mut"]' 'fn downcast_mut'
-    pub fn downcast_mut<T: 'static>(&mut self) -> Option<&mut T> { loop {} }
-}
-
-pub trait Foo {
-    fn foo(&self) {}
-}
-
-// @has - '//*[@id="method.foo"]' 'fn foo'
-impl Foo for Any {}