mirror of
https://github.com/erg-lang/erg.git
synced 2025-09-29 04:24:43 +00:00
43 lines
1.3 KiB
Rust
43 lines
1.3 KiB
Rust
use erg::DummyVM;
|
|
use erg_common::config::ErgConfig;
|
|
use erg_common::error::MultiErrorDisplay;
|
|
use erg_compiler::artifact::Buildable;
|
|
use erg_compiler::module::SharedCompilerResource;
|
|
use erg_compiler::HIRBuilder;
|
|
use erg_compiler::Transpiler;
|
|
|
|
#[test]
|
|
fn test_vm_embedding() -> Result<(), ()> {
|
|
let mut vm = DummyVM::default();
|
|
vm.eval("print! \"Hello, world!\"".into()).map_err(|es| {
|
|
es.write_all_stderr();
|
|
})?;
|
|
vm.eval("prin \"Hello, world!\"".into())
|
|
.expect_err("should err");
|
|
Ok(())
|
|
}
|
|
|
|
#[test]
|
|
fn test_transpiler_embedding() -> Result<(), ()> {
|
|
let mut trans = Transpiler::default();
|
|
let res = trans
|
|
.transpile("print!(\"\")".into(), "exec")
|
|
.map_err(|es| {
|
|
es.errors.write_all_stderr();
|
|
})?;
|
|
assert!(res.object.code().ends_with("(print)(Str(\"\"),)\n"));
|
|
Ok(())
|
|
}
|
|
|
|
#[test]
|
|
fn test_builder() -> Result<(), ()> {
|
|
let mods = ["math", "time"];
|
|
let src = mods.into_iter().fold("".to_string(), |acc, module| {
|
|
acc + &format!("_ = pyimport \"{module}\"\n")
|
|
});
|
|
let cfg = ErgConfig::string(src.clone());
|
|
let shared = SharedCompilerResource::new(cfg.clone());
|
|
let mut checker = HIRBuilder::inherit(cfg, shared);
|
|
let _res = checker.build(src, "exec");
|
|
Ok(())
|
|
}
|