Skip to main content

ConstraintSolver

Struct ConstraintSolver 

Source
pub struct ConstraintSolver {
Show 33 fields pub arena: *mut TypeArena, pub builtin_types: *mut BuiltinTypes, pub ice_reporter: InternalErrorReporter, pub normalizer: *mut Normalizer, pub type_function_runtime: *mut TypeFunctionRuntime, pub constraint_set: ConstraintSet, pub constraints: Vec<*mut Constraint>, pub scope_to_function: *mut DenseHashMap<*mut Scope, TypeId>, pub root_scope: *mut Scope, pub module: Option<ModulePtr>, pub dfg: *const DataFlowGraph, pub solver_constraints: Vec<Box<Constraint>>, pub solver_constraint_limit: usize, pub unsolved_constraints: Vec<*const Constraint>, pub deprecated_blocked_constraints: HashMap<*const Constraint, usize>, pub deprecated_blocked: HashMap<BlockedConstraintId, DenseHashSet<*const Constraint>>, pub instantiated_aliases: DenseHashMap<InstantiationSignature, TypeId, HashInstantiationSignature>, pub upper_bound_contributors: DenseHashMap<TypeId, Vec<(Location, TypeId)>>, pub deprecated_type_to_constraint_set: HashMap<TypeId, HashSet<*const Constraint>>, pub deprecated_constraint_to_mutated_types: DenseHashMap<*const Constraint, TypeIds>, pub uninhabited_type_functions: DenseHashSet<*const c_void>, pub seen_constraints: DenseHashMap<SubtypeConstraintRecord, *mut Constraint, HashSubtypeConstraintRecord>, pub generalized_types_: DenseHashSet<TypeId>, pub generalized_types: *const DenseHashSet<TypeId>, pub errors: ErrorVec, pub module_resolver: *mut ModuleResolver, pub require_cycles: Vec<RequireCycle>, pub logger: *mut DcrLogger, pub limits: TypeCheckLimits, pub type_functions_to_finalize: DenseHashMap<TypeId, *const Constraint>, pub opts: ToStringOptions, pub cgraph: *mut ConstraintGraph, pub subtyping: *mut Subtyping,
}

Fields§

§arena: *mut TypeArena§builtin_types: *mut BuiltinTypes§ice_reporter: InternalErrorReporter§normalizer: *mut Normalizer§type_function_runtime: *mut TypeFunctionRuntime§constraint_set: ConstraintSet§constraints: Vec<*mut Constraint>§scope_to_function: *mut DenseHashMap<*mut Scope, TypeId>§root_scope: *mut Scope§module: Option<ModulePtr>§dfg: *const DataFlowGraph§solver_constraints: Vec<Box<Constraint>>§solver_constraint_limit: usize§unsolved_constraints: Vec<*const Constraint>§deprecated_blocked_constraints: HashMap<*const Constraint, usize>§deprecated_blocked: HashMap<BlockedConstraintId, DenseHashSet<*const Constraint>>§instantiated_aliases: DenseHashMap<InstantiationSignature, TypeId, HashInstantiationSignature>§upper_bound_contributors: DenseHashMap<TypeId, Vec<(Location, TypeId)>>§deprecated_type_to_constraint_set: HashMap<TypeId, HashSet<*const Constraint>>§deprecated_constraint_to_mutated_types: DenseHashMap<*const Constraint, TypeIds>§uninhabited_type_functions: DenseHashSet<*const c_void>§seen_constraints: DenseHashMap<SubtypeConstraintRecord, *mut Constraint, HashSubtypeConstraintRecord>§generalized_types_: DenseHashSet<TypeId>§generalized_types: *const DenseHashSet<TypeId>§errors: ErrorVec§module_resolver: *mut ModuleResolver§require_cycles: Vec<RequireCycle>§logger: *mut DcrLogger§limits: TypeCheckLimits§type_functions_to_finalize: DenseHashMap<TypeId, *const Constraint>§opts: ToStringOptions§cgraph: *mut ConstraintGraph§subtyping: *mut Subtyping

Implementations§

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source

pub fn bind_not_null_constraint_type_id_type_id( &mut self, constraint: *const Constraint, ty: TypeId, bound_to: TypeId, )

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source

pub fn block_t_not_null_constraint<T>( &mut self, _targets: &T, _constraint: *const Constraint, ) -> bool

C++ template<typename T> bool block(const T& targets, NotNull<const Constraint> constraint) iterates targets (a TypeId range) and forwards each to block(TypeId, ...). In the Rust port the callers are monomorphized onto block_type_id_not_null_constraint / block_type_pack_id_not_null_constraint (and direct loops over the container), so this unbounded template generic has no call site and no iterable bound to port faithfully.

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source

pub fn block_type_id_not_null_constraint( &mut self, target: TypeId, constraint: *const Constraint, ) -> bool

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source

pub fn deprecate_d_block( &mut self, target: BlockedConstraintId, constraint: *const Constraint, ) -> bool

Source§

impl ConstraintSolver

Source

pub fn deprecate_d_emplace_not_null_constraint_type_id_args_item<T, Args>( &mut self, constraint: *const Constraint, ty: TypeId, _args: Args, )

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source

pub fn deprecate_d_shift_references(&mut self, source: TypeId, target: TypeId)

Source§

impl ConstraintSolver

Source

pub fn deprecate_d_unblock_(&mut self, progressed: BlockedConstraintId)

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source

pub fn fill_in_discriminant_types( &mut self, constraint: *const Constraint, discriminant_types: &Vec<Option<TypeId>>, )

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source

pub fn generalize_one_type(&mut self, ty: TypeId)

Source§

impl ConstraintSolver

Source

pub fn has_unresolved_constraints(&mut self, ty: TypeId) -> bool

Source§

impl ConstraintSolver

Source

pub fn inherit_blocks( &mut self, source: *const Constraint, addition: *const Constraint, )

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source

pub fn instantiate_function_type( &mut self, function_type_id: TypeId, type_arguments: &Vec<TypeId>, type_pack_arguments: &Vec<TypePackId>, scope: *mut Scope, _location: &Location, ) -> TypeId

Source§

impl ConstraintSolver

Source

pub fn is_blocked_type_id(&self, ty: TypeId) -> bool

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source

pub fn is_done(&self) -> bool

Source§

impl ConstraintSolver

Source

pub fn lookup_table_prop_not_null_constraint_type_id_string_value_context_bool_bool( &mut self, constraint: *const Constraint, subject_type: TypeId, prop_name: &str, context: ValueContext, in_conditional: bool, suppress_simplification: bool, ) -> TablePropLookupResult

Source§

impl ConstraintSolver

Source

pub fn lookup_table_prop_not_null_constraint_type_id_string_value_context_bool_bool_set_type_id( &mut self, constraint: *const Constraint, subject_type: TypeId, prop_name: &str, context: ValueContext, in_conditional: bool, suppress_simplification: bool, seen: &mut DenseHashSet<TypeId>, ) -> TablePropLookupResult

Source§

impl ConstraintSolver

Source

pub fn push_constraint( &mut self, scope: NonNull<Scope>, location: Location, cv: ConstraintV, ) -> NonNull<Constraint>

Source§

impl ConstraintSolver

Source

pub fn randomize(&mut self, seed: u32)

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source

pub fn reproduce_constraints( &mut self, scope: NonNull<Scope>, location: Location, subst: &Substitution, )

Source§

impl ConstraintSolver

Source

pub fn resolve_module( &mut self, info: &ModuleInfo, location: &Location, ) -> TypeId

Source§

impl ConstraintSolver

Source

pub fn constraint_solver_run(&mut self)

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source

pub fn simplify_union( &mut self, scope: *mut Scope, location: Location, left: TypeId, right: TypeId, ) -> TypeId

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source

pub fn try_dispatch_not_null_constraint_bool( &mut self, constraint: *const Constraint, force: bool, ) -> bool

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source§

impl ConstraintSolver

Source

pub fn constraint_solver_try_dispatch_has_indexer( &mut self, _recursion_depth: &mut i32, constraint: *const Constraint, subject_type: TypeId, index_type: TypeId, result_type: TypeId, _seen: &mut DenseHashSet<TypeId>, ) -> bool

Source§

impl ConstraintSolver

Source

pub fn try_dispatch_iterable_function( &mut self, next_ty: TypeId, table_ty: TypeId, c: &IterableConstraint, constraint: *const Constraint, ) -> bool

Source§

impl ConstraintSolver

Source

pub fn try_dispatch_iterable_table( &mut self, iterator_ty: TypeId, c: &IterableConstraint, constraint: *const Constraint, force: bool, ) -> bool

Source§

impl ConstraintSolver

Source

pub fn unblock_type_id_location(&mut self, ty: TypeId, location: Location)

Source§

impl ConstraintSolver

Source

pub fn unblock_type_pack_id_location( &mut self, tp: TypePackId, _location: Location, )

Source§

impl ConstraintSolver

Source

pub fn constraint_solver_unify<TID: UnifyTid>( &mut self, constraint: *const Constraint, sub_ty: TID, super_ty: TID, ) -> bool

Source§

impl ConstraintSolver

Source

pub fn unpack_and_assign( &mut self, dest_types: Vec<TypeId>, src_types: TypePackId, constraint: NonNull<Constraint>, ) -> NonNull<Constraint>

Trait Implementations§

Source§

impl Debug for ConstraintSolver

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.