aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/resolve.rs
diff options
context:
space:
mode:
authorLenard Pratt <[email protected]>2019-04-15 11:01:29 +0100
committerLenard Pratt <[email protected]>2019-04-22 21:35:44 +0100
commitce211434a6501e88cb83462f2443db085f1557d3 (patch)
tree2b0b2118fa38046d7b527ea1ea81d1c01a9a8207 /crates/ra_hir/src/resolve.rs
parentafaeb18910414166801e3ca51272cfa3661175a4 (diff)
Added macro resolution and expansion
Diffstat (limited to 'crates/ra_hir/src/resolve.rs')
-rw-r--r--crates/ra_hir/src/resolve.rs7
1 files changed, 6 insertions, 1 deletions
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;
6use crate::{ 6use crate::{
7 ModuleDef, 7 ModuleDef,
8 code_model_api::Crate, 8 code_model_api::Crate,
9 MacroDefId,
9 db::HirDatabase, 10 db::HirDatabase,
10 name::{Name, KnownName}, 11 name::{Name, KnownName},
11 nameres::{PerNs, CrateDefMap, CrateModuleId}, 12 nameres::{PerNs, CrateDefMap, CrateModuleId},
@@ -130,6 +131,10 @@ impl Resolver {
130 resolution 131 resolution
131 } 132 }
132 133
134 pub fn resolve_macro_call(&self, name: &Name) -> Option<&MacroDefId> {
135 self.module().and_then(|(module, _)| module.find_macro(name))
136 }
137
133 /// Returns the resolved path segments 138 /// Returns the resolved path segments
134 /// Which may be fully resolved, empty or partially resolved. 139 /// Which may be fully resolved, empty or partially resolved.
135 pub(crate) fn resolve_path_segments(&self, db: &impl HirDatabase, path: &Path) -> PathResult { 140 pub(crate) fn resolve_path_segments(&self, db: &impl HirDatabase, path: &Path) -> PathResult {
@@ -192,7 +197,7 @@ impl Resolver {
192 .flatten() 197 .flatten()
193 } 198 }
194 199
195 fn module(&self) -> Option<(&CrateDefMap, CrateModuleId)> { 200 pub(crate) fn module(&self) -> Option<(&CrateDefMap, CrateModuleId)> {
196 self.scopes.iter().rev().find_map(|scope| match scope { 201 self.scopes.iter().rev().find_map(|scope| match scope {
197 Scope::ModuleScope(m) => Some((&*m.crate_def_map, m.module_id)), 202 Scope::ModuleScope(m) => Some((&*m.crate_def_map, m.module_id)),
198 203