luaur-analysis 0.1.3

Luau type checker and type inference (Rust).
Documentation
use crate::functions::get_type_alt_j::get_type_id;
use crate::records::extern_type::ExternType;
use crate::records::function_type::FunctionType;
use crate::records::replacer::Replacer;
use crate::type_aliases::type_id::TypeId;
use crate::type_aliases::type_pack_id::TypePackId;
use luaur_common::records::dense_hash_map::DenseHashMap;

impl Replacer {
    pub fn ignore_children(&self, ty: TypeId) -> bool {
        unsafe {
            if !get_type_id::<ExternType>(ty).is_null() {
                return true;
            }

            if let Some(ftv) = get_type_id::<FunctionType>(ty).as_ref() {
                if ftv.has_no_free_or_generic_types {
                    return false;
                }

                for &generic in &ftv.generics {
                    if unsafe { (*self.replacements).find(&generic).is_some() } {
                        return true;
                    }
                }

                for &generic in &ftv.generic_packs {
                    if unsafe { (*self.replacement_packs).find(&generic).is_some() } {
                        return true;
                    }
                }
            }
        }

        false
    }
}