Skip to content

Commit 97a1110

Browse files
committed
rustdoc: Add resource signatures to doc tree
1 parent 9f80a17 commit 97a1110

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

src/rustdoc/fold.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,8 @@ fn default_seq_fold_mod<T>(
110110
mods: fold.fold_modlist(fold, doc.mods),
111111
fns: fold.fold_fnlist(fold, doc.fns),
112112
consts: fold.fold_constlist(fold, doc.consts),
113-
enums: fold.fold_enumlist(fold, doc.enums)
113+
enums: fold.fold_enumlist(fold, doc.enums),
114+
resources: fold.fold_reslist(fold, doc.resources)
114115
with *doc
115116
}
116117
}

src/rustdoc/tystr_pass.rs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ fn run(
1818
let fold = fold::fold({
1919
fold_fn: fold_fn,
2020
fold_const: fold_const,
21-
fold_enum: fold_enum
21+
fold_enum: fold_enum,
22+
fold_res: fold_res
2223
with *fold::default_seq_fold(srv)
2324
});
2425
fold.fold_crate(fold, doc)
@@ -222,3 +223,33 @@ fn should_add_variant_sigs() {
222223
let doc = run(srv, doc);
223224
assert doc.topmod.enums[0].variants[0].sig == some("b(int)");
224225
}
226+
227+
fn fold_res(
228+
fold: fold::fold<astsrv::srv>,
229+
doc: doc::resdoc
230+
) -> doc::resdoc {
231+
let srv = fold.ctxt;
232+
233+
~{
234+
sig: some(astsrv::exec(srv) {|ctxt|
235+
alt ctxt.ast_map.get(doc.id) {
236+
ast_map::node_item(@{
237+
node: ast::item_res(decl, _, _, _, _), _
238+
}) {
239+
pprust::res_to_str(decl, doc.name, [])
240+
}
241+
}
242+
})
243+
with *doc
244+
}
245+
}
246+
247+
#[test]
248+
fn should_add_resource_sigs() {
249+
let source = "resource r(b: bool) { }";
250+
let srv = astsrv::mk_srv_from_str(source);
251+
let doc = extract::from_srv(srv, "");
252+
let doc = run(srv, doc);
253+
log(error, doc.topmod.resources[0].sig);
254+
assert doc.topmod.resources[0].sig == some("resource r(b: bool)");
255+
}

0 commit comments

Comments
 (0)