@@ -7,9 +7,9 @@ use rustc_data_structures::fingerprint::Fingerprint;
7
7
use rustc_data_structures:: stable_hasher:: { HashStable , StableHasher } ;
8
8
use rustc_data_structures:: svh:: Svh ;
9
9
use rustc_hir:: def:: { DefKind , Res } ;
10
- use rustc_hir:: def_id:: { CrateNum , DefId , LocalDefId , CRATE_DEF_INDEX , LOCAL_CRATE } ;
10
+ use rustc_hir:: def_id:: { CrateNum , DefId , LocalDefId , CRATE_DEF_ID , CRATE_DEF_INDEX , LOCAL_CRATE } ;
11
11
use rustc_hir:: definitions:: { DefKey , DefPath , DefPathHash } ;
12
- use rustc_hir:: intravisit;
12
+ use rustc_hir:: intravisit:: { self , Visitor } ;
13
13
use rustc_hir:: itemlikevisit:: ItemLikeVisitor ;
14
14
use rustc_hir:: * ;
15
15
use rustc_index:: vec:: Idx ;
@@ -519,6 +519,22 @@ impl<'hir> Map<'hir> {
519
519
}
520
520
}
521
521
522
+ /// Walks the contents of a crate. See also `Crate::visit_all_items`.
523
+ pub fn walk_crate ( self , visitor : & mut impl Visitor < ' hir > ) {
524
+ let ( top_mod, span, hir_id) = self . get_module ( CRATE_DEF_ID ) ;
525
+ visitor. visit_mod ( top_mod, span, hir_id) ;
526
+ }
527
+
528
+ /// Walks the attributes in a crate.
529
+ pub fn walk_attributes ( self , visitor : & mut impl Visitor < ' hir > ) {
530
+ let krate = self . krate ( ) ;
531
+ for ( & id, attrs) in krate. attrs . iter ( ) {
532
+ for a in * attrs {
533
+ visitor. visit_attribute ( id, a)
534
+ }
535
+ }
536
+ }
537
+
522
538
pub fn visit_item_likes_in_module < V > ( & self , module : LocalDefId , visitor : & mut V )
523
539
where
524
540
V : ItemLikeVisitor < ' hir > ,
@@ -934,7 +950,8 @@ pub(super) fn index_hir<'tcx>(tcx: TyCtxt<'tcx>, (): ()) -> &'tcx IndexedHir<'tc
934
950
& tcx. untracked_resolutions . definitions ,
935
951
hcx,
936
952
) ;
937
- intravisit:: walk_crate ( & mut collector, tcx. untracked_crate ) ;
953
+ let top_mod = tcx. untracked_crate . module ( ) ;
954
+ collector. visit_mod ( top_mod, top_mod. inner , CRATE_HIR_ID ) ;
938
955
939
956
let map = collector. finalize_and_compute_crate_hash ( ) ;
940
957
tcx. arena . alloc ( map)
0 commit comments