Unnamed repository; edit this file 'description' to name the repository.
Add public function for resolving `ast::Expr` to `hir::Callable`
Vincent Esche 2024-02-28
parent 0ac05c0 · commit ed34978
-rw-r--r--crates/hir/src/semantics.rs4
-rw-r--r--crates/hir/src/source_analyzer.rs8
2 files changed, 12 insertions, 0 deletions
diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs
index 1fb6570b6a..cfda8d4f93 100644
--- a/crates/hir/src/semantics.rs
+++ b/crates/hir/src/semantics.rs
@@ -1120,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)
}
diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs
index bcc9111f2b..ffec4c2149 100644
--- a/crates/hir/src/source_analyzer.rs
+++ b/crates/hir/src/source_analyzer.rs
@@ -303,6 +303,14 @@ impl SourceAnalyzer {
}
}
+ pub(crate) fn resolve_expr_as_callable(
+ &self,
+ db: &dyn HirDatabase,
+ call: &ast::Expr,
+ ) -> Option<Callable> {
+ self.type_of_expr(db, &call.clone())?.0.as_callable(db)
+ }
+
pub(crate) fn resolve_field(
&self,
db: &dyn HirDatabase,