about summary refs log tree commit diff
path: root/src/librustc_metadata
diff options
context:
space:
mode:
authorEduard-Mihai Burtescu <edy.burt@gmail.com>2016-11-25 13:21:19 +0200
committerEduard-Mihai Burtescu <edy.burt@gmail.com>2016-11-28 04:18:10 +0200
commit962633cdbbe2ce87c1311edbaa0d4e0aca022b6d (patch)
treea878ca26d71df3b679ce9cf775cc7359aef1100d /src/librustc_metadata
parentbc096549e84d1edbd051f0b42662c038dd935ff6 (diff)
downloadrust-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.rs11
-rw-r--r--src/librustc_metadata/encoder.rs2
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("")