calcit/
codegen.rs

1use std::sync::atomic::AtomicBool;
2
3pub mod emit_js;
4pub mod gen_ir;
5
6/// switch whether in codegen mode
7static CODEGEN_MODE: AtomicBool = AtomicBool::new(true);
8
9static CODEGEN_SKIP_ARITY_CHECK: AtomicBool = AtomicBool::new(false);
10
11pub const COMPILE_ERRORS_FILE: &str = "calcit.build-errors";
12
13pub fn codegen_mode() -> bool {
14  CODEGEN_MODE.load(std::sync::atomic::Ordering::Relaxed)
15}
16
17/// defaults to `true``
18pub fn set_codegen_mode(b: bool) {
19  CODEGEN_MODE.store(b, std::sync::atomic::Ordering::Relaxed);
20}
21
22/// whether to disable arity check in js codegen
23pub fn set_code_gen_skip_arity_check(b: bool) {
24  if b {
25    println!("WARN: skip arity check in js codegen")
26  }
27  CODEGEN_SKIP_ARITY_CHECK.store(b, std::sync::atomic::Ordering::Relaxed)
28}
29
30/// read global flag for skipping arity check
31pub fn skip_arity_check() -> bool {
32  CODEGEN_SKIP_ARITY_CHECK.load(std::sync::atomic::Ordering::Relaxed)
33}