about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2021-04-27 01:58:29 +0000
committerbors <bors@rust-lang.org>2021-04-27 01:58:29 +0000
commit6eb956fcbb040d9d4276d97944b5c6df2f84ede8 (patch)
tree26cda2f2f8e17722c2612c96787d7328fe130a85
parent61e171566a9c97ec41656e96e4dd23261b812b9d (diff)
parent6c8969c43ce37d22b0d535ac8fcee1fb6bdb2977 (diff)
downloadrust-6eb956fcbb040d9d4276d97944b5c6df2f84ede8.tar.gz
rust-6eb956fcbb040d9d4276d97944b5c6df2f84ede8.zip
Auto merge of #84552 - GuillaumeGomez:open-impl-blocks-by-default, r=jsha
Open impl blocks by default

Fixes #84558.
Part of #84422.

As you can see on https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/context/struct.TyCtxt.html, impl blocks are currently not open by default whereas they should.

I also realized that a test was outdated so I removed it and opened #84550 because it seems like the rustdoc-gui test suite isn't run on CI...

cc `@jyn514`
r? `@jsha`
-rw-r--r--src/librustdoc/html/render/mod.rs4
-rw-r--r--src/librustdoc/html/static/main.js6
-rw-r--r--src/test/rustdoc-gui/hash-item-expansion.goml18
-rw-r--r--src/test/rustdoc-gui/impl-default-expansion.goml3
-rw-r--r--src/test/rustdoc-gui/nojs-attr-pos.goml5
5 files changed, 27 insertions, 9 deletions
diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs
index 67ccf2137bf..b82967b403d 100644
--- a/src/librustdoc/html/render/mod.rs
+++ b/src/librustdoc/html/render/mod.rs
@@ -1305,7 +1305,7 @@ fn render_impl(
         if let Some(use_absolute) = use_absolute {
             write!(
                 w,
-                "<details class=\"rustdoc-toggle implementors-toggle\">\
+                "<details class=\"rustdoc-toggle implementors-toggle\" open>\
                      <summary>\
                          <h3 id=\"{}\" class=\"impl\"{}>\
                              <code class=\"in-band\">",
@@ -1334,7 +1334,7 @@ fn render_impl(
         } else {
             write!(
                 w,
-                "<details class=\"rustdoc-toggle implementors-toggle\">\
+                "<details class=\"rustdoc-toggle implementors-toggle\" open>\
                      <summary>\
                          <h3 id=\"{}\" class=\"impl\"{}>\
                              <code class=\"in-band\">{}</code>",
diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js
index d7e34ed02b3..7fbb97beae7 100644
--- a/src/librustdoc/html/static/main.js
+++ b/src/librustdoc/html/static/main.js
@@ -480,6 +480,8 @@ function hideThemeButtonState() {
                 }
                 // Open all ancestor <details> to make this element visible.
                 openParentDetails(h3.parentNode);
+            } else {
+                openParentDetails(elem.parentNode);
             }
         }
     }
@@ -1412,9 +1414,9 @@ function hideThemeButtonState() {
             // errors in mobile browsers).
             if (e.tagName === "H2" || e.tagName === "H3") {
                 var nextTagName = e.nextElementSibling.tagName;
-                if (nextTagName == "H2" || nextTagName == "H3") {
+                if (nextTagName === "H2" || nextTagName === "H3") {
                     e.nextElementSibling.style.display = "flex";
-                } else {
+                } else if (nextTagName !== "DETAILS") {
                     e.nextElementSibling.style.display = "block";
                 }
             }
diff --git a/src/test/rustdoc-gui/hash-item-expansion.goml b/src/test/rustdoc-gui/hash-item-expansion.goml
new file mode 100644
index 00000000000..d736d15d184
--- /dev/null
+++ b/src/test/rustdoc-gui/hash-item-expansion.goml
@@ -0,0 +1,18 @@
+// This test ensures that the element corresponding to the hash is displayed.
+goto: file://|DOC_PATH|/struct.Foo.html#method.borrow
+// In the blanket implementations list, "Borrow" is the second one, hence the ":nth(2)".
+assert: ("#blanket-implementations-list > details:nth-child(2)", "open", "")
+// Please note the "\" below is needed because otherwise ".borrow" would be interpreted as
+// a class selector.
+assert: ("#method\.borrow", {"display": "flex"})
+// We first check that the impl block is open by default.
+assert: ("#implementations + details", "open", "")
+// We collapse it.
+click: "#implementations + details > summary"
+// We check that it was collapsed as expected.
+assert-false: ("#implementations + details", "open", "")
+// To ensure that we will click on the currently hidden method.
+assert: (".sidebar-links > a", "must_use")
+click: ".sidebar-links > a"
+// We check that the impl block was opened as expected so that we can see the method.
+assert: ("#implementations + details", "open", "")
diff --git a/src/test/rustdoc-gui/impl-default-expansion.goml b/src/test/rustdoc-gui/impl-default-expansion.goml
new file mode 100644
index 00000000000..686d98f9736
--- /dev/null
+++ b/src/test/rustdoc-gui/impl-default-expansion.goml
@@ -0,0 +1,3 @@
+// This test ensures that the impl blocks are open by default.
+goto: file://|DOC_PATH|/struct.Foo.html
+assert: ("#main > details.implementors-toggle", "open", "")
diff --git a/src/test/rustdoc-gui/nojs-attr-pos.goml b/src/test/rustdoc-gui/nojs-attr-pos.goml
deleted file mode 100644
index 35daa4cb9e3..00000000000
--- a/src/test/rustdoc-gui/nojs-attr-pos.goml
+++ /dev/null
@@ -1,5 +0,0 @@
-// Check that the attributes are well positioned when javascript is disabled (since
-// there is no toggle to display)
-javascript: false
-goto: file://|DOC_PATH|/struct.Foo.html
-assert: (".attributes", {"margin-left": "0px"})