luau_parser/impl/block/
local_assignment.rs

1//! All `impl` blocks for [`LocalAssignment`].
2
3use luau_lexer::prelude::{Keyword, Lexer, ParseError, Symbol, Token, TokenType};
4
5use crate::types::{Expression, List, LocalAssignment, Name, Parse, Pointer, TryParse};
6
7impl Parse for LocalAssignment {
8    fn parse(local_token: Token, lexer: &mut Lexer, errors: &mut Vec<ParseError>) -> Option<Self> {
9        if local_token != TokenType::Keyword(Keyword::Local) {
10            return None;
11        }
12
13        let name_list = List::<Name>::try_parse(lexer, errors)?;
14
15        maybe_next_token!(lexer, equal_token, TokenType::Symbol(Symbol::Equal));
16        let expressions = if equal_token.is_some() {
17            List::<Pointer<Expression>>::try_parse(lexer, errors)?
18        } else {
19            List::<Pointer<Expression>>::new()
20        };
21
22        Some(Self {
23            local_token,
24            name_list,
25            equal_token,
26            expressions,
27        })
28    }
29}