Rollup merge of #74077 - sethp:docs/fix-intra-doc-primitive-link, r=jyn514
Use relative path for local links to primitives Else, links to `char::foo` would point into `/path/to/src/libcore/std/primitive.char.html#method.foo`. Split out from #73804.
This commit is contained in:
commit
07301e3d54
@ -628,6 +628,7 @@ pub fn collapsed_doc_value(&self) -> Option<String> {
|
||||
/// Cache must be populated before call
|
||||
pub fn links(&self, krate: &CrateNum) -> Vec<(String, String)> {
|
||||
use crate::html::format::href;
|
||||
use crate::html::render::CURRENT_DEPTH;
|
||||
|
||||
self.links
|
||||
.iter()
|
||||
@ -648,12 +649,13 @@ pub fn links(&self, krate: &CrateNum) -> Vec<(String, String)> {
|
||||
if let Some(ref fragment) = *fragment {
|
||||
let cache = cache();
|
||||
let url = match cache.extern_locations.get(krate) {
|
||||
Some(&(_, ref src, ExternalLocation::Local)) => {
|
||||
src.to_str().expect("invalid file path")
|
||||
Some(&(_, _, ExternalLocation::Local)) => {
|
||||
let depth = CURRENT_DEPTH.with(|l| l.get());
|
||||
"../".repeat(depth)
|
||||
}
|
||||
Some(&(_, _, ExternalLocation::Remote(ref s))) => s,
|
||||
Some(&(_, _, ExternalLocation::Remote(ref s))) => s.to_string(),
|
||||
Some(&(_, _, ExternalLocation::Unknown)) | None => {
|
||||
"https://doc.rust-lang.org/nightly"
|
||||
String::from("https://doc.rust-lang.org/nightly")
|
||||
}
|
||||
};
|
||||
// This is a primitive so the url is done "by hand".
|
||||
|
19
src/test/rustdoc/auxiliary/my-core.rs
Normal file
19
src/test/rustdoc/auxiliary/my-core.rs
Normal file
@ -0,0 +1,19 @@
|
||||
#![feature(no_core, lang_items)]
|
||||
#![no_core]
|
||||
#![crate_type="rlib"]
|
||||
|
||||
#[lang = "char"]
|
||||
impl char {
|
||||
pub fn len_utf8(self) -> usize {
|
||||
42
|
||||
}
|
||||
}
|
||||
|
||||
#[lang = "sized"]
|
||||
pub trait Sized {}
|
||||
|
||||
#[lang = "clone"]
|
||||
pub trait Clone: Sized {}
|
||||
|
||||
#[lang = "copy"]
|
||||
pub trait Copy: Clone {}
|
18
src/test/rustdoc/intra-link-prim-methods-external-core.rs
Normal file
18
src/test/rustdoc/intra-link-prim-methods-external-core.rs
Normal file
@ -0,0 +1,18 @@
|
||||
// aux-build:my-core.rs
|
||||
// build-aux-docs
|
||||
// ignore-cross-compile
|
||||
// ignore-windows
|
||||
// ignore-tidy-linelength
|
||||
|
||||
#![deny(intra_doc_link_resolution_failure)]
|
||||
#![feature(no_core, lang_items)]
|
||||
#![no_core]
|
||||
#![crate_type = "rlib"]
|
||||
|
||||
// @has intra_link_prim_methods_external_core/index.html
|
||||
// @has - '//*[@id="main"]//a[@href="https://doc.rust-lang.org/nightly/std/primitive.char.html"]' 'char'
|
||||
// @has - '//*[@id="main"]//a[@href="https://doc.rust-lang.org/nightly/std/primitive.char.html#method.len_utf8"]' 'char::len_utf8'
|
||||
|
||||
//! A [`char`] and its [`char::len_utf8`].
|
||||
|
||||
extern crate my_core;
|
28
src/test/rustdoc/intra-link-prim-methods-local.rs
Normal file
28
src/test/rustdoc/intra-link-prim-methods-local.rs
Normal file
@ -0,0 +1,28 @@
|
||||
#![deny(intra_doc_link_resolution_failure)]
|
||||
#![feature(no_core, lang_items)]
|
||||
#![no_core]
|
||||
#![crate_type = "rlib"]
|
||||
|
||||
// ignore-tidy-linelength
|
||||
|
||||
// @has intra_link_prim_methods_local/index.html
|
||||
// @has - '//*[@id="main"]//a[@href="https://doc.rust-lang.org/nightly/std/primitive.char.html"]' 'char'
|
||||
// @has - '//*[@id="main"]//a[@href="https://doc.rust-lang.org/nightly/std/primitive.char.html#method.len_utf8"]' 'char::len_utf8'
|
||||
|
||||
//! A [`char`] and its [`char::len_utf8`].
|
||||
|
||||
#[lang = "char"]
|
||||
impl char {
|
||||
pub fn len_utf8(self) -> usize {
|
||||
42
|
||||
}
|
||||
}
|
||||
|
||||
#[lang = "sized"]
|
||||
pub trait Sized {}
|
||||
|
||||
#[lang = "clone"]
|
||||
pub trait Clone: Sized {}
|
||||
|
||||
#[lang = "copy"]
|
||||
pub trait Copy: Clone {}
|
@ -1,3 +1,9 @@
|
||||
#![deny(intra_doc_link_resolution_failure)]
|
||||
|
||||
// ignore-tidy-linelength
|
||||
|
||||
// @has intra_link_prim_methods/index.html
|
||||
// @has - '//*[@id="main"]//a[@href="https://doc.rust-lang.org/nightly/std/primitive.char.html"]' 'char'
|
||||
// @has - '//*[@id="main"]//a[@href="https://doc.rust-lang.org/nightly/std/primitive.char.html#method.len_utf8"]' 'char::len_utf8'
|
||||
|
||||
//! A [`char`] and its [`char::len_utf8`].
|
||||
|
Loading…
Reference in New Issue
Block a user