File tree Expand file tree Collapse file tree 2 files changed +20
-2
lines changed 
tests/rustdoc-ui/intra-doc Expand file tree Collapse file tree 2 files changed +20
-2
lines changed Original file line number Diff line number Diff 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,22 @@ 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+     // If we have an intra-doc link starting with `!` (which isn't `[!]` because this is the never type), we ignore it 
1022+     // as it is never valid. 
1023+     // 
1024+     // The case is common enough because of cases like `#[doc = include_str!("../README.md")]` which often 
1025+     // uses GitHub-flavored Markdown (GFM) admonitions, such as `[!NOTE]`. 
1026+     if  is_shortcut_style
1027+         && let  Some ( suffix)  = ori_link. link . strip_prefix ( '!' ) 
1028+         && !suffix. is_empty ( ) 
1029+         && suffix. chars ( ) . all ( |c| c. is_ascii_alphabetic ( ) ) 
1030+     { 
1031+         return  None ; 
1032+     } 
10211033
10221034    // Strip generics from the path. 
10231035    let  path_str = match  strip_generics_from_path ( path_str)  { 
Original file line number Diff line number Diff line change 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 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments