luaur_analysis/methods/
constraint_solver_inherit_blocks.rs1use crate::records::constraint::Constraint;
2use crate::records::constraint_graph::ConstraintGraph;
3use crate::records::constraint_solver::ConstraintSolver;
4use crate::type_aliases::blocked_constraint_id::BlockedConstraintId;
5use crate::FFlag;
6use luaur_common::records::dense_hash_set::DenseHashSet;
7
8impl ConstraintSolver {
9 pub fn inherit_blocks(&mut self, source: *const Constraint, addition: *const Constraint) {
10 if FFlag::LuauConstraintGraph.get() {
11 unsafe {
12 (*self.cgraph).inherit_blocks(
13 crate::type_aliases::constraint_vertex::ConstraintVertex::V2(source),
14 crate::type_aliases::constraint_vertex::ConstraintVertex::V2(addition),
15 )
16 }
17 } else {
18 let blocked_constraints: alloc::vec::Vec<*const Constraint> = match self
21 .deprecated_blocked
22 .get(&BlockedConstraintId::V2(source))
23 {
24 Some(blocked_set) => blocked_set.iter().copied().collect(),
25 None => alloc::vec::Vec::new(),
26 };
27 for blocked_constraint in blocked_constraints {
28 self.block_not_null_constraint_not_null_constraint(addition, blocked_constraint);
29 }
30 }
31 }
32}