File tree Expand file tree Collapse file tree 3 files changed +27
-1
lines changed 
compiler/rustc_resolve/src 
librustdoc/passes/collect_intra_doc_links Expand file tree Collapse file tree 3 files changed +27
-1
lines changed Original file line number Diff line number Diff line change @@ -1932,6 +1932,11 @@ impl<'a> Resolver<'a> {
19321932        } 
19331933    } 
19341934
1935+     /// For rustdoc. 
1936+      pub  fn  get_partial_res ( & self ,  node_id :  NodeId )  -> Option < PartialRes >  { 
1937+         self . partial_res_map . get ( & node_id) . copied ( ) 
1938+     } 
1939+ 
19351940    /// Retrieves the span of the given `DefId` if `DefId` is in the local crate. 
19361941     #[ inline]  
19371942    pub  fn  opt_span ( & self ,  def_id :  DefId )  -> Option < Span >  { 
Original file line number Diff line number Diff line change @@ -354,7 +354,14 @@ impl Visitor<'_> for EarlyDocLinkResolver<'_, '_> {
354354            self . parent_scope . module  = old_module; 
355355        }  else  { 
356356            match  & item. kind  { 
357-                 ItemKind :: Impl ( box ast:: Impl  {  of_trait :  Some ( ..) ,  .. } )  => { 
357+                 ItemKind :: Impl ( box ast:: Impl  {  of_trait :  Some ( trait_ref) ,  .. } )  => { 
358+                     if  let  Some ( partial_res)  = self . resolver . get_partial_res ( trait_ref. ref_id ) 
359+                         && let  Some ( res)  = partial_res. full_res ( ) 
360+                         && let  Some ( trait_def_id)  = res. opt_def_id ( ) 
361+                         && !trait_def_id. is_local ( ) 
362+                         && self . visited_mods . insert ( trait_def_id)  { 
363+                         self . resolve_doc_links_extern_impl ( trait_def_id,  false ) ; 
364+                     } 
358365                    self . all_trait_impls . push ( self . resolver . local_def_id ( item. id ) . to_def_id ( ) ) ; 
359366                } 
360367                ItemKind :: MacroDef ( macro_def)  if  macro_def. macro_rules  => { 
Original file line number Diff line number Diff line change 1+ // Doc links in `Trait`'s methods are resolved because it has a local impl. 
2+ 
3+ // aux-build:issue-103463-aux.rs 
4+ 
5+ extern  crate  issue_103463_aux; 
6+ use  issue_103463_aux:: Trait ; 
7+ 
8+ pub  struct  LocalType ; 
9+ 
10+ impl  Trait  for  LocalType  { 
11+     fn  method ( )  { } 
12+ } 
13+ 
14+ fn  main ( )  { } 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments