From a2ba9ef1ff363341bae9a9ced37f14fee68538ec Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Mon, 31 May 2021 11:51:22 +0200 Subject: [PATCH] Only list crates on the crate page --- src/librustdoc/html/render/context.rs | 9 ++++++++- src/librustdoc/html/static/main.js | 6 +++++- src/test/rustdoc-gui/sidebar.goml | 15 +++++++-------- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/librustdoc/html/render/context.rs b/src/librustdoc/html/render/context.rs index 8676efd9fa8..d80b2db00ac 100644 --- a/src/librustdoc/html/render/context.rs +++ b/src/librustdoc/html/render/context.rs @@ -200,8 +200,15 @@ impl<'tcx> Context<'tcx> { ) }; let keywords = make_item_keywords(it); + let name; + let tyname_s = if it.is_crate() { + name = format!("{} crate", tyname); + name.as_str() + } else { + tyname.as_str() + }; let page = layout::Page { - css_class: tyname.as_str(), + css_class: tyname_s, root_path: &self.root_path(), static_root_path: self.shared.static_root_path.as_deref(), title: &title, diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index 353c7125fc7..1a15a444a70 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -565,9 +565,12 @@ function hideThemeButtonState() { window.initSidebarItems = function(items) { var sidebar = document.getElementsByClassName("sidebar-elems")[0]; var current = window.sidebarCurrent; - var isModule = hasClass(document.body, "mod"); function addSidebarCrates(crates) { + if (!hasClass(document.body, "crate")) { + // We only want to list crates on the crate page. + return; + } // Draw a convenient sidebar of known crates if we have a listing var div = document.createElement("div"); div.className = "block crate"; @@ -634,6 +637,7 @@ function hideThemeButtonState() { } if (sidebar) { + var isModule = hasClass(document.body, "mod"); if (!isModule) { block("primitive", "Primitive Types"); block("mod", "Modules"); diff --git a/src/test/rustdoc-gui/sidebar.goml b/src/test/rustdoc-gui/sidebar.goml index 7e6b8a9b965..5149b933162 100644 --- a/src/test/rustdoc-gui/sidebar.goml +++ b/src/test/rustdoc-gui/sidebar.goml @@ -17,12 +17,11 @@ click: "#structs + table td > a" // PAGE: struct.Foo.html assert: (".sidebar .location", 2) -// We check that we have the crates list and that the "current" on is still "test_docs". -assert: (".sidebar-elems > .crate > ul > li > a.current", "test_docs") -// We now move to the other crate to check if its submodules have the correct sidebar elements too. -click: ".sidebar-elems > .crate > ul > li:first-child > a" +// We check that there is no crate listed outside of the top level. +assert-false: ".sidebar-elems > .crate" // PAGE: lib2/index.html +goto: file://|DOC_PATH|/lib2/index.html assert: (".sidebar > .location", "Crate lib2") // We check that we have the crates list and that the "current" on is now "lib2". assert: (".sidebar-elems > .crate > ul > li > a.current", "lib2") @@ -36,12 +35,12 @@ click: "#functions + table td > a" // In items containing no items (like functions or constants) and in modules, we have one // "location" elements. assert: (".sidebar .location", 1) -// We check that we still have the crates list and that the "current" on is still "lib2". -assert: (".sidebar-elems > .crate > ul > li > a.current", "lib2") +// We check that we don't have the crate list. +assert-false: ".sidebar-elems > .crate" goto: ./module/sub_module/sub_sub_module/index.html assert: (".sidebar > .location", "Module sub_sub_module") -assert: (".sidebar-elems > .crate > ul > li:nth-child(2) > a", "test_docs") -assert: (".sidebar-elems > .crate > ul > li:nth-child(2) > a", "href", "../../../../test_docs/index.html") +// We check that we don't have the crate list. +assert-false: ".sidebar-elems > .crate" assert: (".sidebar-elems > .items > ul > li:nth-child(1)", "Functions") assert: ("#functions + table td > a", "foo")