From e0f305a6bf710f64f789f909da93a8c362823b67 Mon Sep 17 00:00:00 2001 From: uHOOCCOOHu Date: Sat, 7 Sep 2019 00:55:58 +0800 Subject: Support textual scoped macros --- crates/ra_hir/src/nameres.rs | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'crates/ra_hir/src/nameres.rs') diff --git a/crates/ra_hir/src/nameres.rs b/crates/ra_hir/src/nameres.rs index 7de422128..e6bf0e90c 100644 --- a/crates/ra_hir/src/nameres.rs +++ b/crates/ra_hir/src/nameres.rs @@ -139,6 +139,7 @@ pub(crate) struct ModuleData { pub struct ModuleScope { items: FxHashMap, macros: FxHashMap, + textual_macros: FxHashMap, } static BUILTIN_SCOPE: Lazy> = Lazy::new(|| { @@ -164,6 +165,7 @@ impl ModuleScope { _ => None, }) } + /// It resolves in module scope. Textual scoped macros are ignored here. fn get_item_or_macro(&self, name: &Name) -> Option { match (self.get(name), self.macros.get(name)) { (Some(item), _) if !item.def.is_none() => Some(Either::A(item.def)), @@ -171,6 +173,9 @@ impl ModuleScope { _ => None, } } + fn get_textual_macro(&self, name: &Name) -> Option { + self.textual_macros.get(name).copied() + } } type ItemOrMacro = Either, MacroDef>; -- cgit v1.2.3