diff --git a/crates/ra_hir/src/macros.rs b/crates/ra_hir/src/macros.rs index 932e2b5745d..3eedd9e2d1b 100644 --- a/crates/ra_hir/src/macros.rs +++ b/crates/ra_hir/src/macros.rs @@ -16,9 +16,9 @@ ra_db::impl_numeric_id!(MacroCallId); #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct MacroCallLoc { - source_root_id: SourceRootId, - module_id: ModuleId, - source_item_id: SourceItemId, + pub(crate) source_root_id: SourceRootId, + pub(crate) module_id: ModuleId, + pub(crate) source_item_id: SourceItemId, } impl MacroCallId { diff --git a/crates/ra_hir/src/module/nameres.rs b/crates/ra_hir/src/module/nameres.rs index 68eb02a980a..46b1dc0b1c3 100644 --- a/crates/ra_hir/src/module/nameres.rs +++ b/crates/ra_hir/src/module/nameres.rs @@ -31,6 +31,7 @@ use crate::{ Path, PathKind, HirDatabase, Crate, Name, AsName, + macros::{MacroCallId, MacroCallLoc}, module::{Module, ModuleId, ModuleTree}, }; @@ -354,6 +355,18 @@ where if item.kind == MODULE { continue; } + if item.kind == MACRO_CALL { + let loc = MacroCallLoc { + source_root_id: self.source_root, + module_id, + source_item_id: SourceItemId { + file_id, + item_id: Some(item.id), + }, + }; + let id = loc.id(self.db); + continue; + } // depending on the item kind, the location can define something in // the values namespace, the types namespace, or both let kind = DefKind::for_syntax_kind(item.kind);