luaur_analysis/methods/
quantifier_visit_quantify_alt_c.rs1use crate::enums::polarity::Polarity;
2use crate::functions::as_mutable_type_pack::as_mutable_type_pack_id;
3use crate::records::free_type_pack::FreeTypePack;
4use crate::records::generic_type_pack::GenericTypePack;
5use crate::records::quantifier::Quantifier;
6use crate::records::type_pack_var::TypePackVar;
7use crate::type_aliases::type_pack_id::TypePackId;
8
9impl Quantifier {
10 pub fn visit_type_pack_id_free_type_pack(
11 &mut self,
12 tp: TypePackId,
13 ftp: &FreeTypePack,
14 ) -> bool {
15 self.seen_mutable_type = true;
16
17 if !self.level.subsumes(&ftp.level) {
18 return false;
19 }
20
21 let mut gtp = GenericTypePack {
23 index: 0,
24 level: Default::default(),
25 scope: core::ptr::null_mut(),
26 name: Default::default(),
27 explicitName: false,
28 polarity: Polarity::None,
29 };
30 gtp.generic_type_pack_type_level(self.level);
31
32 unsafe {
33 *as_mutable_type_pack_id(tp) = TypePackVar::from(gtp);
34 }
35
36 self.generic_packs.push(tp);
37 true
38 }
39}