Skip to content

Commit 23e9f7a

Browse files
committed
rustdoc: Extract resources from the AST
1 parent 7cf7253 commit 23e9f7a

File tree

3 files changed

+39
-6
lines changed

3 files changed

+39
-6
lines changed

src/rustdoc/doc.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ type moddoc = ~{
1616
fns: fnlist,
1717
consts: constlist,
1818
enums: enumlist,
19-
resources: resourcelist
19+
resources: reslist
2020
};
2121

2222
type constdoc = ~{
@@ -63,7 +63,7 @@ type variantdoc = ~{
6363
sig: option<str>
6464
};
6565

66-
type resourcedoc = ~{
66+
type resdoc = ~{
6767
id: ast_id,
6868
name: str,
6969
brief: option<str>,
@@ -77,4 +77,4 @@ enum modlist = [moddoc];
7777
enum constlist = [constdoc];
7878
enum fnlist = [fndoc];
7979
enum enumlist = [enumdoc];
80-
enum resourcelist = [resourcedoc];
80+
enum reslist = [resdoc];

src/rustdoc/extract.rs

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,17 @@ fn moddoc_from_mod(
8888
}
8989
}
9090
}),
91-
resources: doc::resourcelist([])
91+
resources: doc::reslist(
92+
vec::filter_map(module.items) {|item|
93+
alt item.node {
94+
ast::item_res(_, _, _, _, _) {
95+
some(resdoc_from_resource(item.ident, item.id))
96+
}
97+
_ {
98+
none
99+
}
100+
}
101+
})
92102
}
93103
}
94104

@@ -201,6 +211,29 @@ fn should_extract_enum_variants() {
201211
assert doc.topmod.enums[0].variants[0].name == "v";
202212
}
203213

214+
fn resdoc_from_resource(
215+
name: str,
216+
id: ast::node_id
217+
) -> doc::resdoc {
218+
~{
219+
id: id,
220+
name: name,
221+
brief: none,
222+
desc: none,
223+
args: [],
224+
sig: none
225+
}
226+
}
227+
228+
#[test]
229+
fn should_extract_resources() {
230+
let source = "resource r(b: bool) { }";
231+
let ast = parse::from_str(source);
232+
let doc = extract(ast, "");
233+
assert doc.topmod.resources[0].id != 0;
234+
assert doc.topmod.resources[0].name == "r";
235+
}
236+
204237
#[cfg(test)]
205238
mod tests {
206239

src/rustdoc/rustdoc.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ fn test_run_passes() {
5353
fns: doc::fnlist([]),
5454
consts: doc::constlist([]),
5555
enums: doc::enumlist([]),
56-
resources: doc::resourcelist([])
56+
resources: doc::reslist([])
5757
}
5858
}
5959
}
@@ -72,7 +72,7 @@ fn test_run_passes() {
7272
fns: doc::fnlist([]),
7373
consts: doc::constlist([]),
7474
enums: doc::enumlist([]),
75-
resources: doc::resourcelist([])
75+
resources: doc::reslist([])
7676
}
7777
}
7878
}

0 commit comments

Comments
 (0)