diff --git a/src/librustc/metadata/csearch.rs b/src/librustc/metadata/csearch.rs index 47aad257d156f..081c035b5950d 100644 --- a/src/librustc/metadata/csearch.rs +++ b/src/librustc/metadata/csearch.rs @@ -13,7 +13,6 @@ use metadata::common::*; use metadata::cstore; use metadata::decoder; -use middle::def; use middle::lang_items; use middle::ty; @@ -114,12 +113,6 @@ pub fn maybe_get_item_ast<'tcx>(tcx: &ty::ctxt<'tcx>, def: ast::DefId, decoder::maybe_get_item_ast(&*cdata, tcx, def.node, decode_inlined_item) } -pub fn get_enum_variant_defs(cstore: &cstore::CStore, enum_id: ast::DefId) - -> Vec<(def::Def, ast::Name, ast::Visibility)> { - let cdata = cstore.get_crate_data(enum_id.krate); - decoder::get_enum_variant_defs(&*cstore.intr, &*cdata, enum_id.node) -} - pub fn get_enum_variants<'tcx>(tcx: &ty::ctxt<'tcx>, def: ast::DefId) -> Vec>> { let cstore = &tcx.sess.cstore; diff --git a/src/librustc/metadata/decoder.rs b/src/librustc/metadata/decoder.rs index be285d975b81d..2a7ec48378ac1 100644 --- a/src/librustc/metadata/decoder.rs +++ b/src/librustc/metadata/decoder.rs @@ -268,30 +268,6 @@ fn item_trait_ref<'tcx>(doc: rbml::Doc, tcx: &ty::ctxt<'tcx>, cdata: Cmd) doc_trait_ref(tp, tcx, cdata) } -struct EnumVariantIds<'a> { - iter: reader::TaggedDocsIterator<'a>, - cdata: Cmd<'a>, -} - -impl<'a> Iterator for EnumVariantIds<'a> { - type Item = ast::DefId; - - fn next(&mut self) -> Option { - self.iter.next().map(|p| translated_def_id(self.cdata, p)) - } - - fn size_hint(&self) -> (usize, Option) { - self.iter.size_hint() - } -} - -fn enum_variant_ids<'a>(item: rbml::Doc<'a>, cdata: Cmd<'a>) -> EnumVariantIds<'a> { - EnumVariantIds { - iter: reader::tagged_docs(item, tag_items_data_item_variant), - cdata: cdata, - } -} - fn item_path(item_doc: rbml::Doc) -> Vec { let path_doc = reader::get_doc(item_doc, tag_path); reader::docs(path_doc).filter_map(|(tag, elt_doc)| { @@ -730,31 +706,14 @@ pub fn maybe_get_item_ast<'tcx>(cdata: Cmd, tcx: &ty::ctxt<'tcx>, id: ast::NodeI } } -pub fn get_enum_variant_defs(intr: &IdentInterner, - cdata: Cmd, - id: ast::NodeId) - -> Vec<(def::Def, ast::Name, ast::Visibility)> { - let data = cdata.data(); - let items = reader::get_doc(rbml::Doc::new(data), tag_items); - let item = find_item(id, items); - enum_variant_ids(item, cdata).map(|did| { - let item = find_item(did.node, items); - let name = item_name(intr, item); - let visibility = item_visibility(item); - match item_to_def_like(cdata, item, did) { - DlDef(def @ def::DefVariant(..)) => (def, name, visibility), - _ => unreachable!() - } - }).collect() -} - pub fn get_enum_variants<'tcx>(intr: Rc, cdata: Cmd, id: ast::NodeId, tcx: &ty::ctxt<'tcx>) -> Vec>> { let data = cdata.data(); let items = reader::get_doc(rbml::Doc::new(data), tag_items); let item = find_item(id, items); let mut disr_val = 0; - enum_variant_ids(item, cdata).map(|did| { + reader::tagged_docs(item, tag_items_data_item_variant).map(|p| { + let did = translated_def_id(cdata, p); let item = find_item(did.node, items); let ctor_ty = item_type(ast::DefId { krate: cdata.cnum, node: id}, item, tcx, cdata);