Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/source_analyzer.rs')
| -rw-r--r-- | crates/hir/src/source_analyzer.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs index 08d0a02d79..b12461818e 100644 --- a/crates/hir/src/source_analyzer.rs +++ b/crates/hir/src/source_analyzer.rs @@ -246,6 +246,18 @@ impl SourceAnalyzer { } } + pub(crate) fn resolve_path_as_macro( + &self, + db: &dyn HirDatabase, + path: &ast::Path, + ) -> Option<MacroDef> { + // This must be a normal source file rather than macro file. + let hygiene = Hygiene::new(db.upcast(), self.file_id); + let ctx = body::LowerCtx::with_hygiene(db.upcast(), &hygiene); + let hir_path = Path::from_src(path.clone(), &ctx)?; + resolve_hir_path_as_macro(db, &self.resolver, &hir_path) + } + pub(crate) fn resolve_path( &self, db: &dyn HirDatabase, |