Browse Source

chore: refactor backend plugin infrastructure

llvm-integration
Garrit Franke 3 years ago
parent
commit
6c2f1ffaa3
  1. 22
      src/generator/mod.rs
  2. 1
      src/generator/tests/mod.rs

22
src/generator/mod.rs

@ -15,8 +15,11 @@
*/ */
use crate::parser::node_type::*; use crate::parser::node_type::*;
#[cfg(feature = "backend_c")]
pub mod c; pub mod c;
#[cfg(feature = "backend_node")]
pub mod js; pub mod js;
#[cfg(feature = "backend_llvm")]
pub mod llvm; pub mod llvm;
#[cfg(test)] #[cfg(test)]
mod tests; mod tests;
@ -27,13 +30,14 @@ pub trait Generator {
} }
pub fn generate(prog: Program) -> String { pub fn generate(prog: Program) -> String {
if cfg!(feature = "backend_c") { #[cfg(feature = "backend_llvm")]
c::CGenerator::generate(prog) return llvm::LLVMGenerator::generate(prog);
} else if cfg!(feature = "backend_node") {
js::JsGenerator::generate(prog) #[cfg(feature = "backend_c")]
} else if cfg!(feature = "backend_llvm") { return c::CGenerator::generate(prog);
llvm::LLVMGenerator::generate(prog)
} else { #[cfg(feature = "backend_node")]
panic!("No backend specified") return js::JsGenerator::generate(prog);
}
panic!("No backend specified");
} }

1
src/generator/tests/mod.rs

@ -1 +1,2 @@
#[cfg(feature = "backend_c")]
mod c_tests; mod c_tests;

Loading…
Cancel
Save