Use the right DefMap
when looking up modules
This commit is contained in:
parent
157156276b
commit
cd9659ffce
@ -258,6 +258,10 @@ pub(crate) fn krate(&self) -> CrateId {
|
||||
self.krate
|
||||
}
|
||||
|
||||
pub(crate) fn block_id(&self) -> Option<BlockId> {
|
||||
self.block.as_ref().map(|block| block.block)
|
||||
}
|
||||
|
||||
pub(crate) fn prelude(&self) -> Option<ModuleId> {
|
||||
self.prelude
|
||||
}
|
||||
|
@ -592,7 +592,13 @@ fn record_resolved_import(&mut self, directive: &ImportDirective) {
|
||||
// glob import from same crate => we do an initial
|
||||
// import, and then need to propagate any further
|
||||
// additions
|
||||
let scope = &self.def_map[m.local_id].scope;
|
||||
let def_map;
|
||||
let scope = if m.block == self.def_map.block_id() {
|
||||
&self.def_map[m.local_id].scope
|
||||
} else {
|
||||
def_map = m.def_map(self.db);
|
||||
&def_map[m.local_id].scope
|
||||
};
|
||||
|
||||
// Module scoped macros is included
|
||||
let items = scope
|
||||
|
@ -271,8 +271,16 @@ pub(super) fn resolve_path_fp_with_macro_single(
|
||||
);
|
||||
}
|
||||
|
||||
let def_map;
|
||||
let module_data = if module.block == self.block_id() {
|
||||
&self[module.local_id]
|
||||
} else {
|
||||
def_map = module.def_map(db);
|
||||
&def_map[module.local_id]
|
||||
};
|
||||
|
||||
// Since it is a qualified path here, it should not contains legacy macros
|
||||
self[module.local_id].scope.get(&segment)
|
||||
module_data.scope.get(&segment)
|
||||
}
|
||||
ModuleDefId::AdtId(AdtId::EnumId(e)) => {
|
||||
// enum variant
|
||||
|
Loading…
Reference in New Issue
Block a user