@@ -106,7 +106,7 @@ pub fn strip_private(mut krate: clean::Crate) -> plugins::PluginResult {
106
106
retained : & mut retained,
107
107
access_levels : & access_levels,
108
108
} ;
109
- krate = stripper. fold_crate ( krate) ;
109
+ krate = ImportStripper . fold_crate ( stripper. fold_crate ( krate) ) ;
110
110
}
111
111
112
112
// strip all private implementations of traits
@@ -144,12 +144,6 @@ impl<'a> fold::DocFolder for Stripper<'a> {
144
144
}
145
145
}
146
146
147
- clean:: ExternCrateItem ( ..) | clean:: ImportItem ( _) => {
148
- if i. visibility != Some ( hir:: Public ) {
149
- return None
150
- }
151
- }
152
-
153
147
clean:: StructFieldItem ( ..) => {
154
148
if i. visibility != Some ( hir:: Public ) {
155
149
return Some ( clean:: Item {
@@ -170,6 +164,9 @@ impl<'a> fold::DocFolder for Stripper<'a> {
170
164
return None ;
171
165
}
172
166
}
167
+ // handled in the `strip-priv-imports` pass
168
+ clean:: ExternCrateItem ( ..) | clean:: ImportItem ( _) => { }
169
+
173
170
clean:: DefaultImplItem ( ..) | clean:: ImplItem ( ..) => { }
174
171
175
172
// tymethods/macros have no control over privacy
@@ -239,6 +236,21 @@ impl<'a> fold::DocFolder for ImplStripper<'a> {
239
236
}
240
237
}
241
238
239
+ // This stripper discards all private import statements (`use`, `extern crate`)
240
+ struct ImportStripper ;
241
+ impl fold:: DocFolder for ImportStripper {
242
+ fn fold_item ( & mut self , i : Item ) -> Option < Item > {
243
+ match i. inner {
244
+ clean:: ExternCrateItem ( ..) |
245
+ clean:: ImportItem ( ..) if i. visibility != Some ( hir:: Public ) => None ,
246
+ _ => self . fold_item_recur ( i)
247
+ }
248
+ }
249
+ }
250
+
251
+ pub fn strip_priv_imports ( krate : clean:: Crate ) -> plugins:: PluginResult {
252
+ ( ImportStripper . fold_crate ( krate) , None )
253
+ }
242
254
243
255
pub fn unindent_comments ( krate : clean:: Crate ) -> plugins:: PluginResult {
244
256
struct CommentCleaner ;
0 commit comments