luaur-compiler 0.1.3

Luau source-to-bytecode compiler (Rust).
Documentation
use crate::records::compiler::Compiler;
use luaur_ast::records::ast_node::AstNode;
use luaur_ast::records::ast_stat::AstStat;
use luaur_ast::records::ast_stat_block::AstStatBlock;
use luaur_ast::records::ast_stat_break::AstStatBreak;

impl Compiler {
    pub fn is_stat_break(&mut self, node: *mut AstStat) -> bool {
        unsafe {
            if node.is_null() {
                return false;
            }

            let stat_block = luaur_ast::rtti::ast_node_as::<AstStatBlock>(node as *mut AstNode);
            if !stat_block.is_null() {
                let stat_block = &*stat_block;

                stat_block.body.size == 1
                    && !luaur_ast::rtti::ast_node_as::<AstStatBreak>(
                        *stat_block.body.data.add(0) as *mut AstNode
                    )
                    .is_null()
            } else {
                !luaur_ast::rtti::ast_node_as::<AstStatBreak>(node as *mut AstNode).is_null()
            }
        }
    }
}