luaur_analysis/methods/
scope_lookup_scope_alt_b.rs1use crate::records::scope::Scope;
2use crate::type_aliases::def_id_def::DefId;
3use crate::type_aliases::type_id::TypeId;
4
5impl Scope {
6 pub fn lookup_def_id(&self, def: DefId) -> Option<TypeId> {
8 let mut current: Option<&Scope> = Some(self);
9 while let Some(scope) = current {
10 if let Some(ty) = scope.rvalue_refinements.find(&def) {
11 return Some(*ty);
12 }
13 if let Some(ty) = scope.lvalue_types.find(&def) {
14 return Some(*ty);
15 }
16
17 current = scope.parent.as_ref().map(|scoped| scoped.as_ref());
18 }
19
20 None
21 }
22}