about summary refs log tree commit diff
path: root/src/rustc/metadata/decoder.rs
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-07-18 17:34:59 -0700
committerPatrick Walton <pcwalton@mimiga.net>2012-07-18 17:34:59 -0700
commit57e8de89174b8e4395e20568537d43d66a82d855 (patch)
treedb8adef5627b20e01dcd0230d6976db906c54cd9 /src/rustc/metadata/decoder.rs
parent635a95936394107d2511130d451ce9148300d6a4 (diff)
rustc: Implement multiple-traits-per-impl for cross-crate stuff
Diffstat (limited to 'src/rustc/metadata/decoder.rs')
-rw-r--r--src/rustc/metadata/decoder.rs16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/rustc/metadata/decoder.rs b/src/rustc/metadata/decoder.rs
index 970be7ea53f..3ff9ded3f1e 100644
--- a/src/rustc/metadata/decoder.rs
+++ b/src/rustc/metadata/decoder.rs
@@ -24,7 +24,7 @@ export get_enum_variants;
 export get_type;
 export get_region_param;
 export get_type_param_count;
-export get_impl_trait;
+export get_impl_traits;
 export get_class_method;
 export get_impl_method;
 export lookup_def;
@@ -168,13 +168,12 @@ fn item_type(item_id: ast::def_id, item: ebml::doc,
     } else { t }
 }
 
-fn item_impl_trait(item: ebml::doc, tcx: ty::ctxt, cdata: cmd)
-    -> option<ty::t> {
-    let mut result = none;
+fn item_impl_traits(item: ebml::doc, tcx: ty::ctxt, cdata: cmd) -> ~[ty::t] {
+    let mut results = ~[];
     do ebml::tagged_docs(item, tag_impl_trait) |ity| {
-        result = some(doc_type(ity, tcx, cdata));
+        vec::push(results, doc_type(ity, tcx, cdata));
     };
-    result
+    results
 }
 
 fn item_ty_param_bounds(item: ebml::doc, tcx: ty::ctxt, cdata: cmd)
@@ -333,9 +332,8 @@ fn get_type_param_count(data: @~[u8], id: ast::node_id) -> uint {
     item_ty_param_count(lookup_item(id, data))
 }
 
-fn get_impl_trait(cdata: cmd, id: ast::node_id, tcx: ty::ctxt)
-    -> option<ty::t> {
-    item_impl_trait(lookup_item(id, cdata.data), tcx, cdata)
+fn get_impl_traits(cdata: cmd, id: ast::node_id, tcx: ty::ctxt) -> ~[ty::t] {
+    item_impl_traits(lookup_item(id, cdata.data), tcx, cdata)
 }
 
 fn get_impl_method(cdata: cmd, id: ast::node_id,