Add Engine::compile_to_self_contained.

This commit is contained in:
Stephen Chung
2021-01-09 00:24:55 +08:00
parent b96c832141
commit 0f1f6c4ad3
5 changed files with 206 additions and 7 deletions

View File

@@ -1,7 +1,8 @@
#![cfg(not(feature = "no_module"))]
use rhai::{
module_resolvers::StaticModuleResolver, Dynamic, Engine, EvalAltResult, FnNamespace,
ImmutableString, Module, ParseError, ParseErrorType, Scope, INT,
module_resolvers::{DummyModuleResolver, StaticModuleResolver},
Dynamic, Engine, EvalAltResult, FnNamespace, ImmutableString, Module, ParseError,
ParseErrorType, Scope, INT,
};
#[test]
@@ -246,6 +247,20 @@ fn test_module_resolver() -> Result<(), Box<EvalAltResult>> {
)?;
}
let script = r#"
import "hello" as h;
h::answer
"#;
let mut scope = Scope::new();
let ast = engine.compile_into_self_contained(&mut scope, script)?;
engine.set_module_resolver(DummyModuleResolver::new());
assert_eq!(engine.eval_ast::<INT>(&ast)?, 42);
assert!(engine.eval::<INT>(script).is_err());
Ok(())
}