diff options
| author | Eduard-Mihai Burtescu <edy.burt@gmail.com> | 2016-11-25 13:21:19 +0200 |
|---|---|---|
| committer | Eduard-Mihai Burtescu <edy.burt@gmail.com> | 2016-11-28 04:18:10 +0200 |
| commit | 962633cdbbe2ce87c1311edbaa0d4e0aca022b6d (patch) | |
| tree | a878ca26d71df3b679ce9cf775cc7359aef1100d /src/librustc_metadata | |
| parent | bc096549e84d1edbd051f0b42662c038dd935ff6 (diff) | |
| download | rust-962633cdbbe2ce87c1311edbaa0d4e0aca022b6d.tar.gz rust-962633cdbbe2ce87c1311edbaa0d4e0aca022b6d.zip | |
rustc: embed path resolutions into the HIR instead of keeping DefMap.
Diffstat (limited to 'src/librustc_metadata')
| -rw-r--r-- | src/librustc_metadata/astencode.rs | 11 | ||||
| -rw-r--r-- | src/librustc_metadata/encoder.rs | 2 |
2 files changed, 7 insertions, 6 deletions
diff --git a/src/librustc_metadata/astencode.rs b/src/librustc_metadata/astencode.rs index e2fa535bb44..806d20c72dc 100644 --- a/src/librustc_metadata/astencode.rs +++ b/src/librustc_metadata/astencode.rs @@ -18,7 +18,7 @@ use schema::*; use rustc::middle::cstore::{InlinedItem, InlinedItemRef}; use rustc::middle::const_qualif::ConstQualif; -use rustc::hir::def::{self, Def}; +use rustc::hir::def::Def; use rustc::hir::def_id::DefId; use rustc::ty::{self, TyCtxt, Ty}; @@ -35,7 +35,7 @@ pub struct Ast<'tcx> { #[derive(RustcEncodable, RustcDecodable)] enum TableEntry<'tcx> { - Def(Def), + TypeRelativeDef(Def), NodeType(Ty<'tcx>), ItemSubsts(ty::ItemSubsts<'tcx>), Adjustment(ty::adjustment::Adjustment<'tcx>), @@ -93,7 +93,8 @@ impl<'a, 'b, 'tcx, 'v> Visitor<'v> for SideTableEncodingIdVisitor<'a, 'b, 'tcx> } }; - encode(tcx.expect_def_or_none(id).map(TableEntry::Def)); + encode(tcx.tables().type_relative_path_defs.get(&id).cloned() + .map(TableEntry::TypeRelativeDef)); encode(tcx.tables().node_types.get(&id).cloned().map(TableEntry::NodeType)); encode(tcx.tables().item_substs.get(&id).cloned().map(TableEntry::ItemSubsts)); encode(tcx.tables().adjustments.get(&id).cloned().map(TableEntry::Adjustment)); @@ -140,8 +141,8 @@ pub fn decode_inlined_item<'a, 'tcx>(cdata: &CrateMetadata, for (id, entry) in ast.side_tables.decode((cdata, tcx, id_ranges)) { match entry { - TableEntry::Def(def) => { - tcx.def_map.borrow_mut().insert(id, def::PathResolution::new(def)); + TableEntry::TypeRelativeDef(def) => { + tcx.tables.borrow_mut().type_relative_path_defs.insert(id, def); } TableEntry::NodeType(ty) => { tcx.tables.borrow_mut().node_types.insert(id, ty); diff --git a/src/librustc_metadata/encoder.rs b/src/librustc_metadata/encoder.rs index 8f3e8a48b1a..a243962b4ee 100644 --- a/src/librustc_metadata/encoder.rs +++ b/src/librustc_metadata/encoder.rs @@ -597,7 +597,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> { fn encode_fn_arg_names(&mut self, decl: &hir::FnDecl) -> LazySeq<ast::Name> { self.lazy_seq(decl.inputs.iter().map(|arg| { - if let PatKind::Binding(_, ref path1, _) = arg.pat.node { + if let PatKind::Binding(_, _, ref path1, _) = arg.pat.node { path1.node } else { Symbol::intern("") |
