1
1
use crate :: clean;
2
2
use crate :: docfs:: PathError ;
3
3
use crate :: error:: Error ;
4
- use crate :: fold:: DocFolder ;
5
4
use crate :: html:: format:: Buffer ;
6
5
use crate :: html:: highlight;
7
6
use crate :: html:: layout;
8
7
use crate :: html:: render:: { Context , BASIC_KEYWORDS } ;
8
+ use crate :: visit:: DocVisitor ;
9
9
use rustc_data_structures:: fx:: { FxHashMap , FxHashSet } ;
10
10
use rustc_hir:: def_id:: LOCAL_CRATE ;
11
11
use rustc_middle:: ty:: TyCtxt ;
@@ -18,10 +18,13 @@ use std::path::{Component, Path, PathBuf};
18
18
19
19
crate fn render ( cx : & mut Context < ' _ > , krate : clean:: Crate ) -> Result < clean:: Crate , Error > {
20
20
info ! ( "emitting source files" ) ;
21
+
21
22
let dst = cx. dst . join ( "src" ) . join ( & * krate. name ( cx. tcx ( ) ) . as_str ( ) ) ;
22
23
cx. shared . ensure_dir ( & dst) ?;
23
- let mut folder = SourceCollector { dst, cx, emitted_local_sources : FxHashSet :: default ( ) } ;
24
- Ok ( folder. fold_crate ( krate) )
24
+
25
+ let mut collector = SourceCollector { dst, cx, emitted_local_sources : FxHashSet :: default ( ) } ;
26
+ collector. visit_crate ( & krate) ;
27
+ Ok ( krate)
25
28
}
26
29
27
30
crate fn collect_local_sources < ' tcx > (
@@ -30,8 +33,7 @@ crate fn collect_local_sources<'tcx>(
30
33
krate : clean:: Crate ,
31
34
) -> ( clean:: Crate , FxHashMap < PathBuf , String > ) {
32
35
let mut lsc = LocalSourcesCollector { tcx, local_sources : FxHashMap :: default ( ) , src_root } ;
33
-
34
- let krate = lsc. fold_crate ( krate) ;
36
+ lsc. visit_crate ( & krate) ;
35
37
( krate, lsc. local_sources )
36
38
}
37
39
@@ -79,13 +81,13 @@ impl LocalSourcesCollector<'_, '_> {
79
81
}
80
82
}
81
83
82
- impl DocFolder for LocalSourcesCollector < ' _ , ' _ > {
83
- fn fold_item ( & mut self , item : clean:: Item ) -> Option < clean :: Item > {
84
- self . add_local_source ( & item) ;
84
+ impl DocVisitor for LocalSourcesCollector < ' _ , ' _ > {
85
+ fn visit_item ( & mut self , item : & clean:: Item ) {
86
+ self . add_local_source ( item) ;
85
87
86
88
// FIXME: if `include_sources` isn't set and DocFolder didn't require consuming the crate by value,
87
89
// we could return None here without having to walk the rest of the crate.
88
- Some ( self . fold_item_recur ( item) )
90
+ self . visit_item_recur ( item)
89
91
}
90
92
}
91
93
@@ -98,8 +100,8 @@ struct SourceCollector<'a, 'tcx> {
98
100
emitted_local_sources : FxHashSet < PathBuf > ,
99
101
}
100
102
101
- impl DocFolder for SourceCollector < ' _ , ' _ > {
102
- fn fold_item ( & mut self , item : clean:: Item ) -> Option < clean :: Item > {
103
+ impl DocVisitor for SourceCollector < ' _ , ' _ > {
104
+ fn visit_item ( & mut self , item : & clean:: Item ) {
103
105
let tcx = self . cx . tcx ( ) ;
104
106
let span = item. span ( tcx) ;
105
107
let sess = tcx. sess ;
@@ -134,7 +136,7 @@ impl DocFolder for SourceCollector<'_, '_> {
134
136
}
135
137
// FIXME: if `include_sources` isn't set and DocFolder didn't require consuming the crate by value,
136
138
// we could return None here without having to walk the rest of the crate.
137
- Some ( self . fold_item_recur ( item) )
139
+ self . visit_item_recur ( item)
138
140
}
139
141
}
140
142
0 commit comments