aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/resolve.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/resolve.rs')
-rw-r--r--crates/ra_hir/src/resolve.rs17
1 files changed, 10 insertions, 7 deletions
diff --git a/crates/ra_hir/src/resolve.rs b/crates/ra_hir/src/resolve.rs
index 347bcf27d..1b987c1b6 100644
--- a/crates/ra_hir/src/resolve.rs
+++ b/crates/ra_hir/src/resolve.rs
@@ -2,11 +2,11 @@
2use std::sync::Arc; 2use std::sync::Arc;
3 3
4use rustc_hash::{FxHashMap, FxHashSet}; 4use rustc_hash::{FxHashMap, FxHashSet};
5use either::Either;
5 6
6use crate::{ 7use crate::{
7 ModuleDef, Trait, 8 ModuleDef, Trait, MacroDef,
8 code_model::Crate, 9 code_model::Crate,
9 MacroDefId,
10 db::HirDatabase, 10 db::HirDatabase,
11 name::{Name, KnownName}, 11 name::{Name, KnownName},
12 nameres::{PerNs, CrateDefMap, CrateModuleId}, 12 nameres::{PerNs, CrateDefMap, CrateModuleId},
@@ -130,13 +130,16 @@ impl Resolver {
130 resolution 130 resolution
131 } 131 }
132 132
133 pub(crate) fn resolve_macro_call( 133 pub(crate) fn resolve_path_as_macro(
134 &self, 134 &self,
135 db: &impl HirDatabase, 135 db: &impl HirDatabase,
136 path: Option<Path>, 136 path: &Path,
137 ) -> Option<MacroDefId> { 137 ) -> Option<MacroDef> {
138 let m = self.module()?; 138 let (item_map, module) = self.module()?;
139 m.0.find_macro(db, m.1, &path?) 139 match item_map.resolve_path_with_macro(db, module, path) {
140 (Either::Right(macro_def), None) => Some(macro_def),
141 _ => None,
142 }
140 } 143 }
141 144
142 /// Returns the resolved path segments 145 /// Returns the resolved path segments