diff options
Diffstat (limited to 'crates/ra_hir/src/source_analyzer.rs')
-rw-r--r-- | crates/ra_hir/src/source_analyzer.rs | 12 |
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, |