Skip to content

Commit

Permalink
Rollup merge of #109259 - GuillaumeGomez:fix-missing-private-inlining…
Browse files Browse the repository at this point in the history
…, r=notriddle

rustdoc: Fix missing private inlining

Fixes #109258.

If the item isn't inlined, it shouldn't have been added into `view_item_stack`. The problem here was that it was not removed, preventing sub items to be inlined if they have a re-export in "upper levels".

cc `@epage`
r? `@notriddle`
  • Loading branch information
matthiaskrgr committed Mar 17, 2023
2 parents 24d8f0f + e9f29c4 commit 766b44e
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/librustdoc/visit_ast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -265,10 +265,6 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> {
return false;
}

if !self.view_item_stack.insert(res_did) {
return false;
}

if !please_inline &&
let mut visitor = OneLevelVisitor::new(self.cx.tcx.hir(), res_did) &&
let Some(item) = visitor.find_target(self.cx.tcx, def_id.to_def_id(), path) &&
Expand All @@ -285,6 +281,10 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> {
return false;
}

if !self.view_item_stack.insert(res_did) {
return false;
}

let ret = match tcx.hir().get_by_def_id(res_did) {
Node::Item(&hir::Item { kind: hir::ItemKind::Mod(ref m), .. }) if glob => {
let prev = mem::replace(&mut self.inlining, true);
Expand Down
27 changes: 27 additions & 0 deletions tests/rustdoc/issue-109258-missing-private-inlining.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Regression test for <https://github.com/rust-lang/rust/issues/109258>.

#![crate_name = "foo"]

// @has 'foo/index.html'
// We should only have a "Re-exports" and a "Modules" headers.
// @count - '//*[@id="main-content"]/h2[@class="small-section-header"]' 2
// @has - '//*[@id="main-content"]/h2[@class="small-section-header"]' 'Re-exports'
// @has - '//*[@id="main-content"]/h2[@class="small-section-header"]' 'Modules'

// @has - '//*[@id="reexport.Foo"]' 'pub use crate::issue_109258::Foo;'
// @has - '//*[@id="reexport.Foo"]//a[@href="issue_109258/struct.Foo.html"]' 'Foo'
// @!has 'foo/struct.Foo.html'
pub use crate::issue_109258::Foo;

// @has 'foo/issue_109258/index.html'
// We should only have a "Structs" header.
// @count - '//*[@id="main-content"]/h2[@class="small-section-header"]' 1
// @has - '//*[@id="main-content"]/h2[@class="small-section-header"]' 'Structs'
// @has - '//*[@id="main-content"]//a[@href="struct.Foo.html"]' 'Foo'
// @has 'foo/issue_109258/struct.Foo.html'
pub mod issue_109258 {
mod priv_mod {
pub struct Foo;
}
pub use self::priv_mod::Foo;
}

0 comments on commit 766b44e

Please sign in to comment.