diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-01-30 14:24:41 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-01-30 19:37:32 -0800 |
| commit | cb4a3839222a0501a8f54f3c31dbf8ffa2c2945d (patch) | |
| tree | ca99a8f1954d726712de58463d7f948dc97619fd | |
| parent | d3aa1748461e1220fb26a6e556a78b88a32cc2bd (diff) | |
| download | rust-cb4a3839222a0501a8f54f3c31dbf8ffa2c2945d.tar.gz rust-cb4a3839222a0501a8f54f3c31dbf8ffa2c2945d.zip | |
rustdoc: Extract iface doc nodes from the AST
| -rw-r--r-- | src/rustdoc/extract.rs | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/rustdoc/extract.rs b/src/rustdoc/extract.rs index d992bc32cd5..64e179c78c0 100644 --- a/src/rustdoc/extract.rs +++ b/src/rustdoc/extract.rs @@ -70,6 +70,11 @@ fn moddoc_from_mod( resdoc_from_resource(decl, item.ident, item.id) )) } + ast::item_iface(_, methods) { + some(doc::ifacetag( + ifacedoc_from_iface(methods, item.ident, item.id) + )) + } _ { none } @@ -219,6 +224,57 @@ fn should_extract_resource_args() { assert doc.topmod.resources()[0].args[0].name == "b"; } +fn ifacedoc_from_iface( + methods: [ast::ty_method], + name: str, + id: ast::node_id +) -> doc::ifacedoc { + { + id: id, + name: name, + brief: none, + desc: none, + methods: vec::map(methods) {|method| + { + name: method.ident, + brief: none, + desc: none, + args: argdocs_from_args(method.decl.inputs), + return: { + desc: none, + ty: none + }, + failure: none, + sig: none + } + } + } +} + +#[test] +fn should_extract_ifaces() { + let source = "iface i { fn f(); }"; + let ast = parse::from_str(source); + let doc = extract(ast, ""); + assert doc.topmod.ifaces()[0].name == "i"; +} + +#[test] +fn should_extract_iface_methods() { + let source = "iface i { fn f(); }"; + let ast = parse::from_str(source); + let doc = extract(ast, ""); + assert doc.topmod.ifaces()[0].methods[0].name == "f"; +} + +#[test] +fn should_extract_iface_method_args() { + let source = "iface i { fn f(a: bool); }"; + let ast = parse::from_str(source); + let doc = extract(ast, ""); + assert doc.topmod.ifaces()[0].methods[0].args[0].name == "a"; +} + #[cfg(test)] mod tests { |
