aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_def/src/nameres.rs
diff options
context:
space:
mode:
authorJonas Schievink <[email protected]>2021-02-02 17:02:12 +0000
committerJonas Schievink <[email protected]>2021-02-02 17:02:12 +0000
commit5914f86d473f34e0fa78dc150024b07bd26a2db9 (patch)
treec8c20aff862d670f1baebd33d95e645a1281ca7f /crates/hir_def/src/nameres.rs
parent12e8cc4aa29f616e43b4951e18b1f1f231e539a3 (diff)
Fix resolution of `crate` paths from within blocks
They resolve to the crate root, not the DefMap's root module (which can be a block)
Diffstat (limited to 'crates/hir_def/src/nameres.rs')
-rw-r--r--crates/hir_def/src/nameres.rs5
1 files changed, 5 insertions, 0 deletions
diff --git a/crates/hir_def/src/nameres.rs b/crates/hir_def/src/nameres.rs
index 5efc2fe47..0a15fc470 100644
--- a/crates/hir_def/src/nameres.rs
+++ b/crates/hir_def/src/nameres.rs
@@ -275,6 +275,11 @@ impl DefMap {
275 ModuleId { krate: self.krate, local_id, block } 275 ModuleId { krate: self.krate, local_id, block }
276 } 276 }
277 277
278 pub(crate) fn crate_root(&self) -> ModuleId {
279 let (root_map, _) = self.ancestor_maps(self.root).last().unwrap();
280 root_map.module_id(root_map.root)
281 }
282
278 pub(crate) fn resolve_path( 283 pub(crate) fn resolve_path(
279 &self, 284 &self,
280 db: &dyn DefDatabase, 285 db: &dyn DefDatabase,