import luau from ".."; export interface BaseNode { kind: T; parent?: luau.Node; } export interface BaseIndexableExpression extends luau.BaseNode { } export interface BaseExpression extends luau.BaseNode { } export interface BaseStatement extends luau.BaseNode { } export interface BaseField extends luau.BaseNode { } export interface HasParameters { parameters: luau.List; hasDotDotDot: boolean; } export type AnyIdentifier = luau.Identifier | luau.TemporaryIdentifier; export type WritableExpression = luau.AnyIdentifier | luau.PropertyAccessExpression | luau.ComputedIndexExpression; export type SimpleTypes = luau.Identifier | luau.TemporaryIdentifier | luau.NilLiteral | luau.TrueLiteral | luau.FalseLiteral | luau.NumberLiteral | luau.StringLiteral; export type ExpressionWithPrecedence = luau.IfExpression | luau.UnaryExpression | luau.BinaryExpression; export interface None extends luau.BaseExpression { } export interface NilLiteral extends luau.BaseExpression { } export interface FalseLiteral extends luau.BaseExpression { } export interface TrueLiteral extends luau.BaseExpression { } export interface NumberLiteral extends luau.BaseExpression { value: string; } export interface StringLiteral extends luau.BaseExpression { value: string; } export interface VarArgsLiteral extends luau.BaseExpression { } export interface FunctionExpression extends luau.BaseExpression, HasParameters { statements: luau.List; } export interface Identifier extends luau.BaseExpression { name: string; } export interface TemporaryIdentifier extends luau.BaseExpression { name: string; id: number; } export interface ComputedIndexExpression extends luau.BaseExpression { expression: luau.IndexableExpression; index: luau.Expression; } export interface PropertyAccessExpression extends luau.BaseExpression { expression: luau.IndexableExpression; name: string; } export interface CallExpression extends luau.BaseExpression { expression: luau.IndexableExpression; args: luau.List; } export interface MethodCallExpression extends luau.BaseExpression { name: string; expression: luau.IndexableExpression; args: luau.List; } export interface ParenthesizedExpression extends luau.BaseExpression { expression: luau.Expression; } export interface BinaryExpression extends luau.BaseExpression { left: luau.Expression; operator: luau.BinaryOperator; right: luau.Expression; } export interface UnaryExpression extends luau.BaseExpression { operator: luau.UnaryOperator; expression: luau.Expression; } export interface IfExpression extends luau.BaseExpression { condition: luau.Expression; expression: luau.Expression; alternative: luau.Expression; } export interface InterpolatedString extends luau.BaseExpression { parts: luau.List; } export interface Array extends luau.BaseExpression { members: luau.List; } export interface Map extends luau.BaseExpression { fields: luau.List; } export interface Set extends luau.BaseExpression { members: luau.List; } export interface MixedTable extends luau.BaseExpression { fields: luau.List; } export interface Assignment extends luau.BaseStatement { left: luau.WritableExpression | luau.List; operator: luau.AssignmentOperator; right: luau.Expression | luau.List; } export interface BreakStatement extends luau.BaseStatement { } export interface CallStatement extends luau.BaseStatement { expression: luau.CallExpression | luau.MethodCallExpression; } export interface ContinueStatement extends luau.BaseStatement { } export interface DoStatement extends luau.BaseStatement { statements: luau.List; } export interface WhileStatement extends luau.BaseStatement { condition: luau.Expression; statements: luau.List; } export interface RepeatStatement extends luau.BaseStatement { condition: luau.Expression; statements: luau.List; } export interface IfStatement extends luau.BaseStatement { condition: luau.Expression; statements: luau.List; elseBody: luau.IfStatement | luau.List; } export interface NumericForStatement extends luau.BaseStatement { id: luau.AnyIdentifier; start: luau.Expression; end: luau.Expression; step?: luau.Expression; statements: luau.List; } export interface ForStatement extends luau.BaseStatement { ids: luau.List; expression: luau.Expression; statements: luau.List; } export interface FunctionDeclaration extends luau.BaseStatement, HasParameters { localize: boolean; name: luau.AnyIdentifier | luau.PropertyAccessExpression; statements: luau.List; } export interface MethodDeclaration extends luau.BaseStatement, HasParameters { expression: luau.IndexableExpression; name: string; statements: luau.List; } export interface VariableDeclaration extends luau.BaseStatement { left: luau.AnyIdentifier | luau.List; right: luau.Expression | luau.List | undefined; } export interface ReturnStatement extends luau.BaseStatement { expression: luau.Expression | luau.List; } export interface Comment extends luau.BaseStatement { text: string; } export interface MapField extends luau.BaseField { index: luau.Expression; value: luau.Expression; } export interface InterpolatedStringPart extends luau.BaseField { text: string; }