diff options
| author | Sean Patrick Santos <SeanPatrickSantos@gmail.com> | 2015-03-21 15:06:28 -0600 |
|---|---|---|
| committer | Sean Patrick Santos <SeanPatrickSantos@gmail.com> | 2015-04-23 21:02:27 -0600 |
| commit | 3d9b5d04242567648800c5594695f147c6bca05b (patch) | |
| tree | 4e4f40739c99071ab7a6b89b156d845fe49cdd79 /src/librustc/metadata | |
| parent | 7129e8815e3203ceae5bb85b0faa8e8753e520e3 (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.rs | 30 |
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; } |
