Skip to main content

luaur_analysis/methods/
replace_generics_is_dirty_instantiation.rs

1use crate::enums::table_state::TableState;
2use crate::records::generic_type::GenericType;
3use crate::records::replace_generics::ReplaceGenerics;
4use crate::records::table_type::TableType;
5use crate::type_aliases::type_id::TypeId;
6
7impl ReplaceGenerics {
8    pub fn is_dirty_type_id(&self, ty: TypeId) -> bool {
9        let log = self.base.base.log;
10
11        let ttv = unsafe { (*log).txn_log_get_mutable::<TableType, TypeId>(ty) };
12        if !ttv.is_null() {
13            return unsafe { (*ttv).state } == TableState::Generic;
14        }
15
16        let gtv = unsafe { (*log).txn_log_get_mutable::<GenericType, TypeId>(ty) };
17        !gtv.is_null() && self.generics.iter().any(|&generic| generic == ty)
18    }
19}