Fix DefKey lookup for proc-macro crates.
This commit is contained in:
parent
b176285ba7
commit
a1a3bf2b31
1 changed files with 19 additions and 2 deletions
|
|
@ -14,7 +14,8 @@ use cstore::{self, CrateMetadata, MetadataBlob, NativeLibrary};
|
|||
use schema::*;
|
||||
|
||||
use rustc_data_structures::sync::{Lrc, ReadGuard};
|
||||
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};
|
||||
|
|
@ -1115,7 +1116,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`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue