Skip to content

Commit 93c3469

Browse files
committed
---
yaml --- r: 108299 b: refs/heads/dist-snap c: 9e6c3f0 h: refs/heads/master i: 108297: 7a5609a 108295: ca05f40 v: v3
1 parent 28ad760 commit 93c3469

File tree

2 files changed

+52
-20
lines changed

2 files changed

+52
-20
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ refs/heads/try: f64fdf524a434f0e5cd0bc91d09c144723f3c90d
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c
9-
refs/heads/dist-snap: 52a3d38796c616bbed39cda2dc3538f2cedbd5ac
9+
refs/heads/dist-snap: 9e6c3f03bc09873eae0c9d1eae9b7a3603fb4f6c
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1212
refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0

branches/dist-snap/src/librustdoc/passes.rs

Lines changed: 51 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,30 +22,62 @@ use fold::DocFolder;
2222

2323
/// Strip items marked `#[doc(hidden)]`
2424
pub fn strip_hidden(krate: clean::Crate) -> plugins::PluginResult {
25-
struct Stripper;
26-
impl fold::DocFolder for Stripper {
27-
fn fold_item(&mut self, i: Item) -> Option<Item> {
28-
for attr in i.attrs.iter() {
29-
match attr {
30-
&clean::List(~"doc", ref l) => {
31-
for innerattr in l.iter() {
32-
match innerattr {
33-
&clean::Word(ref s) if "hidden" == *s => {
34-
debug!("found one in strip_hidden; removing");
35-
return None;
36-
},
37-
_ => (),
25+
let mut stripped = HashSet::new();
26+
27+
// strip all #[doc(hidden)] items
28+
let krate = {
29+
struct Stripper<'a> {
30+
stripped: &'a mut HashSet<ast::NodeId>
31+
};
32+
impl<'a> fold::DocFolder for Stripper<'a> {
33+
fn fold_item(&mut self, i: Item) -> Option<Item> {
34+
for attr in i.attrs.iter() {
35+
match attr {
36+
&clean::List(~"doc", ref l) => {
37+
for innerattr in l.iter() {
38+
match innerattr {
39+
&clean::Word(ref s) if "hidden" == *s => {
40+
debug!("found one in strip_hidden; removing");
41+
self.stripped.insert(i.id);
42+
return None;
43+
},
44+
_ => (),
45+
}
3846
}
47+
},
48+
_ => ()
49+
}
50+
}
51+
self.fold_item_recur(i)
52+
}
53+
}
54+
let mut stripper = Stripper{ stripped: &mut stripped };
55+
stripper.fold_crate(krate)
56+
};
57+
58+
// strip any traits implemented on stripped items
59+
let krate = {
60+
struct ImplStripper<'a> {
61+
stripped: &'a mut HashSet<ast::NodeId>
62+
};
63+
impl<'a> fold::DocFolder for ImplStripper<'a> {
64+
fn fold_item(&mut self, i: Item) -> Option<Item> {
65+
match i.inner {
66+
clean::ImplItem(clean::Impl{ for_: clean::ResolvedPath{ id: for_id, .. },
67+
.. }) => {
68+
if self.stripped.contains(&for_id) {
69+
return None;
3970
}
40-
},
41-
_ => ()
71+
}
72+
_ => {}
4273
}
74+
self.fold_item_recur(i)
4375
}
44-
self.fold_item_recur(i)
4576
}
46-
}
47-
let mut stripper = Stripper;
48-
let krate = stripper.fold_crate(krate);
77+
let mut stripper = ImplStripper{ stripped: &mut stripped };
78+
stripper.fold_crate(krate)
79+
};
80+
4981
(krate, None)
5082
}
5183

0 commit comments

Comments
 (0)