diff --git a/src/generator/mod.rs b/src/generator/mod.rs index b18c468..482009f 100644 --- a/src/generator/mod.rs +++ b/src/generator/mod.rs @@ -15,8 +15,11 @@ */ use crate::parser::node_type::*; +#[cfg(feature = "backend_c")] pub mod c; +#[cfg(feature = "backend_node")] pub mod js; +#[cfg(feature = "backend_llvm")] pub mod llvm; #[cfg(test)] mod tests; @@ -27,13 +30,14 @@ pub trait Generator { } pub fn generate(prog: Program) -> String { - if cfg!(feature = "backend_c") { - c::CGenerator::generate(prog) - } else if cfg!(feature = "backend_node") { - js::JsGenerator::generate(prog) - } else if cfg!(feature = "backend_llvm") { - llvm::LLVMGenerator::generate(prog) - } else { - panic!("No backend specified") - } + #[cfg(feature = "backend_llvm")] + return llvm::LLVMGenerator::generate(prog); + + #[cfg(feature = "backend_c")] + return c::CGenerator::generate(prog); + + #[cfg(feature = "backend_node")] + return js::JsGenerator::generate(prog); + + panic!("No backend specified"); } diff --git a/src/generator/tests/mod.rs b/src/generator/tests/mod.rs index 8999cd3..4e807ca 100644 --- a/src/generator/tests/mod.rs +++ b/src/generator/tests/mod.rs @@ -1 +1,2 @@ +#[cfg(feature = "backend_c")] mod c_tests;