diff options
| author | Guillaume Gomez <guillaume.gomez@huawei.com> | 2023-07-10 14:10:26 +0200 |
|---|---|---|
| committer | Guillaume Gomez <guillaume.gomez@huawei.com> | 2023-07-24 17:07:57 +0200 |
| commit | 298cd366d510bbcdf3fd061debd6bb011e681ad1 (patch) | |
| tree | 2d366f09115be243c7362119166a378baddb6674 | |
| parent | 9fb65489057ca6f4e240c6f0c373127d06da316d (diff) | |
| download | rust-298cd366d510bbcdf3fd061debd6bb011e681ad1.tar.gz rust-298cd366d510bbcdf3fd061debd6bb011e681ad1.zip | |
Add test for private items
| -rw-r--r-- | src/librustdoc/clean/mod.rs | 3 | ||||
| -rw-r--r-- | tests/rustdoc/issue-81141-private-reexport-in-public-api-private.rs | 32 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index 0be93d9b057..b1fdb4125a3 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -1553,6 +1553,9 @@ fn first_non_private( continue; } if !cx.tcx.is_doc_hidden(use_def_id) && + // We never check for "cx.render_options.document_private" + // because if a re-export is not fully public, it's never + // documented. cx.tcx.local_visibility(local_use_def_id).is_public() { break 'reexps; } diff --git a/tests/rustdoc/issue-81141-private-reexport-in-public-api-private.rs b/tests/rustdoc/issue-81141-private-reexport-in-public-api-private.rs new file mode 100644 index 00000000000..15749674a3d --- /dev/null +++ b/tests/rustdoc/issue-81141-private-reexport-in-public-api-private.rs @@ -0,0 +1,32 @@ +// compile-flags: --document-private-items + +#![crate_name = "foo"] + +use crate::bar::Bar as Alias; +pub(crate) use crate::bar::Bar as CrateAlias; + +mod bar { + pub struct Bar; + pub use self::Bar as Inner; +} + +// It's a fully private re-export so it should not be displayed. +// @has 'foo/fn.bar.html' +// @has - '//*[@class="rust item-decl"]/code' 'pub fn bar() -> Bar' +pub fn bar() -> Alias { + Alias +} + +// It's public re-export inside a private module so it should be visible. +// @has 'foo/fn.bar2.html' +// @has - '//*[@class="rust item-decl"]/code' 'pub fn bar2() -> Inner' +pub fn bar2() -> crate::bar::Inner { + Alias +} + +// It's a non-public, so it doesn't appear in documentation so it should not be visible. +// @has 'foo/fn.bar3.html' +// @has - '//*[@class="rust item-decl"]/code' 'pub fn bar3() -> Bar' +pub fn bar3() -> CrateAlias { + Alias +} |
