Skip evaluate condition for loop statement.

This commit is contained in:
Stephen Chung
2021-03-06 16:05:22 +08:00
parent e14bef4b10
commit a126d05c3f
4 changed files with 48 additions and 35 deletions

View File

@@ -2122,9 +2122,10 @@ fn parse_while_loop(
let (guard, token_pos) = match input.next().unwrap() {
(Token::While, pos) => {
ensure_not_statement_expr(input, "a boolean")?;
(parse_expr(input, state, lib, settings.level_up())?, pos)
let expr = parse_expr(input, state, lib, settings.level_up())?;
(Some(expr), pos)
}
(Token::Loop, pos) => (Expr::BoolConstant(true, pos), pos),
(Token::Loop, pos) => (None, pos),
(t, _) => unreachable!("expecting Token::While or Token::Loop, but gets {:?}", t),
};
settings.pos = token_pos;