From 5914f86d473f34e0fa78dc150024b07bd26a2db9 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Tue, 2 Feb 2021 18:02:12 +0100 Subject: 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) --- crates/hir_def/src/nameres.rs | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'crates/hir_def/src/nameres.rs') 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 { 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, -- cgit v1.2.3