X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustc_metadata%2Fcsearch.rs;h=802629e8f3e8b8d49c1dbd11485a9eb6f6fdce83;hb=e598b43243528c49ff6b1dd5350994fe971e941d;hp=822b11112f2113ab60e257489009edd25de03575;hpb=ac0e84522437331f9a06d04a5842acf0234cc86e;p=rust.git diff --git a/src/librustc_metadata/csearch.rs b/src/librustc_metadata/csearch.rs index 822b11112f2..802629e8f3e 100644 --- a/src/librustc_metadata/csearch.rs +++ b/src/librustc_metadata/csearch.rs @@ -18,10 +18,11 @@ use middle::cstore::{NativeLibraryKind, LinkMeta, LinkagePreference}; use middle::def; use middle::lang_items; -use middle::ty::{self, Ty}; +use middle::ty::{self, Ty, VariantKind}; use middle::def_id::{DefId, DefIndex}; use rustc::front::map as hir_map; +use rustc::mir::repr::Mir; use rustc::util::nodemap::{FnvHashMap, NodeMap, NodeSet}; use std::cell::RefCell; @@ -41,6 +42,12 @@ fn stability(&self, def: DefId) -> Option decoder::get_stability(&*cdata, def.index) } + fn deprecation(&self, def: DefId) -> Option + { + let cdata = self.get_crate_data(def.krate); + decoder::get_deprecation(&*cdata, def.index) + } + fn closure_kind(&self, _tcx: &ty::ctxt<'tcx>, def_id: DefId) -> ty::ClosureKind { assert!(!def_id.is_local()); @@ -122,8 +129,8 @@ fn item_path(&self, def: DefId) -> Vec { cdata.with_local_path(|cpath| { let mut r = Vec::with_capacity(cpath.len() + path.len()); - r.push_all(cpath); - r.push_all(&path); + r.extend_from_slice(cpath); + r.extend_from_slice(&path); r }) } @@ -135,7 +142,7 @@ fn extern_item_path(&self, def: DefId) -> Vec { let mut r = Vec::with_capacity(path.len() + 1); let crate_name = hir_map::PathMod(token::intern(&cdata.name)); r.push(crate_name); - r.push_all(&path); + r.extend_from_slice(&path); r } @@ -370,6 +377,17 @@ fn def_path(&self, def: DefId) -> hir_map::DefPath local_path.into_iter().chain(path).collect() } + fn variant_kind(&self, def_id: DefId) -> Option { + let cdata = self.get_crate_data(def_id.krate); + decoder::get_variant_kind(&cdata, def_id.index) + } + + fn struct_ctor_def_id(&self, struct_def_id: DefId) -> Option + { + let cdata = self.get_crate_data(struct_def_id.krate); + decoder::get_struct_ctor_def_id(&cdata, struct_def_id.index) + } + fn tuple_struct_definition_if_ctor(&self, did: DefId) -> Option { let cdata = self.get_crate_data(did.krate); @@ -421,6 +439,12 @@ fn maybe_get_item_ast(&'tcx self, tcx: &ty::ctxt<'tcx>, def: DefId) decoder::maybe_get_item_ast(&*cdata, tcx, def.index, decode_inlined_item) } + fn maybe_get_item_mir(&self, tcx: &ty::ctxt<'tcx>, def: DefId) + -> Option> { + let cdata = self.get_crate_data(def.krate); + decoder::maybe_get_item_mir(&*cdata, tcx, def.index) + } + fn crates(&self) -> Vec { let mut result = vec![]; @@ -473,6 +497,7 @@ fn encode_metadata(&self, item_symbols: &RefCell>, link_meta: &LinkMeta, reachable: &NodeSet, + mir_map: &NodeMap>, krate: &hir::Crate) -> Vec { let encode_inlined_item: encoder::EncodeInlinedItem = @@ -486,7 +511,8 @@ fn encode_metadata(&self, link_meta: link_meta, cstore: self, encode_inlined_item: encode_inlined_item, - reachable: reachable + reachable: reachable, + mir_map: mir_map, }; encoder::encode_metadata(encode_params, krate)