diff options
| author | bors <bors@rust-lang.org> | 2021-07-10 03:32:42 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-07-10 03:32:42 +0000 |
| commit | 8eae2eb1d31da4b0bbdb80dcf2625535c3f147ae (patch) | |
| tree | 130f3f359e608d2495a851344b23c4b4e419d66c /src | |
| parent | 8d9d4c87d677552ae52e2d58034e4be199b5a6d2 (diff) | |
| parent | b49936c0bfe5d6748765c4f2898f765ff4a53a05 (diff) | |
| download | rust-8eae2eb1d31da4b0bbdb80dcf2625535c3f147ae.tar.gz rust-8eae2eb1d31da4b0bbdb80dcf2625535c3f147ae.zip | |
Auto merge of #86968 - inquisitivecrystal:missing-docs-v2, r=oli-obk
Remove `missing_docs` lint on private 2.0 macros https://github.com/rust-lang/rust/blob/798baebde1fe77e5a660490ec64e727a5d79970d/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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui/lint/missing-doc-private-macro.rs | 43 | ||||
| -rw-r--r-- | src/test/ui/lint/missing-doc-private-macro.stderr | 20 |
2 files changed, 63 insertions, 0 deletions
diff --git a/src/test/ui/lint/missing-doc-private-macro.rs b/src/test/ui/lint/missing-doc-private-macro.rs new file mode 100644 index 00000000000..8d1d5c56880 --- /dev/null +++ b/src/test/ui/lint/missing-doc-private-macro.rs @@ -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() {} diff --git a/src/test/ui/lint/missing-doc-private-macro.stderr b/src/test/ui/lint/missing-doc-private-macro.stderr new file mode 100644 index 00000000000..a5d39faf405 --- /dev/null +++ b/src/test/ui/lint/missing-doc-private-macro.stderr @@ -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 + |
