1
+ use ast:: visit;
1
2
use rustc_ast as ast;
2
3
use rustc_hir:: def:: Namespace :: TypeNS ;
3
4
use rustc_hir:: def_id:: { LocalDefId , CRATE_DEF_ID } ;
@@ -16,7 +17,7 @@ crate fn load_intra_link_crates(resolver: Resolver, krate: &ast::Crate) -> Resol
16
17
let mut loader = IntraLinkCrateLoader { current_mod : CRATE_DEF_ID , resolver } ;
17
18
// `walk_crate` doesn't visit the crate itself for some reason.
18
19
loader. load_links_in_attrs ( & krate. attrs , krate. span ) ;
19
- ast :: visit:: walk_crate ( & mut loader, krate) ;
20
+ visit:: walk_crate ( & mut loader, krate) ;
20
21
loader. resolver
21
22
}
22
23
@@ -54,7 +55,12 @@ impl IntraLinkCrateLoader {
54
55
}
55
56
}
56
57
57
- impl ast:: visit:: Visitor < ' _ > for IntraLinkCrateLoader {
58
+ impl visit:: Visitor < ' _ > for IntraLinkCrateLoader {
59
+ fn visit_foreign_item ( & mut self , item : & ast:: ForeignItem ) {
60
+ self . load_links_in_attrs ( & item. attrs , item. span ) ;
61
+ visit:: walk_foreign_item ( self , item)
62
+ }
63
+
58
64
fn visit_item ( & mut self , item : & ast:: Item ) {
59
65
use rustc_ast_lowering:: ResolverAstLowering ;
60
66
@@ -64,12 +70,29 @@ impl ast::visit::Visitor<'_> for IntraLinkCrateLoader {
64
70
let old_mod = mem:: replace ( & mut self . current_mod , new_mod) ;
65
71
66
72
self . load_links_in_attrs ( & item. attrs , item. span ) ;
67
- ast :: visit:: walk_item ( self , item) ;
73
+ visit:: walk_item ( self , item) ;
68
74
69
75
self . current_mod = old_mod;
70
76
} else {
71
77
self . load_links_in_attrs ( & item. attrs , item. span ) ;
72
- ast :: visit:: walk_item ( self , item) ;
78
+ visit:: walk_item ( self , item) ;
73
79
}
74
80
}
81
+
82
+ // NOTE: if doc-comments are ever allowed on function parameters, this will have to implement `visit_param` too.
83
+
84
+ fn visit_assoc_item ( & mut self , item : & ast:: AssocItem , ctxt : visit:: AssocCtxt ) {
85
+ self . load_links_in_attrs ( & item. attrs , item. span ) ;
86
+ visit:: walk_assoc_item ( self , item, ctxt)
87
+ }
88
+
89
+ fn visit_field_def ( & mut self , field : & ast:: FieldDef ) {
90
+ self . load_links_in_attrs ( & field. attrs , field. span ) ;
91
+ visit:: walk_field_def ( self , field)
92
+ }
93
+
94
+ fn visit_variant ( & mut self , v : & ast:: Variant ) {
95
+ self . load_links_in_attrs ( & v. attrs , v. span ) ;
96
+ visit:: walk_variant ( self , v)
97
+ }
75
98
}
0 commit comments