Skip to main content

luaur_analysis/methods/
data_flow_graph_builder_visit_data_flow_graph.rs

1use crate::enums::control_flow::ControlFlow;
2use crate::enums::scope_type::ScopeType;
3use crate::records::data_flow_graph_builder::DataFlowGraphBuilder;
4use crate::records::dfg_scope::DfgScope;
5use crate::records::push_scope::PushScope;
6use luaur_ast::records::ast_stat_block::AstStatBlock;
7use luaur_common::macros::luau_assert::LUAU_ASSERT;
8
9impl DataFlowGraphBuilder {
10    pub fn visit_ast_stat_block(&mut self, b: *mut AstStatBlock) -> ControlFlow {
11        LUAU_ASSERT!(!b.is_null());
12
13        let child = self.make_child_scope(ScopeType::Linear);
14
15        let cf;
16        {
17            let ps = PushScope::push_scope(&mut self.scope_stack, child);
18            cf = self.visit_block_without_child_scope(b);
19            drop(ps);
20        }
21
22        unsafe {
23            (*self.current_scope()).inherit(child);
24        }
25        cf
26    }
27}