Skip to main content

luaur_analysis/methods/
constraint_graph_inherit_blocks.rs

1use crate::records::constraint_graph::ConstraintGraph;
2use crate::type_aliases::constraint_vertex::ConstraintVertex;
3
4impl ConstraintGraph {
5    pub fn inherit_blocks(
6        &mut self,
7        existing_vertex: ConstraintVertex,
8        new_vertex: ConstraintVertex,
9    ) {
10        let existing_reverse_deps = self.find_reverse_dependency_list(existing_vertex.clone());
11        let mut new_reverse_deps = self.find_reverse_dependency_list(new_vertex.clone());
12
13        let existing_reverse_deps_ref = unsafe { existing_reverse_deps.as_ref() };
14
15        for existing_rdep in existing_reverse_deps_ref.order.iter() {
16            let existing_rdep = existing_rdep.clone();
17
18            unsafe { new_reverse_deps.as_mut() }.insert(existing_rdep.clone());
19
20            let mut new_deps = self.find_dependency_list(existing_rdep.clone());
21            unsafe { new_deps.as_mut() }.insert(new_vertex.clone());
22        }
23    }
24}