Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/resolver.rs')
-rw-r--r--crates/hir-def/src/resolver.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/crates/hir-def/src/resolver.rs b/crates/hir-def/src/resolver.rs
index ba0a2c0224..2ac1516ec0 100644
--- a/crates/hir-def/src/resolver.rs
+++ b/crates/hir-def/src/resolver.rs
@@ -589,6 +589,16 @@ impl Resolver {
})
}
+ pub fn type_owner(&self) -> Option<TypeOwnerId> {
+ self.scopes().find_map(|scope| match scope {
+ Scope::BlockScope(_) => None,
+ &Scope::GenericParams { def, .. } => Some(def.into()),
+ &Scope::ImplDefScope(id) => Some(id.into()),
+ &Scope::AdtScope(adt) => Some(adt.into()),
+ Scope::ExprScope(it) => Some(it.owner.into()),
+ })
+ }
+
pub fn impl_def(&self) -> Option<ImplId> {
self.scopes().find_map(|scope| match scope {
Scope::ImplDefScope(def) => Some(*def),
@@ -1079,7 +1089,6 @@ impl HasResolver for TypeOwnerId {
TypeOwnerId::TypeAliasId(it) => it.resolver(db),
TypeOwnerId::ImplId(it) => it.resolver(db),
TypeOwnerId::EnumVariantId(it) => it.resolver(db),
- TypeOwnerId::ModuleId(it) => it.resolver(db),
}
}
}