Auto merge of #86968 - inquisitivecrystal:missing-docs-v2, r=oli-obk

Remove `missing_docs` lint on private 2.0 macros

798baebde1/compiler/rustc_lint/src/builtin.rs (L573-L584)

This code is the source of #57569. The problem is subtle, so let me point it out. This code makes the mistake of assuming that all of the macros in `krate.exported_macros` are exported.

...Yeah. For some historical reason, all `macro` macros are marked as exported, regardless of whether they actually are, which is dreadfully confusing. It would be more accurate to say that `exported_macros` currently contains only macros that have paths.

This PR renames `exported_macros` to `importable_macros`, since these macros can be imported with `use` while others cannot. It also fixes the code above to no longer lint on private `macro` macros, since the `missing_docs` lint should only appear on exported items.

Fixes #57569.
This commit is contained in:
bors 2021-07-10 03:32:42 +00:00
commit 8eae2eb1d3
3 changed files with 69 additions and 0 deletions

View file

@ -0,0 +1,43 @@
// Checks that undocumented private macros will not generate `missing_docs`
// lints, but public ones will.
//
// This is a regression test for issue #57569
#![deny(missing_docs)]
#![feature(decl_macro)]
//! Empty documentation.
macro new_style_private_macro {
() => ()
}
pub(crate) macro new_style_crate_macro {
() => ()
}
macro_rules! old_style_private_macro {
() => ()
}
mod submodule {
pub macro new_style_macro_in_private_module {
() => ()
}
macro_rules! old_style_mod_private_macro {
() => ()
}
#[macro_export]
macro_rules! exported_to_top_level {
//~^ ERROR missing documentation for macro
() => ()
}
}
pub macro top_level_pub_macro {
//~^ ERROR missing documentation for macro
() => ()
}
/// Empty documentation.
pub fn main() {}

View file

@ -0,0 +1,20 @@
error: missing documentation for macro
--> $DIR/missing-doc-private-macro.rs:31:5
|
LL | macro_rules! exported_to_top_level {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
note: the lint level is defined here
--> $DIR/missing-doc-private-macro.rs:5:9
|
LL | #![deny(missing_docs)]
| ^^^^^^^^^^^^
error: missing documentation for macro
--> $DIR/missing-doc-private-macro.rs:37:1
|
LL | pub macro top_level_pub_macro {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 2 previous errors