use crate::functions::get_base_symbol::get_base_symbol;
use crate::records::scope::Scope;
use crate::records::symbol::Symbol;
use crate::type_aliases::scope_ptr_scope::ScopePtr;
impl Scope {
pub fn inherit_refinements(&mut self, child_scope: &ScopePtr) {
for (k, a) in unsafe { &(*child_scope).rvalue_refinements }.iter() {
if self.lookup_def_id(*k).is_some() {
*self.rvalue_refinements.get_or_insert(*k) = *a;
}
}
for (k, a) in unsafe { &(*child_scope).refinements } {
let symbol: Symbol = get_base_symbol(k);
if self.lookup_symbol(symbol).is_some() {
self.refinements.insert(k.clone(), *a);
}
}
}
}