Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/semantics.rs')
-rw-r--r--crates/hir/src/semantics.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs
index a869029d09..cfda8d4f93 100644
--- a/crates/hir/src/semantics.rs
+++ b/crates/hir/src/semantics.rs
@@ -969,8 +969,10 @@ impl<'db> SemanticsImpl<'db> {
match value.parent() {
Some(parent) => Some(InFile::new(file_id, parent)),
None => {
- self.cache(value.clone(), file_id);
- Some(file_id.macro_file()?.call_node(db))
+ let call_node = file_id.macro_file()?.call_node(db);
+ // cache the node
+ self.parse_or_expand(call_node.file_id);
+ Some(call_node)
}
}
})
@@ -1118,6 +1120,10 @@ impl<'db> SemanticsImpl<'db> {
self.analyze(pat.syntax())?.binding_mode_of_pat(self.db, pat)
}
+ pub fn resolve_expr_as_callable(&self, call: &ast::Expr) -> Option<Callable> {
+ self.analyze(call.syntax())?.resolve_expr_as_callable(self.db, call)
+ }
+
pub fn resolve_method_call(&self, call: &ast::MethodCallExpr) -> Option<Function> {
self.analyze(call.syntax())?.resolve_method_call(self.db, call)
}