luaur_analysis/methods/
state_dot_can_duplicate_primitive.rs1use 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}