Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/lib.rs')
| -rw-r--r-- | crates/hir/src/lib.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index 526e90bd0b..0ced029b84 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -1483,6 +1483,19 @@ impl SelfParam { .and_then(|params| params.self_param()) .map(|value| InFile { file_id, value }) } + + pub fn ty(&self, db: &dyn HirDatabase) -> Type { + let resolver = self.func.resolver(db.upcast()); + let krate = self.func.lookup(db.upcast()).container.module(db.upcast()).krate(); + let ctx = hir_ty::TyLoweringContext::new(db, &resolver); + let environment = db.trait_environment(self.func.into()); + + Type { + krate, + env: environment.clone(), + ty: ctx.lower_ty(&db.function_data(self.func).params[0].1), + } + } } impl HasVisibility for Function { |