Skip to content

Commit

Permalink
Rollup merge of #108936 - GuillaumeGomez:rustdoc-anonymous-reexport, …
Browse files Browse the repository at this point in the history
…r=notriddle

Rustdoc: don't hide anonymous reexport

Fixes #108931.

From #108931, it appears that having anonymous re-exports for traits is actually used in some places, so instead of hiding them automatically, we should prevent them to be ever inlined.

r? `@notriddle`
  • Loading branch information
matthiaskrgr authored Mar 10, 2023
2 parents 4bd32ac + 9b788da commit 6ef07c2
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 4 deletions.
9 changes: 7 additions & 2 deletions src/librustdoc/visit_ast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,11 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> {
) -> bool {
debug!("maybe_inline_local res: {:?}", res);

if renamed == Some(kw::Underscore) {
// We never inline `_` reexports.
return false;
}

if self.cx.output_format.is_json() {
return false;
}
Expand Down Expand Up @@ -346,8 +351,8 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> {
self.visit_foreign_item_inner(item, None);
}
}
// If we're inlining, skip private items or item reexported as "_".
_ if self.inlining && (!is_pub || renamed == Some(kw::Underscore)) => {}
// If we're inlining, skip private items.
_ if self.inlining && !is_pub => {}
hir::ItemKind::GlobalAsm(..) => {}
hir::ItemKind::Use(_, hir::UseKind::ListStem) => {}
hir::ItemKind::Use(path, kind) => {
Expand Down
8 changes: 6 additions & 2 deletions tests/rustdoc/anonymous-reexport.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,13 @@

// @has 'foo/index.html'
// @has - '//*[@id="main-content"]' ''
// We check that the only "h2" present is for "Bla".
// @count - '//*[@id="main-content"]/h2' 1
// We check that the only "h2" present are "Structs" (for "Bla") and "Re-exports".
// @count - '//*[@id="main-content"]/h2' 2
// @has - '//*[@id="main-content"]/h2' 'Structs'
// @has - '//*[@id="main-content"]/h2' 'Re-exports'
// The 3 re-exports.
// @count - '//*[@id="main-content"]//*[@class="item-table"]//li//code' 3
// The public struct.
// @count - '//*[@id="main-content"]//a[@class="struct"]' 1

mod ext {
Expand Down
21 changes: 21 additions & 0 deletions tests/rustdoc/issue-108931-anonymous-reexport.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// Ensuring that anonymous re-exports are always inlined.

#![crate_name = "foo"]

pub mod foo {
pub struct Foo;
}

mod bar {
pub struct Bar;
}

// @has 'foo/index.html'
// We check that the only "h2" present are "Re-exports" and "Modules".
// @count - '//*[@id="main-content"]/h2' 2
// @has - '//*[@id="main-content"]/h2' 'Re-exports'
// @has - '//*[@id="main-content"]/h2' 'Modules'
// @has - '//*[@id="main-content"]//*[@class="item-table"]//li//code' 'pub use foo::Foo as _;'
// @has - '//*[@id="main-content"]//*[@class="item-table"]//li//code' 'pub use bar::Bar as _;'
pub use foo::Foo as _;
pub use bar::Bar as _;

0 comments on commit 6ef07c2

Please sign in to comment.