This doesn't update main.js because it's included as a fixed string.
use rustc_attr::{ConstStability, Deprecation, Stability, StabilityLevel};
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
use rustc_data_structures::thin_vec::ThinVec;
-use rustc_feature::UnstableFeatures;
use rustc_hir as hir;
use rustc_hir::def::{CtorKind, Res};
use rustc_hir::def_id::{CrateNum, DefId, DefIndex};
"../".repeat(depth)
}
Some(&(_, _, ExternalLocation::Remote(ref s))) => s.to_string(),
- Some(&(_, _, ExternalLocation::Unknown)) | None => String::from(
- // NOTE: intentionally doesn't pass crate name to avoid having
- // different primitive links between crates
- if UnstableFeatures::from_environment(None).is_nightly_build() {
- "https://doc.rust-lang.org/nightly"
- } else {
- "https://doc.rust-lang.org"
- },
+ Some(&(_, _, ExternalLocation::Unknown)) | None => format!(
+ "https://doc.rust-lang.org/{}",
+ crate::doc_rust_lang_org_channel(),
),
};
// This is a primitive so the url is done "by hand".
&& attr.meta_item_list().map_or(false, |l| rustc_attr::list_contains_name(&l, flag))
})
}
+
+/// Return a channel suitable for using in a `doc.rust-lang.org/{channel}` format string.
+crate fn doc_rust_lang_org_channel() -> &'static str {
+ match env!("CFG_RELEASE_CHANNEL") {
+ "stable" => env!("CFG_RELEASE_NUM"),
+ "beta" => "beta",
+ "nightly" | "dev" => "nightly",
+ // custom build of rustdoc maybe? link to the stable docs just in case
+ _ => "",
+ }
+}
let mut krate = tcx.sess.time("clean_crate", || clean::krate(&mut ctxt));
if krate.module.doc_value().map(|d| d.is_empty()).unwrap_or(true) {
- let help = "The following guide may be of use:\n\
- https://doc.rust-lang.org/nightly/rustdoc/how-to-write-documentation.html";
+ let help = format!(
+ "The following guide may be of use:\n\
+ https://doc.rust-lang.org/{}/rustdoc/how-to-write-documentation.html",
+ crate::doc_rust_lang_org_channel(),
+ );
tcx.struct_lint_node(
crate::lint::MISSING_CRATE_LEVEL_DOCS,
DocContext::as_local_hir_id(tcx, krate.module.def_id).unwrap(),
|lint| {
let mut diag =
lint.build("no documentation found for this crate's top-level module");
- diag.help(help);
+ diag.help(&help);
diag.emit();
},
);
use rustc_session::getopts;
use rustc_session::{early_error, early_warn};
+use crate::clean::utils::doc_rust_lang_org_channel;
+
/// A macro to create a FxHashMap.
///
/// Example:
}
println!("{}", options.usage(&format!("{} [options] <input>", argv0)));
println!(" @path Read newline separated options from `path`\n");
- println!("More information available at https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html")
+ println!(
+ "More information available at https://doc.rust-lang.org/{}/rustdoc/what-is-rustdoc.html",
+ doc_rust_lang_org_channel()
+ );
}
/// A result type used by several functions under `main()`.
) {
diag_info.link_range = disambiguator_range;
report_diagnostic(cx.tcx, BROKEN_INTRA_DOC_LINKS, msg, &diag_info, |diag, _sp| {
- let channel = match env!("CFG_RELEASE_CHANNEL") {
- "stable" => env!("CFG_RELEASE_NUM"),
- "beta" => "beta",
- "nightly" | "dev" => "nightly",
- // custom build of rustdoc maybe? link to the stable docs just in case
- _ => "",
- };
let msg = format!(
- "see https://doc.rust-lang.org/{}/rustdoc/linking-to-items-by-name.html#namespaces-and-disambiguators for more info about disambiguators",
- channel,
+ "see https://doc.rust-lang.org/{}/rustdoc/linking-to-items-by-name.html#namespaces-and-disambiguators \
+ for more info about disambiguators",
+ crate::doc_rust_lang_org_channel(),
);
diag.note(&msg);
});