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.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/crates/hir-def/src/resolver.rs b/crates/hir-def/src/resolver.rs
index 16988ddf04..416bcbb096 100644
--- a/crates/hir-def/src/resolver.rs
+++ b/crates/hir-def/src/resolver.rs
@@ -696,6 +696,15 @@ impl<'db> Resolver<'db> {
&def_map[local_id].scope
}
+ pub fn item_scopes(&self) -> impl Iterator<Item = &ItemScope> {
+ self.scopes()
+ .filter_map(move |scope| match scope {
+ Scope::BlockScope(m) => Some(&m.def_map[m.module_id].scope),
+ _ => None,
+ })
+ .chain(std::iter::once(&self.module_scope.def_map[self.module_scope.module_id].scope))
+ }
+
pub fn krate(&self) -> Crate {
self.module_scope.def_map.krate()
}