about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-06-26 13:30:47 -0700
committerPatrick Walton <pcwalton@mimiga.net>2012-06-26 13:45:18 -0700
commit481267299d1c5a1ddcacf68ce1ce3f3fb48c0cd5 (patch)
treed14467de2aef601383837303f212c62ae05db50e
parent1228c55ef0ec41215054c5db1693b84fbb58674d (diff)
downloadrust-481267299d1c5a1ddcacf68ce1ce3f3fb48c0cd5.tar.gz
rust-481267299d1c5a1ddcacf68ce1ce3f3fb48c0cd5.zip
rustc: Make trans no longer insist that there be exactly one impl scope per module
Conflicts:

	src/rustc/middle/trans/base.rs
-rw-r--r--src/rustc/middle/trans/base.rs15
1 files changed, 5 insertions, 10 deletions
diff --git a/src/rustc/middle/trans/base.rs b/src/rustc/middle/trans/base.rs
index 05ec7d074c8..5bb00ccb8f1 100644
--- a/src/rustc/middle/trans/base.rs
+++ b/src/rustc/middle/trans/base.rs
@@ -5456,17 +5456,12 @@ fn crate_ctxt_to_encode_parms(cx: @crate_ctxt)
 
     fn impl_map(cx: @crate_ctxt,
                 id: ast::node_id) -> [(ast::ident, ast::def_id)]/~ {
-        alt *cx.maps.impl_map.get(id) {
-          list::cons(impls, @list::nil) {
-            (*impls).map {|i|
-                (i.ident, i.did)
-            }
-          }
-          _ {
-            cx.sess.bug(#fmt("encode_info_for_mod: empty impl_map \
-                              entry for %?", id));
-          }
+        let mut result = []/~;
+        for list::each(cx.maps.impl_map.get(id)) {
+            |impls|
+            result += (*impls).map({|i| (i.ident, i.did) });
         }
+        ret result;
     }
 }