Add test for call_fn_raw.
This commit is contained in:
parent
123012404b
commit
5729f0cdd4
@ -159,7 +159,6 @@ impl Engine {
|
|||||||
let orig_scope_len = scope.len();
|
let orig_scope_len = scope.len();
|
||||||
|
|
||||||
if eval_ast && !statements.is_empty() {
|
if eval_ast && !statements.is_empty() {
|
||||||
// Make sure new variables introduced at global level do not _spill_ into the function call
|
|
||||||
self.eval_global_statements(scope, mods, state, statements, &[ast.as_ref()], 0)?;
|
self.eval_global_statements(scope, mods, state, statements, &[ast.as_ref()], 0)?;
|
||||||
|
|
||||||
if rewind_scope {
|
if rewind_scope {
|
||||||
|
@ -69,6 +69,36 @@ fn test_call_fn() -> Result<(), Box<EvalAltResult>> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_call_fn_scope() -> Result<(), Box<EvalAltResult>> {
|
||||||
|
let engine = Engine::new();
|
||||||
|
let mut scope = Scope::new();
|
||||||
|
|
||||||
|
let ast = engine.compile(
|
||||||
|
"
|
||||||
|
fn foo(x) {
|
||||||
|
let hello = 42;
|
||||||
|
bar + hello + x
|
||||||
|
}
|
||||||
|
|
||||||
|
let bar = 123;
|
||||||
|
",
|
||||||
|
)?;
|
||||||
|
|
||||||
|
for _ in 0..50 {
|
||||||
|
assert_eq!(
|
||||||
|
engine
|
||||||
|
.call_fn_raw(&mut scope, &ast, true, false, "foo", None, [Dynamic::THREE])?
|
||||||
|
.as_int()?,
|
||||||
|
168
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_eq!(scope.len(), 100);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
struct Options {
|
struct Options {
|
||||||
pub foo: bool,
|
pub foo: bool,
|
||||||
pub bar: String,
|
pub bar: String,
|
||||||
|
Loading…
Reference in New Issue
Block a user