Skip to content

Commit

Permalink
Fix DefKey lookup for proc-macro crates.
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelwoerister authored and alexcrichton committed Mar 24, 2018
1 parent 73364a3 commit a1d7c15
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions src/librustc_metadata/decoder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
use cstore::{self, CrateMetadata, MetadataBlob, NativeLibrary};
use schema::*;

use rustc::hir::map::{DefKey, DefPath, DefPathData, DefPathHash};
use rustc::hir::map::{DefKey, DefPath, DefPathData, DefPathHash,
DisambiguatedDefPathData};
use rustc::hir;
use rustc::middle::cstore::{LinkagePreference, ExternConstBody,
ExternBodyNestedBodies};
Expand Down Expand Up @@ -1061,7 +1062,23 @@ impl<'a, 'tcx> CrateMetadata {

#[inline]
pub fn def_key(&self, index: DefIndex) -> DefKey {
self.def_path_table.def_key(index)
if !self.is_proc_macro(index) {
self.def_path_table.def_key(index)
} else {
// FIXME(#49271) - It would be better if the DefIds were consistent
// with the DefPathTable, but for proc-macro crates
// they aren't.
let name = self.proc_macros
.as_ref()
.unwrap()[index.to_proc_macro_index()].0;
DefKey {
parent: Some(CRATE_DEF_INDEX),
disambiguated_data: DisambiguatedDefPathData {
data: DefPathData::MacroDef(name.as_str()),
disambiguator: 0,
}
}
}
}

// Returns the path leading to the thing with this `id`.
Expand Down

0 comments on commit a1d7c15

Please sign in to comment.