Skip to content

Commit

Permalink
Rollup merge of #108129 - GuillaumeGomez:correctly-handle-links-start…
Browse files Browse the repository at this point in the history
…ing-with-whitespace, r=petrochenkov

Correctly handle links starting with whitespace

Part of #107995.

I just got this issue, wrote a fix and then saw the issue. So here's the PR. ^^'

r? `@petrochenkov`
  • Loading branch information
GuillaumeGomez authored Feb 19, 2023
2 parents 49d7ed1 + 8d801fd commit bd63edc
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 2 deletions.
1 change: 1 addition & 0 deletions compiler/rustc_resolve/src/rustdoc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,7 @@ pub fn inner_docs(attrs: &[ast::Attribute]) -> bool {
fn preprocess_link(link: &str) -> String {
let link = link.replace('`', "");
let link = link.split('#').next().unwrap();
let link = link.trim();
let link = link.rsplit('@').next().unwrap();
let link = link.strip_suffix("()").unwrap_or(link);
let link = link.strip_suffix("{}").unwrap_or(link);
Expand Down
5 changes: 3 additions & 2 deletions src/librustdoc/passes/collect_intra_doc_links.rs
Original file line number Diff line number Diff line change
Expand Up @@ -884,7 +884,8 @@ fn preprocess_link(
let mut parts = stripped.split('#');

let link = parts.next().unwrap();
if link.trim().is_empty() {
let link = link.trim();
if link.is_empty() {
// This is an anchor to an element of the current page, nothing to do in here!
return None;
}
Expand All @@ -897,7 +898,7 @@ fn preprocess_link(
// Parse and strip the disambiguator from the link, if present.
let (disambiguator, path_str, link_text) = match Disambiguator::from_str(link) {
Ok(Some((d, path, link_text))) => (Some(d), path.trim(), link_text.trim()),
Ok(None) => (None, link.trim(), link.trim()),
Ok(None) => (None, link, link),
Err((err_msg, relative_range)) => {
// Only report error if we would not have ignored this link. See issue #83859.
if !should_ignore_link_with_disambiguators(link) {
Expand Down
28 changes: 28 additions & 0 deletions tests/rustdoc/issue-107995.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// Regression test for <https://github.com/rust-lang/rust/issues/107995>.

#![crate_name = "foo"]

// @has 'foo/fn.foo.html'
// @has - '//*[@class="docblock"]//a[@href="fn.bar.html"]' 'bar`'
/// A foo, see also [ bar`]
pub fn foo() {}

// @has 'foo/fn.bar.html'
// @has - '//*[@class="docblock"]' 'line Path line'
// @has - '//*[@class="docblock"]//a[@href="struct.Path.html"]' 'Path'
#[doc = "line ["]
#[doc = "Path"]
#[doc = "] line"]
pub fn bar() {}

// @has 'foo/fn.another.html'
// @has - '//*[@class="docblock"]//a[@href="struct.Path.html"]' 'Path'
/// [ `Path`]
pub fn another() {}

// @has 'foo/fn.last.html'
// @has - '//*[@class="docblock"]//a[@href="struct.Path.html"]' 'Path'
/// [ Path`]
pub fn last() {}

pub struct Path;

0 comments on commit bd63edc

Please sign in to comment.