extern crate rustc_errors as errors;
extern crate pulldown_cmark;
extern crate tempdir;
+extern crate minifier;
extern crate serialize as rustc_serialize; // used by deriving
"How errors and other messages are produced",
"human|json|short")
}),
+ unstable("disable-minification", |o| {
+ o.optflag("",
+ "disable-minification",
+ "Disable minification applied on JS files")
+ }),
]
}
let linker = matches.opt_str("linker").map(PathBuf::from);
let sort_modules_alphabetically = !matches.opt_present("sort-modules-by-appearance");
let resource_suffix = matches.opt_str("resource-suffix");
+ let enable_minification = !matches.opt_present("disable-minification");
let edition = matches.opt_str("edition").unwrap_or("2015".to_string());
let edition = match edition.parse() {
css_file_extension,
renderinfo,
sort_modules_alphabetically,
- themes)
+ themes,
+ enable_minification)
.expect("failed to generate documentation");
0
}
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!("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") {
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 {