luaur_analysis/records/
push_scope.rs1use crate::records::dfg_scope::DfgScope;
2use crate::type_aliases::scope_stack::ScopeStack;
3
4#[derive(Debug)]
5pub struct PushScope {
6 pub(crate) stack: *mut ScopeStack,
7 pub(crate) previous_size: usize,
8}
9
10impl Drop for PushScope {
11 fn drop(&mut self) {
12 if self.previous_size == usize::MAX {
13 return;
14 }
15
16 let stack = unsafe { &mut *self.stack };
17 luaur_common::LUAU_ASSERT!(stack.len() > self.previous_size);
18 while stack.len() > self.previous_size {
19 stack.pop();
20 }
21 self.previous_size = usize::MAX;
22 }
23}