From ce211434a6501e88cb83462f2443db085f1557d3 Mon Sep 17 00:00:00 2001 From: Lenard Pratt Date: Mon, 15 Apr 2019 11:01:29 +0100 Subject: Added macro resolution and expansion --- crates/ra_hir/src/resolve.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'crates/ra_hir/src/resolve.rs') diff --git a/crates/ra_hir/src/resolve.rs b/crates/ra_hir/src/resolve.rs index f2c85eb66..1def032f9 100644 --- a/crates/ra_hir/src/resolve.rs +++ b/crates/ra_hir/src/resolve.rs @@ -6,6 +6,7 @@ use rustc_hash::FxHashMap; use crate::{ ModuleDef, code_model_api::Crate, + MacroDefId, db::HirDatabase, name::{Name, KnownName}, nameres::{PerNs, CrateDefMap, CrateModuleId}, @@ -130,6 +131,10 @@ impl Resolver { resolution } + pub fn resolve_macro_call(&self, name: &Name) -> Option<&MacroDefId> { + self.module().and_then(|(module, _)| module.find_macro(name)) + } + /// Returns the resolved path segments /// Which may be fully resolved, empty or partially resolved. pub(crate) fn resolve_path_segments(&self, db: &impl HirDatabase, path: &Path) -> PathResult { @@ -192,7 +197,7 @@ impl Resolver { .flatten() } - fn module(&self) -> Option<(&CrateDefMap, CrateModuleId)> { + pub(crate) fn module(&self) -> Option<(&CrateDefMap, CrateModuleId)> { self.scopes.iter().rev().find_map(|scope| match scope { Scope::ModuleScope(m) => Some((&*m.crate_def_map, m.module_id)), -- cgit v1.2.3