about summary refs log tree commit diff
diff options
context:
space:
mode:
authorQuietMisdreavus <grey@quietmisdreavus.net>2018-04-20 16:06:10 -0500
committerQuietMisdreavus <grey@quietmisdreavus.net>2018-05-14 12:38:27 -0500
commit9415adcd8aacfecb9df0f3b2b6b8acdc43503dda (patch)
treeea48a7974a0228efb639ba48dc88b99ecdd41117
parentc3fd12ff4e88321904e4e28949945c23f399da57 (diff)
downloadrust-9415adcd8aacfecb9df0f3b2b6b8acdc43503dda.tar.gz
rust-9415adcd8aacfecb9df0f3b2b6b8acdc43503dda.zip
deprecate #![doc(no_default_passes, passes, plugins)]
-rw-r--r--src/librustdoc/lib.rs34
1 files changed, 32 insertions, 2 deletions
diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs
index b93aaaf031e..ad810a91728 100644
--- a/src/librustdoc/lib.rs
+++ b/src/librustdoc/lib.rs
@@ -646,6 +646,20 @@ where R: 'static + Send,
 
         krate.version = crate_version;
 
+        let diag = core::new_handler(error_format, None);
+
+        fn report_deprecated_attr(name: &str, diag: &errors::Handler) {
+            let mut msg = diag.struct_warn(&format!("WARNING: the `#![doc({})]` attribute is \
+                                                     considered deprecated", name));
+            msg.warn("please see https://github.com/rust-lang/rust/issues/44136");
+
+            if name == "no_default_passes" {
+                msg.help("you may want to use `#![doc(document_private_items)]`");
+            }
+
+            msg.emit();
+        }
+
         // Process all of the crate attributes, extracting plugin metadata along
         // with the passes which we are supposed to run.
         for attr in krate.module.as_ref().unwrap().attrs.lists("doc") {
@@ -653,18 +667,34 @@ where R: 'static + Send,
             let name = name.as_ref().map(|s| &s[..]);
             if attr.is_word() {
                 if name == Some("no_default_passes") {
+                    report_deprecated_attr("no_default_passes", &diag);
                     default_passes = false;
                 }
             } else if let Some(value) = attr.value_str() {
                 let sink = match name {
-                    Some("passes") => &mut passes,
-                    Some("plugins") => &mut plugins,
+                    Some("passes") => {
+                        report_deprecated_attr("passes = \"...\"", &diag);
+                        &mut passes
+                    },
+                    Some("plugins") => {
+                        report_deprecated_attr("plugins = \"...\"", &diag);
+                        &mut plugins
+                    },
                     _ => continue,
                 };
                 for p in value.as_str().split_whitespace() {
                     sink.push(p.to_string());
                 }
             }
+
+            if attr.is_word() && name == Some("document_private_items") {
+                default_passes = false;
+
+                passes = vec![
+                    String::from("collapse-docs"),
+                    String::from("unindent-comments"),
+                ];
+            }
         }
 
         if default_passes {