luaur_analysis/methods/
cfg_builder_lower_control_flow_graph.rs1use crate::records::cfg_builder::CfgBuilder;
2use luaur_ast::records::ast_stat::AstStat;
3use luaur_ast::records::ast_stat_assign::AstStatAssign;
4use luaur_ast::records::ast_stat_block::AstStatBlock;
5use luaur_ast::records::ast_stat_if::AstStatIf;
6use luaur_ast::records::ast_stat_local::AstStatLocal;
7use luaur_ast::records::ast_stat_while::AstStatWhile;
8use luaur_common::macros::luau_assert::LUAU_ASSERT;
9
10impl CfgBuilder {
11 pub fn lower_ast_stat(&mut self, statement: *mut AstStat) {
12 unsafe {
13 let p = statement as *mut luaur_ast::records::ast_node::AstNode;
14
15 if (*p).is::<AstStatBlock>() {
16 self.lower_ast_stat_block(statement as *mut AstStatBlock);
17 } else if (*p).is::<AstStatLocal>() {
18 self.lower_ast_stat_local(statement as *mut AstStatLocal);
19 } else if (*p).is::<AstStatAssign>() {
20 self.lower_ast_stat_assign(statement as *mut AstStatAssign);
21 } else if (*p).is::<AstStatIf>() {
22 self.lower_ast_stat_if(statement as *mut AstStatIf);
23 } else if (*p).is::<AstStatWhile>() {
24 self.lower_ast_stat_while(statement as *mut AstStatWhile);
25 } else {
26 LUAU_ASSERT!(false);
27 }
28 }
29 }
30}