luaur-compiler 0.1.3

Luau source-to-bytecode compiler (Rust).
Documentation
use crate::enums::global::Global;
use crate::enums::table_constant_kind::TableConstantKind;
use crate::records::builtin_ast_types::BuiltinAstTypes;
use crate::records::capture::Capture;
use crate::records::constant::Constant;
use crate::records::function::Function;
use crate::records::inline_frame::InlineFrame;
use crate::records::local::Local;
use crate::records::loop_jump::LoopJump;
use crate::records::r#loop::Loop;
use crate::records::table_shape::TableShape;
use crate::records::variable::Variable;
use alloc::string::String;
use alloc::vec::Vec;
use luaur_ast::records::ast_expr::AstExpr;
use luaur_ast::records::ast_expr_call::AstExprCall;
use luaur_ast::records::ast_expr_function::AstExprFunction;
use luaur_ast::records::ast_expr_table::AstExprTable;
use luaur_ast::records::ast_local::AstLocal;
use luaur_ast::records::ast_name::AstName;
use luaur_ast::records::ast_name_table::AstNameTable;
use luaur_bytecode::records::bytecode_builder::BytecodeBuilder;
use luaur_common::enums::luau_bytecode_type::LuauBytecodeType;
use luaur_common::records::dense_hash_map::DenseHashMap;

#[derive(Debug)]
pub struct Compiler {
    pub bytecode: *mut BytecodeBuilder,
    pub options: crate::records::compile_options::CompileOptions,
    pub functions: DenseHashMap<*mut AstExprFunction, Function>,
    pub locals: DenseHashMap<*mut AstLocal, Local>,
    pub globals: DenseHashMap<AstName, Global>,
    pub variables: DenseHashMap<*mut AstLocal, Variable>,
    pub constants: DenseHashMap<*mut AstExpr, Constant>,
    pub locstants: DenseHashMap<*mut AstLocal, Constant>,
    pub table_constants: DenseHashMap<*mut AstLocal, TableConstantKind>,
    pub table_shapes: DenseHashMap<*mut AstExprTable, TableShape>,
    pub builtins: DenseHashMap<*mut AstExprCall, i32>,
    pub userdata_types: DenseHashMap<AstName, u8>,
    pub function_types: DenseHashMap<*mut AstExprFunction, String>,
    pub local_types: DenseHashMap<*mut AstLocal, LuauBytecodeType>,
    pub expr_types: DenseHashMap<*mut AstExpr, LuauBytecodeType>,
    pub inline_builtins: DenseHashMap<*mut AstExprCall, i32>,
    pub inline_builtins_backup: DenseHashMap<*mut AstExprCall, i32>,
    pub expr_changes: Vec<crate::records::expr_constant_change::ExprConstantChange>,
    pub local_changes: Vec<crate::records::local_constant_change::LocalConstantChange>,
    pub builtin_types: BuiltinAstTypes,
    pub names: *mut AstNameTable,
    pub export_table_local: luaur_ast::records::ast_local::AstLocal,
    pub builtins_fold: *const DenseHashMap<*mut AstExprCall, i32>,
    pub builtins_fold_library_k: bool,
    pub reg_top: u32,
    pub stack_size: u32,
    pub arg_count: usize,
    pub has_loops: bool,
    pub current_function: *mut AstExprFunction,
    pub block_depth: usize,
    pub getfenv_used: bool,
    pub setfenv_used: bool,
    pub local_stack: Vec<*mut AstLocal>,
    pub upvals: Vec<*mut AstLocal>,
    pub loop_jumps: Vec<LoopJump>,
    pub loops: Vec<Loop>,
    pub inline_frames: Vec<InlineFrame>,
    pub captures: Vec<Capture>,
    pub exported_locals: Vec<*mut AstLocal>,
    pub exported_classes: Vec<(AstName, u8)>,
}