Skip to content

Commit 52c8d02

Browse files
committed
---
yaml --- r: 11463 b: refs/heads/master c: fdea1c4 h: refs/heads/master i: 11461: f58f76d 11459: 80135c3 11455: fae8814 v: v3
1 parent 9e9ff93 commit 52c8d02

File tree

4 files changed

+46
-3
lines changed

4 files changed

+46
-3
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: ba173d84098024d43628a250b0024ffe83b48558
2+
refs/heads/master: fdea1c414ce356a61bc70525ed96746fa25c4330
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
55
refs/heads/try: 2898dcc5d97da9427ac367542382b6239d9c0bbf

trunk/src/rustdoc/doc.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ type moddoc = {
3737

3838
type nmoddoc = {
3939
item: itemdoc,
40-
fns: ~[fndoc]
40+
fns: [fndoc]
4141
};
4242

4343
type constdoc = {
@@ -120,6 +120,15 @@ impl util for moddoc {
120120
}
121121
}
122122

123+
fn nmods() -> [nmoddoc] {
124+
vec::filter_map(*self.items) {|itemtag|
125+
alt itemtag {
126+
nmodtag(nmoddoc) { some(nmoddoc) }
127+
_ { none }
128+
}
129+
}
130+
}
131+
123132
fn fns() -> [fndoc] {
124133
vec::filter_map(*self.items) {|itemtag|
125134
alt itemtag {

trunk/src/rustdoc/extract.rs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ fn moddoc_from_mod(
5757
moddoc_from_mod(itemdoc, m)
5858
))
5959
}
60+
ast::item_native_mod(nm) {
61+
some(doc::nmodtag(
62+
nmoddoc_from_mod(itemdoc, nm)
63+
))
64+
}
6065
ast::item_fn(decl, _, _) {
6166
some(doc::fntag(
6267
fndoc_from_fn(itemdoc, decl)
@@ -100,6 +105,23 @@ fn moddoc_from_mod(
100105
}
101106
}
102107

108+
fn nmoddoc_from_mod(
109+
itemdoc: doc::itemdoc,
110+
module: ast::native_mod
111+
) -> doc::nmoddoc {
112+
{
113+
item: itemdoc,
114+
fns: vec::map(module.items) {|item|
115+
let itemdoc = mk_itemdoc(item.id, item.ident);
116+
alt item.node {
117+
ast::native_item_fn(decl, _) {
118+
fndoc_from_fn(itemdoc, decl)
119+
}
120+
}
121+
}
122+
}
123+
}
124+
103125
fn fndoc_from_fn(
104126
itemdoc: doc::itemdoc,
105127
decl: ast::fn_decl
@@ -341,6 +363,18 @@ mod test {
341363
assert doc.topmod.mods()[0].mods()[1].name() == "c";
342364
}
343365

366+
#[test]
367+
fn extract_native_mods() {
368+
let doc = mk_doc("native mod a { }");
369+
assert doc.topmod.nmods()[0].name() == "a";
370+
}
371+
372+
#[test]
373+
fn extract_fns_from_native_mods() {
374+
let doc = mk_doc("native mod a { fn a(); }");
375+
assert doc.topmod.nmods()[0].fns[0].name() == "a";
376+
}
377+
344378
#[test]
345379
fn extract_mods_deep() {
346380
let doc = mk_doc("mod a { mod b { mod c { } } }");

trunk/src/rustdoc/fold.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ fn default_seq_fold_nmod<T>(
154154
) -> doc::nmoddoc {
155155
{
156156
item: fold.fold_item(fold, doc.item),
157-
fns: ~vec::map(*doc.fns) {|fndoc|
157+
fns: vec::map(doc.fns) {|fndoc|
158158
fold.fold_fn(fold, fndoc)
159159
}
160160
with doc

0 commit comments

Comments
 (0)