use rhai::{Engine, EvalAltResult, ParseError, ParseErrorType, INT}; #[test] fn test_loop() -> Result<(), Box> { let engine = Engine::new(); assert_eq!( engine.eval::( r" let x = 0; let i = 0; loop { if i < 10 { i += 1; if x > 20 { continue; } x = x + i; } else { break; } } return x; " )?, 21 ); assert!(matches!( engine.compile("let x = 0; break;").expect_err("should error"), ParseError(x, _) if *x == ParseErrorType::LoopBreak )); assert!(matches!( engine.compile("let x = 0; if x > 0 { continue; }").expect_err("should error"), ParseError(x, _) if *x == ParseErrorType::LoopBreak )); Ok(()) }