about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMike Boutin <mike.boutin@gmail.com>2019-05-05 10:25:01 -0400
committerMike Boutin <mike.boutin@gmail.com>2019-05-11 15:04:10 -0400
commit5ccf2fb985b5581fdc3f1a3a647b0d613da996d3 (patch)
tree96ad90430b0022db6d5fdc068c70aafc7901aa50
parent5f1924c9922c640108d2225d6b68e69e589b94ae (diff)
downloadrust-5ccf2fb985b5581fdc3f1a3a647b0d613da996d3.tar.gz
rust-5ccf2fb985b5581fdc3f1a3a647b0d613da996d3.zip
Add #[doc(hidden)] attribute on compiler generated proc-macro module.
Stops unavoidable `missing_docs` warning/error on proc-macro crates.
Resolves #42008.
-rw-r--r--src/libsyntax_ext/proc_macro_decls.rs7
-rw-r--r--src/test/ui/proc-macro/no-missing-docs.rs16
2 files changed, 22 insertions, 1 deletions
diff --git a/src/libsyntax_ext/proc_macro_decls.rs b/src/libsyntax_ext/proc_macro_decls.rs
index f0390ba3d40..e14781c4fa9 100644
--- a/src/libsyntax_ext/proc_macro_decls.rs
+++ b/src/libsyntax_ext/proc_macro_decls.rs
@@ -324,6 +324,7 @@ impl<'a> Visitor<'a> for CollectProcMacros<'a> {
 
 // Creates a new module which looks like:
 //
+//      #[doc(hidden)]
 //      mod $gensym {
 //          extern crate proc_macro;
 //
@@ -357,6 +358,10 @@ fn mk_decls(
     });
     let span = DUMMY_SP.apply_mark(mark);
 
+    let hidden = cx.meta_list_item_word(span, Symbol::intern("hidden"));
+    let doc = cx.meta_list(span, Symbol::intern("doc"), vec![hidden]);
+    let doc_hidden = cx.attribute(span, doc);
+
     let proc_macro = Ident::from_str("proc_macro");
     let krate = cx.item(span,
                         proc_macro,
@@ -421,7 +426,7 @@ fn mk_decls(
         span,
         span,
         ast::Ident::with_empty_ctxt(Symbol::gensym("decls")),
-        vec![],
+        vec![doc_hidden],
         vec![krate, decls_static],
     ).map(|mut i| {
         i.vis = respan(span, ast::VisibilityKind::Public);
diff --git a/src/test/ui/proc-macro/no-missing-docs.rs b/src/test/ui/proc-macro/no-missing-docs.rs
new file mode 100644
index 00000000000..e5a5f8beb45
--- /dev/null
+++ b/src/test/ui/proc-macro/no-missing-docs.rs
@@ -0,0 +1,16 @@
+//! Verify that the `decls` module implicitly added by the compiler does not cause `missing_docs`
+//! warnings.
+
+// compile-pass
+// force-host
+// no-prefer-dynamic
+
+#![crate_type = "proc-macro"]
+#![deny(missing_docs)]
+
+extern crate proc_macro;
+use proc_macro::*;
+
+/// Foo1.
+#[proc_macro]
+pub fn foo1(input: TokenStream) -> TokenStream { input }