Skip to content

Commit d2bfea2

Browse files
committed
don't emit rustdoc::broken_intra_doc_links for stuff like [!NOTE]
1 parent e1b9081 commit d2bfea2

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/librustdoc/passes/collect_intra_doc_links.rs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -997,6 +997,7 @@ fn preprocess_link(
997997
}
998998
};
999999

1000+
let is_shortcut_style = ori_link.kind == LinkType::ShortcutUnknown;
10001001
// If there's no backticks, be lenient and revert to the old behavior.
10011002
// This is to prevent churn by linting on stuff that isn't meant to be a link.
10021003
// only shortcut links have simple enough syntax that they
@@ -1013,11 +1014,24 @@ fn preprocess_link(
10131014
// | has backtick | never ignore | never ignore |
10141015
// | no backtick | ignore if url-like | never ignore |
10151016
// |-------------------------------------------------------|
1016-
let ignore_urllike =
1017-
can_be_url || (ori_link.kind == LinkType::ShortcutUnknown && !ori_link.link.contains('`'));
1017+
let ignore_urllike = can_be_url || (is_shortcut_style && !ori_link.link.contains('`'));
10181018
if ignore_urllike && should_ignore_link(path_str) {
10191019
return None;
10201020
}
1021+
// Ignore GitHub-flavored Markdown (GFM) admonitions, such as [!NOTE] and [!IMPORTANT]
1022+
//
1023+
// rustdoc does not support GFM,
1024+
// however it is a common pattern to add `#[doc = include_str!("../README.md")]` to the root of a crate,
1025+
// so we want to at least accept GFM, even if it doesn't render perfectly.
1026+
//
1027+
// we make sure to allow `[!]` as a link to the never type.
1028+
if is_shortcut_style
1029+
&& let Some(suffix) = ori_link.link.starts_with('!')
1030+
&& !suffix.is_empty()
1031+
&& suffix.chars().all(|c| c.is_ascii_alphabetic())
1032+
{
1033+
return None;
1034+
}
10211035

10221036
// Strip generics from the path.
10231037
let path_str = match strip_generics_from_path(path_str) {
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// regression test for https://github.com/rust-lang/rust/issues/141866
2+
//@ check-pass
3+
#![deny(rustdoc::broken_intra_doc_links)]
4+
5+
//! > [!NOTE]
6+
//! > This should not cause any warnings

0 commit comments

Comments
 (0)