Skip to main content

luaur_analysis/methods/
constraint_solver_block_constraint_solver.rs

1//! Source: `Analysis/include/Luau/ConstraintSolver.h:330-337` (hand-ported)
2use crate::records::constraint::Constraint;
3use crate::records::constraint_solver::ConstraintSolver;
4
5impl ConstraintSolver {
6    /// C++ `template<typename T> bool block(const T& targets, NotNull<const Constraint> constraint)`
7    /// iterates `targets` (a `TypeId` range) and forwards each to `block(TypeId, ...)`.
8    /// In the Rust port the callers are monomorphized onto
9    /// `block_type_id_not_null_constraint` / `block_type_pack_id_not_null_constraint`
10    /// (and direct loops over the container), so this unbounded template generic has
11    /// no call site and no iterable bound to port faithfully.
12    pub fn block_t_not_null_constraint<T>(
13        &mut self,
14        _targets: &T,
15        _constraint: *const Constraint,
16    ) -> bool {
17        unreachable!(
18            "C++ ConstraintSolver::block<T> template generic; Rust callers use the monomorphized block_type_id/block_type_pack_id overloads — no call site"
19        )
20    }
21}