Skip to main content

luaur_analysis/methods/
state_dot_can_duplicate_primitive.rs

1use crate::functions::get_type_alt_j::get_type_id;
2use crate::records::any_type::AnyType;
3use crate::records::never_type::NeverType;
4use crate::records::primitive_type::PrimitiveType;
5use crate::records::state_dot::StateDot;
6use crate::records::unknown_type::UnknownType;
7use crate::type_aliases::bound_type::BoundType;
8use crate::type_aliases::type_id::TypeId;
9
10impl StateDot {
11    pub fn can_duplicate_primitive(&self, ty: TypeId) -> bool {
12        let bound = unsafe { get_type_id::<BoundType>(ty) };
13        if !bound.is_null() {
14            return false;
15        }
16
17        let primitive = unsafe { get_type_id::<PrimitiveType>(ty) };
18        if !primitive.is_null() {
19            return true;
20        }
21
22        let any = unsafe { get_type_id::<AnyType>(ty) };
23        if !any.is_null() {
24            return true;
25        }
26
27        let unknown = unsafe { get_type_id::<UnknownType>(ty) };
28        if !unknown.is_null() {
29            return true;
30        }
31
32        let never = unsafe { get_type_id::<NeverType>(ty) };
33        !never.is_null()
34    }
35}