luau_parser/impl/block/
local_assignment.rs1use 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}