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