Skip to main content

luaur_analysis/records/
unifier_2.rs

1use crate::records::builtin_types::BuiltinTypes;
2use crate::records::internal_error_reporter::InternalErrorReporter;
3use crate::records::scope::Scope;
4use crate::records::type_arena::TypeArena;
5use crate::records::type_check_limits::TypeCheckLimits;
6use crate::records::type_pair_hash::TypePairHash;
7use crate::type_aliases::constraint_v::ConstraintV;
8use crate::type_aliases::type_id::TypeId;
9use crate::type_aliases::type_pack_id::TypePackId;
10use alloc::vec::Vec;
11use core::ffi::c_void;
12use core::ptr::NonNull;
13use luaur_common::records::dense_hash_map::DenseHashMap;
14use luaur_common::records::dense_hash_set::DenseHashSet;
15
16#[derive(Debug)]
17pub struct Unifier2 {
18    pub(crate) arena: NonNull<TypeArena>,
19    pub(crate) builtin_types: NonNull<BuiltinTypes>,
20    pub(crate) scope: NonNull<Scope>,
21    pub(crate) ice: NonNull<InternalErrorReporter>,
22    pub(crate) limits: TypeCheckLimits,
23    pub(crate) seen_type_pairings: DenseHashSet<(TypeId, TypeId), TypePairHash>,
24    pub(crate) seen_type_pack_pairings: DenseHashSet<(TypePackId, TypePackId), TypePairHash>,
25    pub(crate) expanded_free_types: DenseHashMap<TypeId, Vec<TypeId>>,
26    pub(crate) generic_substitutions: DenseHashMap<TypeId, TypeId>,
27    pub(crate) generic_pack_substitutions: DenseHashMap<TypePackId, TypePackId>,
28    pub(crate) new_fresh_types: Vec<TypeId>,
29    pub(crate) new_fresh_type_packs: Vec<TypePackId>,
30    pub(crate) iteration_count: i32,
31    pub(crate) recursion_count: i32,
32    pub(crate) recursion_limit: i32,
33    pub(crate) incomplete_subtypes: Vec<ConstraintV>,
34    pub(crate) uninhabited_type_functions: *mut DenseHashSet<*const c_void>,
35}