Skip to main content

luaur_repl_cli/functions/
copts.rs

1use crate::functions::coverage_active::coverage_active;
2use luaur_compiler::records::compile_options::CompileOptions as LuauCompileOptions;
3
4#[repr(C)]
5#[allow(non_snake_case)]
6pub(crate) struct GlobalOptions {
7    pub(crate) optimizationLevel: i32,
8    pub(crate) debugLevel: i32,
9}
10
11extern "C" {
12    pub(crate) static mut globalOptions: GlobalOptions;
13}
14
15pub fn copts() -> LuauCompileOptions {
16    let mut result = LuauCompileOptions::default();
17
18    unsafe {
19        result.optimization_level = globalOptions.optimizationLevel;
20        result.debug_level = globalOptions.debugLevel;
21    }
22
23    result.type_info_level = 1;
24    result.coverage_level = if coverage_active() { 2 } else { 0 };
25
26    result
27}
28
29pub(crate) mod internal {
30    use super::*;
31
32    pub fn copts_wrapper() -> LuauCompileOptions {
33        copts()
34    }
35}