diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2012-07-18 09:31:53 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2012-07-18 16:05:17 -0700 |
| commit | 3ac5b4a86fa37d2b2c17ef5ffdb6e521630ea4ac (patch) | |
| tree | 0613184ab1f468f2a1b776c1d4c6df4ac15d69db /src/rustdoc | |
| parent | 1528256fdc26199dd58b390e42e2d0dc53b9703d (diff) | |
| download | rust-3ac5b4a86fa37d2b2c17ef5ffdb6e521630ea4ac.tar.gz rust-3ac5b4a86fa37d2b2c17ef5ffdb6e521630ea4ac.zip | |
syntax: Parse multiple trait refs in a single implementation
Diffstat (limited to 'src/rustdoc')
| -rw-r--r-- | src/rustdoc/doc.rs | 2 | ||||
| -rw-r--r-- | src/rustdoc/extract.rs | 2 | ||||
| -rw-r--r-- | src/rustdoc/markdown_pass.rs | 16 | ||||
| -rw-r--r-- | src/rustdoc/tystr_pass.rs | 18 |
4 files changed, 20 insertions, 18 deletions
diff --git a/src/rustdoc/doc.rs b/src/rustdoc/doc.rs index efbd9c7cd60..e6c780e6e08 100644 --- a/src/rustdoc/doc.rs +++ b/src/rustdoc/doc.rs @@ -110,7 +110,7 @@ type methoddoc = { type impldoc = { item: itemdoc, - trait_ty: option<~str>, + trait_types: ~[~str], self_ty: option<~str>, methods: ~[methoddoc] }; diff --git a/src/rustdoc/extract.rs b/src/rustdoc/extract.rs index 343c018a312..bdcfb8cc590 100644 --- a/src/rustdoc/extract.rs +++ b/src/rustdoc/extract.rs @@ -235,7 +235,7 @@ fn impldoc_from_impl( ) -> doc::impldoc { { item: itemdoc, - trait_ty: none, + trait_types: ~[], self_ty: none, methods: do vec::map(methods) |method| { { diff --git a/src/rustdoc/markdown_pass.rs b/src/rustdoc/markdown_pass.rs index f3962f2a30e..b04210f4d31 100644 --- a/src/rustdoc/markdown_pass.rs +++ b/src/rustdoc/markdown_pass.rs @@ -224,14 +224,16 @@ fn header_name(doc: doc::itemtag) -> ~str { doc::impltag(doc) { assert option::is_some(doc.self_ty); let self_ty = option::get(doc.self_ty); - alt doc.trait_ty { - some(trait_ty) { - #fmt("%s of %s for %s", doc.name(), trait_ty, self_ty) - } - none { - #fmt("%s for %s", doc.name(), self_ty) - } + let mut trait_part = ~""; + for doc.trait_types.eachi |i, trait_type| { + if i == 0 { + trait_part += ~" of "; + } else { + trait_part += ", "; + } + trait_part += trait_type; } + #fmt("%s%s for %s", doc.name(), trait_part, self_ty) } _ { doc.name() diff --git a/src/rustdoc/tystr_pass.rs b/src/rustdoc/tystr_pass.rs index b22c7e121c7..774106a6fb4 100644 --- a/src/rustdoc/tystr_pass.rs +++ b/src/rustdoc/tystr_pass.rs @@ -230,22 +230,22 @@ fn fold_impl( let srv = fold.ctxt; - let (trait_ty, self_ty) = do astsrv::exec(srv) |ctxt| { + let (trait_types, self_ty) = do astsrv::exec(srv) |ctxt| { alt ctxt.ast_map.get(doc.id()) { ast_map::node_item(@{ - node: ast::item_impl(_, trait_ty, self_ty, _), _ + node: ast::item_impl(_, trait_types, self_ty, _), _ }, _) { - let trait_ty = option::map(trait_ty, |p| { + let trait_types = vec::map(trait_types, |p| { pprust::path_to_str(p.path) }); - (trait_ty, some(pprust::ty_to_str(self_ty))) + (trait_types, some(pprust::ty_to_str(self_ty))) } _ { fail ~"expected impl" } } }; { - trait_ty: trait_ty, + trait_types: trait_types, self_ty: self_ty, methods: merge_methods(fold.ctxt, doc.id(), doc.methods) with doc @@ -253,15 +253,15 @@ fn fold_impl( } #[test] -fn should_add_impl_trait_ty() { +fn should_add_impl_trait_types() { let doc = test::mk_doc(~"impl i of j for int { fn a<T>() { } }"); - assert doc.cratemod().impls()[0].trait_ty == some(~"j"); + assert doc.cratemod().impls()[0].trait_types[0] == ~"j"; } #[test] -fn should_not_add_impl_trait_ty_if_none() { +fn should_not_add_impl_trait_types_if_none() { let doc = test::mk_doc(~"impl i for int { fn a() { } }"); - assert doc.cratemod().impls()[0].trait_ty == none; + assert vec::len(doc.cratemod().impls()[0].trait_types) == 0; } #[test] |
