luau-parser 0.2.68

A blazingly fast Luau parser with robust error recovery.
Documentation
//! All `impl` blocks for [`WhileLoop`].

use luau_lexer::prelude::{Error, Keyword, Lexer, Token, TokenType};

use crate::{
    safe_unwrap,
    types::{DoBlock, Expression, Parse, Pointer, TryParse, WhileLoop},
};

impl Parse for WhileLoop {
    fn parse(while_keyword: Token, lexer: &mut Lexer, errors: &mut Vec<Error>) -> Option<Self> {
        if while_keyword != TokenType::Keyword(Keyword::While) {
            return None;
        }

        let condition = safe_unwrap!(
            lexer,
            errors,
            "Expected <expr>",
            Pointer::<Expression>::try_parse(lexer, errors)
        );
        let do_block = DoBlock::try_parse(lexer, errors)?;

        Some(Self {
            while_keyword,
            condition,
            do_block,
        })
    }
}