luaur_analysis/methods/
constraint_solver_is_blocked_constraint_solver_alt_b.rs1use crate::functions::follow_type_pack::follow_type_pack_id;
2use crate::functions::get_type_pack::get_type_pack_id;
3use crate::records::blocked_type_pack::BlockedTypePack;
4use crate::records::constraint_solver::ConstraintSolver;
5use crate::records::type_function_instance_type_pack::TypeFunctionInstanceTypePack;
6use crate::type_aliases::type_pack_id::TypePackId;
7
8impl ConstraintSolver {
9 pub fn is_blocked_type_pack_id(&self, tp: TypePackId) -> bool {
10 let tp = unsafe { follow_type_pack_id(tp) };
11
12 if !unsafe { get_type_pack_id::<TypeFunctionInstanceTypePack>(tp) }.is_null() {
13 return !self
14 .uninhabited_type_functions
15 .contains(&(tp as *const core::ffi::c_void));
16 }
17
18 !unsafe { get_type_pack_id::<BlockedTypePack>(tp) }.is_null()
19 }
20}