ModuleId { krate: self.krate, local_id, block }
}
+ pub(crate) fn crate_root(&self) -> ModuleId {
+ let (root_map, _) = self.ancestor_maps(self.root).last().unwrap();
+ root_map.module_id(root_map.root)
+ }
+
pub(crate) fn resolve_path(
&self,
db: &dyn DefDatabase,
PathKind::DollarCrate(krate) => {
if krate == self.krate {
mark::hit!(macro_dollar_crate_self);
- PerNs::types(self.module_id(self.root).into(), Visibility::Public)
+ PerNs::types(self.crate_root().into(), Visibility::Public)
} else {
let def_map = db.crate_def_map(krate);
let module = def_map.module_id(def_map.root);
PerNs::types(module.into(), Visibility::Public)
}
}
- PathKind::Crate => PerNs::types(self.module_id(self.root).into(), Visibility::Public),
+ PathKind::Crate => PerNs::types(self.crate_root().into(), Visibility::Public),
// plain import or absolute path in 2015: crate-relative with
// fallback to extern prelude (with the simplification in
// rust-lang/rust#57745)