luaur_analysis/methods/
unifier_2_unify_unifier_2_alt_m.rs1use crate::enums::unify_result::UnifyResult;
2use crate::records::any_type::AnyType;
3use crate::records::builtin_types::BuiltinTypes;
4use crate::records::table_type::TableType;
5use crate::records::unifier_2::Unifier2;
6use crate::type_aliases::type_id::TypeId;
7use core::ptr::NonNull;
8
9impl Unifier2 {
10 pub fn unify_any_type_table_type(
11 &mut self,
12 _sub_any: &AnyType,
13 super_table: &TableType,
14 ) -> UnifyResult {
15 let builtin_types_ptr: NonNull<BuiltinTypes> = self.builtin_types;
16 let builtin_types_ref: &BuiltinTypes = unsafe { builtin_types_ptr.as_ref() };
17 let any_type_id: TypeId = builtin_types_ref.anyType;
18
19 for (_prop_name, prop) in &super_table.props {
20 if let Some(read_ty) = prop.read_ty {
21 let _ = self.unify_type_id_type_id(any_type_id, read_ty);
22 }
23
24 if let Some(write_ty) = prop.write_ty {
25 let _ = self.unify_type_id_type_id(write_ty, any_type_id);
26 }
27 }
28
29 if let Some(indexer) = &super_table.indexer {
30 let _ = self.unify_type_id_type_id(any_type_id, indexer.index_type);
31 let _ = self.unify_type_id_type_id(any_type_id, indexer.index_result_type);
32 }
33
34 UnifyResult::Ok
35 }
36}