luau_parser/types/expression/
table.rs1use luau_lexer::prelude::Token;
2use luau_parser_derive::{Print, Range};
3
4use crate::types::{ExpressionWrap, FunctionCall, Pointer, TableKey};
5
6#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord, Range, Print)]
8#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
9pub enum TableAccessPrefix {
10 Name(Token),
16
17 FunctionCall(Pointer<FunctionCall>),
23
24 ExpressionWrap(Pointer<ExpressionWrap>),
31}
32
33#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord, Range, Print)]
35#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
36pub struct TableAccess {
37 pub prefix: TableAccessPrefix,
39
40 pub accessed_keys: Vec<TableAccessKey>,
48}
49
50#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord, Range, Print)]
52#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
53pub enum TableAccessKey {
54 Expression(Pointer<TableKey>),
56
57 Name {
59 dot: Pointer<Token>,
61
62 name: Pointer<Token>,
64 },
65}