@@ -997,6 +997,7 @@ fn preprocess_link(
997
997
}
998
998
} ;
999
999
1000
+ let is_shortcut_style = ori_link. kind == LinkType :: ShortcutUnknown ;
1000
1001
// If there's no backticks, be lenient and revert to the old behavior.
1001
1002
// This is to prevent churn by linting on stuff that isn't meant to be a link.
1002
1003
// only shortcut links have simple enough syntax that they
@@ -1013,11 +1014,25 @@ fn preprocess_link(
1013
1014
// | has backtick | never ignore | never ignore |
1014
1015
// | no backtick | ignore if url-like | never ignore |
1015
1016
// |-------------------------------------------------------|
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 ( '`' ) ) ;
1018
1018
if ignore_urllike && should_ignore_link ( path_str) {
1019
1019
return None ;
1020
1020
}
1021
+ // ignore github flavored markdown special blockquotes,
1022
+ // such as [!NOTE] and [!IMPORTANT]
1023
+ //
1024
+ // rustdoc does not support github-flavored markdown,
1025
+ // however it is a common pattern to add #[doc = include_str!("../README.md")] to the root of a crate,
1026
+ // so we want to at least accept github-flavored markdown, even if it doesn't render perfectly.
1027
+ //
1028
+ // we do allow [!] as a link to the never type.
1029
+ if is_shortcut_style
1030
+ && ori_link. link . starts_with ( '!' )
1031
+ && ori_link. link . len ( ) > 1
1032
+ && ori_link. link [ 1 ..] . chars ( ) . all ( |c| c. is_ascii_alphabetic ( ) )
1033
+ {
1034
+ return None ;
1035
+ }
1021
1036
1022
1037
// Strip generics from the path.
1023
1038
let path_str = match strip_generics_from_path ( path_str) {
0 commit comments