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.rs21
1 files changed, 4 insertions, 17 deletions
diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs
index fe1d5b5764..be0116862b 100644
--- a/crates/hir/src/source_analyzer.rs
+++ b/crates/hir/src/source_analyzer.rs
@@ -839,25 +839,12 @@ impl SourceAnalyzer {
db: &dyn HirDatabase,
macro_call: InFile<&ast::MacroCall>,
) -> Option<MacroFileId> {
+ let krate = self.resolver.krate();
// FIXME: This causes us to parse, generally this is the wrong approach for resolving a
// macro call to a macro call id!
- let macro_call_id = macro_call
- .as_call_id(
- db.upcast(),
- self.resolver.module(),
- |path| {
- self.resolver.resolve_path_as_macro_def(
- db.upcast(),
- path,
- Some(MacroSubNs::Bang),
- )
- },
- |module| {
- self.resolver.module().def_map(db.upcast()).path_for_module(db.upcast(), module)
- },
- )
- .ok()?
- .value?;
+ let macro_call_id = macro_call.as_call_id(db.upcast(), krate, |path| {
+ self.resolver.resolve_path_as_macro_def(db.upcast(), path, Some(MacroSubNs::Bang))
+ })?;
// why the 64?
Some(macro_call_id.as_macro_file()).filter(|it| it.expansion_level(db.upcast()) < 64)
}