luaur_analysis/methods/
cfg_builder_lower_expr_control_flow_graph.rs1use crate::records::cfg_builder::CfgBuilder;
2use luaur_ast::records::ast_expr::AstExpr;
3use luaur_ast::records::ast_expr_binary::AstExprBinary;
4use luaur_ast::records::ast_expr_local::AstExprLocal;
5use luaur_ast::records::ast_node::AstNode;
6use luaur_ast::rtti::ast_node_as;
7use luaur_common::macros::luau_assert::LUAU_ASSERT;
8
9impl CfgBuilder {
10 pub fn lower_expr_ast_expr(&mut self, expr: *mut AstExpr) {
11 unsafe {
12 let local = ast_node_as::<AstExprLocal>(expr as *mut AstNode);
13 if !local.is_null() {
14 self.lower_expr_ast_expr_local(local);
15 } else {
16 let binop = ast_node_as::<AstExprBinary>(expr as *mut AstNode);
17 if !binop.is_null() {
18 LUAU_ASSERT!(!(*binop).left.is_null());
19 LUAU_ASSERT!(!(*binop).right.is_null());
20 self.lower_expr_ast_expr((*binop).left);
21 self.lower_expr_ast_expr((*binop).right);
22 }
23 }
24 }
25 }
26}