Handle break and return better.
This commit is contained in:
@@ -1,27 +1,29 @@
|
||||
use rhai::{Engine, EvalAltResult};
|
||||
use rhai::{Engine, EvalAltResult, INT};
|
||||
|
||||
#[test]
|
||||
fn test_loop() -> Result<(), EvalAltResult> {
|
||||
let mut engine = Engine::new();
|
||||
|
||||
assert!(engine.eval::<bool>(
|
||||
r"
|
||||
let x = 0;
|
||||
let i = 0;
|
||||
assert_eq!(
|
||||
engine.eval::<INT>(
|
||||
r"
|
||||
let x = 0;
|
||||
let i = 0;
|
||||
|
||||
loop {
|
||||
if i < 10 {
|
||||
x = x + i;
|
||||
i = i + 1;
|
||||
loop {
|
||||
if i < 10 {
|
||||
x = x + i;
|
||||
i = i + 1;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
x == 45
|
||||
return x;
|
||||
"
|
||||
)?);
|
||||
)?,
|
||||
45
|
||||
);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
@@ -9,6 +9,6 @@ fn test_throw() {
|
||||
EvalAltResult::ErrorRuntime(s, _) if s == "hello"));
|
||||
|
||||
assert!(matches!(
|
||||
engine.eval::<()>(r#"throw;"#).expect_err("expects error"),
|
||||
engine.eval::<()>(r#"throw"#).expect_err("expects error"),
|
||||
EvalAltResult::ErrorRuntime(s, _) if s == ""));
|
||||
}
|
||||
|
Reference in New Issue
Block a user