aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/nameres.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/nameres.rs')
-rw-r--r--crates/ra_hir/src/nameres.rs18
1 files changed, 16 insertions, 2 deletions
diff --git a/crates/ra_hir/src/nameres.rs b/crates/ra_hir/src/nameres.rs
index aa26345b2..6b1160aa7 100644
--- a/crates/ra_hir/src/nameres.rs
+++ b/crates/ra_hir/src/nameres.rs
@@ -320,8 +320,22 @@ impl CrateDefMap {
320 (res.resolved_def, res.segment_index) 320 (res.resolved_def, res.segment_index)
321 } 321 }
322 322
323 pub(crate) fn find_macro(&self, name: &Name) -> Option<MacroDefId> { 323 pub(crate) fn find_macro(
324 self.public_macros.get(name).or(self.local_macros.get(name)).map(|it| *it) 324 &self,
325 db: &impl DefDatabase,
326 original_module: CrateModuleId,
327 path: &Path,
328 ) -> Option<MacroDefId> {
329 let name = path.expand_macro_expr()?;
330 // search local first
331 // FIXME: Remove public_macros check when we have a correct local_macors implementation
332 let local = self.public_macros.get(&name).or(self.local_macros.get(&name)).map(|it| *it);
333 if local.is_some() {
334 return local;
335 }
336
337 let res = self.resolve_path_fp_with_macro(db, ResolveMode::Other, original_module, path);
338 res.resolved_def.right().map(|m| m.id)
325 } 339 }
326 340
327 // Returns Yes if we are sure that additions to `ItemMap` wouldn't change 341 // Returns Yes if we are sure that additions to `ItemMap` wouldn't change