aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/source_analyzer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/source_analyzer.rs')
-rw-r--r--crates/ra_hir/src/source_analyzer.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/crates/ra_hir/src/source_analyzer.rs b/crates/ra_hir/src/source_analyzer.rs
index 1d6c47103..1f1bdc0d8 100644
--- a/crates/ra_hir/src/source_analyzer.rs
+++ b/crates/ra_hir/src/source_analyzer.rs
@@ -115,6 +115,7 @@ impl SourceAnalyzer {
115 Some(res) 115 Some(res)
116 } 116 }
117 117
118 // TODO: rename
118 pub(crate) fn type_of(&self, db: &dyn HirDatabase, expr: &ast::Expr) -> Option<Type> { 119 pub(crate) fn type_of(&self, db: &dyn HirDatabase, expr: &ast::Expr) -> Option<Type> {
119 let expr_id = self.expr_id(db, expr)?; 120 let expr_id = self.expr_id(db, expr)?;
120 let ty = self.infer.as_ref()?[expr_id].clone(); 121 let ty = self.infer.as_ref()?[expr_id].clone();
@@ -127,6 +128,17 @@ impl SourceAnalyzer {
127 Type::new_with_resolver(db, &self.resolver, ty) 128 Type::new_with_resolver(db, &self.resolver, ty)
128 } 129 }
129 130
131 pub(crate) fn type_of_self(
132 &self,
133 db: &dyn HirDatabase,
134 param: &ast::SelfParam,
135 ) -> Option<Type> {
136 let src = InFile { file_id: self.file_id, value: param };
137 let pat_id = self.body_source_map.as_ref()?.node_self_param(src)?;
138 let ty = self.infer.as_ref()?[pat_id].clone();
139 Type::new_with_resolver(db, &self.resolver, ty)
140 }
141
130 pub(crate) fn resolve_method_call( 142 pub(crate) fn resolve_method_call(
131 &self, 143 &self,
132 db: &dyn HirDatabase, 144 db: &dyn HirDatabase,