Skip to main content

luaur_analysis/records/
push_scope.rs

1use 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}