Rollup merge of #92349 - avitex:fix-rustdoc-private-doc-tests, r=GuillaumeGomez
Fix rustdoc::private_doc_tests lint for public re-exported items
Closes #72081
This involves changing the lint to check the access level is exported, rather than public.
The [exported access level](e91ad5fc62/compiler/rustc_middle/src/middle/privacy.rs (L24)
) accounts for public items and items accessible to other crates with the help of `pub use` re-exports.
The pattern of re-exporting public items from a private module is usage seen in a number of popular crates.
This commit is contained in:
commit
4d0b567efb
@ -131,7 +131,7 @@ fn add_test(&mut self, _: String, config: LangString, _: usize) {
|
||||
);
|
||||
}
|
||||
} else if tests.found_tests > 0
|
||||
&& !cx.cache.access_levels.is_public(item.def_id.expect_def_id())
|
||||
&& !cx.cache.access_levels.is_exported(item.def_id.expect_def_id())
|
||||
{
|
||||
cx.tcx.struct_span_lint_hir(
|
||||
crate::lint::PRIVATE_DOC_TESTS,
|
||||
|
11
src/test/rustdoc-ui/private-public-item-doc-test.rs
Normal file
11
src/test/rustdoc-ui/private-public-item-doc-test.rs
Normal file
@ -0,0 +1,11 @@
|
||||
#![deny(rustdoc::private_doc_tests)]
|
||||
|
||||
mod foo {
|
||||
/// private doc test
|
||||
///
|
||||
/// ```
|
||||
/// assert!(false);
|
||||
/// ```
|
||||
//~^^^^^ ERROR documentation test in private item
|
||||
pub fn bar() {}
|
||||
}
|
18
src/test/rustdoc-ui/private-public-item-doc-test.stderr
Normal file
18
src/test/rustdoc-ui/private-public-item-doc-test.stderr
Normal file
@ -0,0 +1,18 @@
|
||||
error: documentation test in private item
|
||||
--> $DIR/private-public-item-doc-test.rs:4:5
|
||||
|
|
||||
LL | / /// private doc test
|
||||
LL | | ///
|
||||
LL | | /// ```
|
||||
LL | | /// assert!(false);
|
||||
LL | | /// ```
|
||||
| |___________^
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/private-public-item-doc-test.rs:1:9
|
||||
|
|
||||
LL | #![deny(rustdoc::private_doc_tests)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
16
src/test/rustdoc-ui/public-reexported-item-doc-test.rs
Normal file
16
src/test/rustdoc-ui/public-reexported-item-doc-test.rs
Normal file
@ -0,0 +1,16 @@
|
||||
// check-pass
|
||||
|
||||
#![deny(rustdoc::private_doc_tests)]
|
||||
|
||||
pub fn foo() {}
|
||||
|
||||
mod private {
|
||||
/// re-exported doc test
|
||||
///
|
||||
/// ```
|
||||
/// assert!(true);
|
||||
/// ```
|
||||
pub fn bar() {}
|
||||
}
|
||||
|
||||
pub use private::bar;
|
Loading…
Reference in New Issue
Block a user