Rollup merge of #49189 - GuillaumeGomez:fix-implied-shortcut-links, r=QuietMisdreavus
Fix automatic urls with backticks Fixes #49164. r? @QuietMisdreavus
This commit is contained in:
commit
d7eda77692
@ -942,7 +942,7 @@ fn ambiguity_error(cx: &DocContext, attrs: &Attributes,
|
||||
select the {}",
|
||||
disambig1, kind1, disambig2,
|
||||
kind2))
|
||||
.emit();
|
||||
.emit();
|
||||
}
|
||||
|
||||
/// Given an enum variant's def, return the def of its enum and the associated fragment
|
||||
@ -1087,6 +1087,7 @@ fn macro_resolve(cx: &DocContext, path_str: &str) -> Option<Def> {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
enum PathKind {
|
||||
/// can be either value or type, not a macro
|
||||
Unknown,
|
||||
@ -1095,7 +1096,7 @@ enum PathKind {
|
||||
/// values, functions, consts, statics, everything in the value namespace
|
||||
Value,
|
||||
/// types, traits, everything in the type namespace
|
||||
Type
|
||||
Type,
|
||||
}
|
||||
|
||||
impl Clean<Attributes> for [ast::Attribute] {
|
||||
@ -1104,12 +1105,13 @@ impl Clean<Attributes> for [ast::Attribute] {
|
||||
|
||||
if UnstableFeatures::from_environment().is_nightly_build() {
|
||||
let dox = attrs.collapsed_doc_value().unwrap_or_else(String::new);
|
||||
for link in markdown_links(&dox) {
|
||||
for ori_link in markdown_links(&dox) {
|
||||
// bail early for real links
|
||||
if link.contains('/') {
|
||||
if ori_link.contains('/') {
|
||||
continue;
|
||||
}
|
||||
let (def, fragment) = {
|
||||
let link = ori_link.replace("`", "");
|
||||
let (def, fragment) = {
|
||||
let mut kind = PathKind::Unknown;
|
||||
let path_str = if let Some(prefix) =
|
||||
["struct@", "enum@", "type@",
|
||||
@ -1145,7 +1147,6 @@ impl Clean<Attributes> for [ast::Attribute] {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
match kind {
|
||||
PathKind::Value => {
|
||||
if let Ok(def) = resolve(cx, path_str, true) {
|
||||
@ -1219,9 +1220,8 @@ impl Clean<Attributes> for [ast::Attribute] {
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
let id = register_def(cx, def);
|
||||
attrs.links.push((link, id, fragment));
|
||||
attrs.links.push((ori_link, id, fragment));
|
||||
}
|
||||
|
||||
cx.sess().abort_if_errors();
|
||||
|
@ -233,14 +233,14 @@ impl<'a, I: Iterator<Item = Event<'a>>> Iterator for CodeBlocks<'a, I> {
|
||||
/// Make headings links with anchor ids and build up TOC.
|
||||
struct LinkReplacer<'a, 'b, I: Iterator<Item = Event<'a>>> {
|
||||
inner: I,
|
||||
links: &'b [(String, String)]
|
||||
links: &'b [(String, String)],
|
||||
}
|
||||
|
||||
impl<'a, 'b, I: Iterator<Item = Event<'a>>> LinkReplacer<'a, 'b, I> {
|
||||
fn new(iter: I, links: &'b [(String, String)]) -> Self {
|
||||
LinkReplacer {
|
||||
inner: iter,
|
||||
links
|
||||
links,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
18
src/test/rustdoc/check-styled-link.rs
Normal file
18
src/test/rustdoc/check-styled-link.rs
Normal file
@ -0,0 +1,18 @@
|
||||
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![crate_name = "foo"]
|
||||
|
||||
pub struct Foo;
|
||||
|
||||
// @has foo/struct.Bar.html '//a[@href="../foo/struct.Foo.html"]' 'Foo'
|
||||
|
||||
/// Code-styled reference to [`Foo`].
|
||||
pub struct Bar;
|
Loading…
Reference in New Issue
Block a user