diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index 26f29a3524b00..34d1268a7df61 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -699,7 +699,13 @@ fn short_item_info( // Render the list of items inside one of the sections "Trait Implementations", // "Auto Trait Implementations," "Blanket Trait Implementations" (on struct/enum pages). -fn render_impls(cx: &Context<'_>, w: &mut Buffer, impls: &[&&Impl], containing_item: &clean::Item) { +fn render_impls( + cx: &Context<'_>, + w: &mut Buffer, + impls: &[&&Impl], + containing_item: &clean::Item, + toggle_open_by_default: bool, +) { let tcx = cx.tcx(); let mut rendered_impls = impls .iter() @@ -722,7 +728,7 @@ fn render_impls(cx: &Context<'_>, w: &mut Buffer, impls: &[&&Impl], containing_i is_on_foreign_type: false, show_default_items: true, show_non_assoc_items: true, - toggle_open_by_default: true, + toggle_open_by_default, }, ); buffer.into_inner() @@ -1143,7 +1149,7 @@ fn render_assoc_items_inner( concrete.into_iter().partition(|t| t.inner_impl().kind.is_blanket()); let mut impls = Buffer::empty_from(w); - render_impls(cx, &mut impls, &concrete, containing_item); + render_impls(cx, &mut impls, &concrete, containing_item, true); let impls = impls.into_inner(); if !impls.is_empty() { write!( @@ -1165,7 +1171,7 @@ fn render_assoc_items_inner( \
", ); - render_impls(cx, w, &synthetic, containing_item); + render_impls(cx, w, &synthetic, containing_item, false); w.write_str("
"); } @@ -1177,7 +1183,7 @@ fn render_assoc_items_inner( \
", ); - render_impls(cx, w, &blanket_impl, containing_item); + render_impls(cx, w, &blanket_impl, containing_item, false); w.write_str("
"); } } diff --git a/src/test/rustdoc-gui/toggle-docs.goml b/src/test/rustdoc-gui/toggle-docs.goml index f98111484f315..bbc85ecd4ad49 100644 --- a/src/test/rustdoc-gui/toggle-docs.goml +++ b/src/test/rustdoc-gui/toggle-docs.goml @@ -17,7 +17,14 @@ assert-text: ("#toggle-all-docs", "[−]") goto: file://|DOC_PATH|/test_docs/struct.Foo.html // We first check that everything is visible. assert-text: ("#toggle-all-docs", "[−]") -assert-attribute: ("details.rustdoc-toggle", {"open": ""}, ALL) +assert-attribute: ("#implementations-list details.rustdoc-toggle", {"open": ""}, ALL) +assert-attribute: ("#trait-implementations-list details.rustdoc-toggle", {"open": ""}, ALL) +assert-attribute-false: ( + "#blanket-implementations-list > details.rustdoc-toggle", + {"open": ""}, + ALL, +) + // We collapse them all. click: "#toggle-all-docs" wait-for: 50