about summary refs log tree commit diff
path: root/src/librustc/metadata
diff options
context:
space:
mode:
authorSean Patrick Santos <SeanPatrickSantos@gmail.com>2015-03-21 15:06:28 -0600
committerSean Patrick Santos <SeanPatrickSantos@gmail.com>2015-04-23 21:02:27 -0600
commit3d9b5d04242567648800c5594695f147c6bca05b (patch)
tree4e4f40739c99071ab7a6b89b156d845fe49cdd79 /src/librustc/metadata
parent7129e8815e3203ceae5bb85b0faa8e8753e520e3 (diff)
Fix a number of bugs that interfered with cross-crate usage of associated consts.
Diffstat (limited to 'src/librustc/metadata')
-rw-r--r--src/librustc/metadata/decoder.rs30
1 files changed, 16 insertions, 14 deletions
diff --git a/src/librustc/metadata/decoder.rs b/src/librustc/metadata/decoder.rs
index 00a7fe68f2f..f03a2d342d7 100644
--- a/src/librustc/metadata/decoder.rs
+++ b/src/librustc/metadata/decoder.rs
@@ -1002,21 +1002,23 @@ pub fn get_associated_consts<'tcx>(intr: Rc<IdentInterner>,
     let item = lookup_item(id, data);
     let mut result = Vec::new();
 
-    reader::tagged_docs(item, tag_item_trait_item, |ac_id| {
-        let did = item_def_id(ac_id, cdata);
-        let ac_doc = lookup_item(did.node, data);
-
-        if item_sort(ac_doc) == Some('C') {
-            let trait_item = get_impl_or_trait_item(intr.clone(),
-                                                    cdata,
-                                                    did.node,
-                                                    tcx);
-            if let ty::ConstTraitItem(ref ac) = trait_item {
-                result.push((*ac).clone())
+    for &tag in &[tag_item_trait_item, tag_item_impl_item] {
+        reader::tagged_docs(item, tag, |ac_id| {
+            let did = item_def_id(ac_id, cdata);
+            let ac_doc = lookup_item(did.node, data);
+
+            if item_sort(ac_doc) == Some('C') {
+                let trait_item = get_impl_or_trait_item(intr.clone(),
+                                                        cdata,
+                                                        did.node,
+                                                        tcx);
+                if let ty::ConstTraitItem(ref ac) = trait_item {
+                    result.push((*ac).clone())
+                }
             }
-        }
-        true
-    });
+            true
+        });
+    }
 
     return result;
 }