forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			1041 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			1041 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * Copyright (C)2005-2019 Haxe Foundation
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Permission is hereby granted, free of charge, to any person obtaining a
							 | 
						||
| 
								 | 
							
								 * copy of this software and associated documentation files (the "Software"),
							 | 
						||
| 
								 | 
							
								 * to deal in the Software without restriction, including without limitation
							 | 
						||
| 
								 | 
							
								 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
							 | 
						||
| 
								 | 
							
								 * and/or sell copies of the Software, and to permit persons to whom the
							 | 
						||
| 
								 | 
							
								 * Software is furnished to do so, subject to the following conditions:
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * The above copyright notice and this permission notice shall be included in
							 | 
						||
| 
								 | 
							
								 * all copies or substantial portions of the Software.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
							 | 
						||
| 
								 | 
							
								 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
							 | 
						||
| 
								 | 
							
								 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
							 | 
						||
| 
								 | 
							
								 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
							 | 
						||
| 
								 | 
							
								 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
							 | 
						||
| 
								 | 
							
								 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
							 | 
						||
| 
								 | 
							
								 * DEALINGS IN THE SOFTWARE.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								package haxe.macro;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if (macro && !doc_gen)
							 | 
						||
| 
								 | 
							
								@:coreType abstract Position {}
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a position in a file.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef Position = {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Reference to the filename.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var file:String;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Position of the first character.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var min:Int;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Position of the last character.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var max:Int;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								#end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								enum StringLiteralKind {
							 | 
						||
| 
								 | 
							
									DoubleQuotes;
							 | 
						||
| 
								 | 
							
									SingleQuotes;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a constant.
							 | 
						||
| 
								 | 
							
									@see https://haxe.org/manual/expression-constants.html
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								enum Constant {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents an integer literal.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									CInt(v:String);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents a float literal.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									CFloat(f:String);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents a string literal.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									CString(s:String, ?kind:StringLiteralKind);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents an identifier.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									CIdent(s:String);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents a regular expression literal.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										Example: `~/haxe/i`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										- The first argument `haxe` is a string with regular expression pattern.
							 | 
						||
| 
								 | 
							
										- The second argument `i` is a string with regular expression flags.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										@see https://haxe.org/manual/std-regex.html
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									CRegexp(r:String, opt:String);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									A binary operator.
							 | 
						||
| 
								 | 
							
									@see https://haxe.org/manual/types-numeric-operators.html
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								enum Binop {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`+`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpAdd;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`*`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpMult;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`/`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpDiv;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`-`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpSub;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`=`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpAssign;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`==`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpEq;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`!=`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpNotEq;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`>`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpGt;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`>=`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpGte;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`<`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpLt;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`<=`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpLte;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`&`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpAnd;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`|`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpOr;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`^`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpXor;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`&&`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpBoolAnd;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`||`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpBoolOr;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`<<`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpShl;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`>>`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpShr;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`>>>`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpUShr;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`%`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpMod;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`+=` `-=` `/=` `*=` `<<=` `>>=` `>>>=` `|=` `&=` `^=` `%=`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpAssignOp(op:Binop);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`...`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpInterval;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`=>`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpArrow;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`in`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpIn;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									A unary operator.
							 | 
						||
| 
								 | 
							
									@see https://haxe.org/manual/types-numeric-operators.html
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								enum Unop {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`++`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpIncrement;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`--`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpDecrement;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`!`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpNot;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`-`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpNeg;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`~`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpNegBits;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										`...`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									OpSpread;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a node in the AST.
							 | 
						||
| 
								 | 
							
									@see https://haxe.org/manual/macro-reification-expression.html
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef Expr = {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The expression kind.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var expr:ExprDef;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The position of the expression.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var pos:Position;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a AST node identical to `Expr`, but it allows constraining the
							 | 
						||
| 
								 | 
							
									type of accepted expressions.
							 | 
						||
| 
								 | 
							
									@see https://haxe.org/manual/macro-ExprOf.html
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef ExprOf<T> = Expr;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a switch case.
							 | 
						||
| 
								 | 
							
									@see https://haxe.org/manual/expression-switch.html
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef Case = {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The value expressions of the case.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var values:Array<Expr>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The optional guard expressions of the case, if available.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?guard:Expr;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The expression of the case, if available.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?expr:Expr;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a variable in the AST.
							 | 
						||
| 
								 | 
							
									@see https://haxe.org/manual/expression-var.html
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef Var = {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The name of the variable.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var name:String;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The type-hint of the variable, if available.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?type:ComplexType;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The expression of the variable, if available.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?expr:Expr;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Whether or not the variable can be assigned to.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?isFinal:Bool;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Metadata associatied with the variable, if available.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?meta:Metadata;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a catch in the AST.
							 | 
						||
| 
								 | 
							
									@see https://haxe.org/manual/expression-try-catch.html
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef Catch = {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The name of the catch variable.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var name:String;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The type of the catch.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?type:ComplexType;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The expression of the catch.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var expr:Expr;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents the way something is quoted.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								enum QuoteStatus {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										No quotes
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									Unquoted;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Double quotes `"`
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									Quoted;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents the field of an object declaration.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef ObjectField = {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The name of the field.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var field:String;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The field expression.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var expr:Expr;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										How the field name is quoted.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?quotes:QuoteStatus;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents function kind in the AST
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								enum FunctionKind {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Anonymous function
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									FAnonymous;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Named function
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									FNamed(name:String, ?inlined:Bool);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Arrow function
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									FArrow;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents the kind of a node in the AST.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								enum ExprDef {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A constant.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EConst(c:Constant);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Array access `e1[e2]`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EArray(e1:Expr, e2:Expr);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Binary operator `e1 op e2`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EBinop(op:Binop, e1:Expr, e2:Expr);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Field access on `e.field`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EField(e:Expr, field:String);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Parentheses `(e)`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EParenthesis(e:Expr);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										An object declaration.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EObjectDecl(fields:Array<ObjectField>);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										An array declaration `[el]`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EArrayDecl(values:Array<Expr>);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A call `e(params)`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									ECall(e:Expr, params:Array<Expr>);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A constructor call `new t(params)`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									ENew(t:TypePath, params:Array<Expr>);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										An unary operator `op` on `e`:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										- `e++` (`op = OpIncrement, postFix = true`)
							 | 
						||
| 
								 | 
							
										- `e--` (`op = OpDecrement, postFix = true`)
							 | 
						||
| 
								 | 
							
										- `++e` (`op = OpIncrement, postFix = false`)
							 | 
						||
| 
								 | 
							
										- `--e` (`op = OpDecrement, postFix = false`)
							 | 
						||
| 
								 | 
							
										- `-e` (`op = OpNeg, postFix = false`)
							 | 
						||
| 
								 | 
							
										- `!e` (`op = OpNot, postFix = false`)
							 | 
						||
| 
								 | 
							
										- `~e` (`op = OpNegBits, postFix = false`)
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EUnop(op:Unop, postFix:Bool, e:Expr);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Variable declarations.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EVars(vars:Array<Var>);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A function declaration.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EFunction(kind:Null<FunctionKind>, f:Function);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A block of expressions `{exprs}`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EBlock(exprs:Array<Expr>);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A `for` expression.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EFor(it:Expr, expr:Expr);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										An `if (econd) eif` or `if (econd) eif else eelse` expression.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EIf(econd:Expr, eif:Expr, eelse:Null<Expr>);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents a `while` expression.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										When `normalWhile` is `true` it is `while (...)`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										When `normalWhile` is `false` it is `do {...} while (...)`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EWhile(econd:Expr, e:Expr, normalWhile:Bool);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents a `switch` expression with related cases and an optional.
							 | 
						||
| 
								 | 
							
										`default` case if `edef != null`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									ESwitch(e:Expr, cases:Array<Case>, edef:Null<Expr>);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents a `try`-expression with related catches.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									ETry(e:Expr, catches:Array<Catch>);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A `return` or `return e` expression.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EReturn(?e:Expr);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A `break` expression.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EBreak;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A `continue` expression.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EContinue;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										An `untyped e` source code.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EUntyped(e:Expr);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A `throw e` expression.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EThrow(e:Expr);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A `cast e` or `cast (e, m)` expression.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									ECast(e:Expr, t:Null<ComplexType>);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Used internally to provide completion.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EDisplay(e:Expr, displayKind:DisplayKind);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Used internally to provide completion.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EDisplayNew(t:TypePath);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A `(econd) ? eif : eelse` expression.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									ETernary(econd:Expr, eif:Expr, eelse:Expr);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A `(e:t)` expression.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									ECheckType(e:Expr, t:ComplexType);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A `@m e` expression.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EMeta(s:MetadataEntry, e:Expr);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										An `expr is Type` expression.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									EIs(e:Expr, t:ComplexType);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								enum DisplayKind {
							 | 
						||
| 
								 | 
							
									DKCall;
							 | 
						||
| 
								 | 
							
									DKDot;
							 | 
						||
| 
								 | 
							
									DKStructure;
							 | 
						||
| 
								 | 
							
									DKMarked;
							 | 
						||
| 
								 | 
							
									DKPattern(outermost:Bool);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a type syntax in the AST.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								enum ComplexType {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents the type path.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									TPath(p:TypePath);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents a function type.
							 | 
						||
| 
								 | 
							
										@see https://haxe.org/manual/types-function.html
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									TFunction(args:Array<ComplexType>, ret:ComplexType);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents an anonymous structure type.
							 | 
						||
| 
								 | 
							
										@see https://haxe.org/manual/types-anonymous-structure.html
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									TAnonymous(fields:Array<Field>);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents parentheses around a type, e.g. the `(Int -> Void)` part in
							 | 
						||
| 
								 | 
							
										`(Int -> Void) -> String`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									TParent(t:ComplexType);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents typedef extensions `> Iterable<T>`.
							 | 
						||
| 
								 | 
							
										The array `p` holds the type paths to the given types.
							 | 
						||
| 
								 | 
							
										@see https://haxe.org/manual/type-system-extensions.html
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									TExtend(p:Array<TypePath>, fields:Array<Field>);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents an optional type.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									TOptional(t:ComplexType);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents a type with a name.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									TNamed(n:String, t:ComplexType);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents an intersection type `T1 & T2 & ... & TN`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									TIntersection(tl:Array<ComplexType>);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a type path in the AST.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef TypePath = {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents the package of the type path.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var pack:Array<String>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The name of the type path.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var name:String;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Optional parameters of the type path.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?params:Array<TypeParam>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Sub is set on module sub-type access:
							 | 
						||
| 
								 | 
							
										`pack.Module.Type` has `name = "Module"`, `sub = "Type"`, if available.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?sub:String;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a concrete type parameter in the AST.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									Haxe allows expressions in concrete type parameters, e.g.
							 | 
						||
| 
								 | 
							
									`new YourType<["hello", "world"]>`. In that case the value is `TPExpr` while
							 | 
						||
| 
								 | 
							
									in the normal case it's `TPType`.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								enum TypeParam {
							 | 
						||
| 
								 | 
							
									TPType(t:ComplexType);
							 | 
						||
| 
								 | 
							
									TPExpr(e:Expr);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a type parameter declaration in the AST.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef TypeParamDecl = {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The name of the type parameter.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var name:String;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The optional constraints of the type parameter.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?constraints:Array<ComplexType>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The optional parameters of the type parameter.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?params:Array<TypeParamDecl>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The metadata of the type parameter.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?meta:Metadata;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a function in the AST.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef Function = {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A list of function arguments.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var args:Array<FunctionArg>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The return type-hint of the function, if available.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?ret:ComplexType;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The expression of the function body, if available.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?expr:Expr;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										An optional list of function parameter type declarations.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?params:Array<TypeParamDecl>;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a function argument in the AST.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef FunctionArg = {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The name of the function argument.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var name:String;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Whether or not the function argument is optional.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?opt:Bool;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The type-hint of the function argument, if available.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?type:ComplexType;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The optional value of the function argument, if available.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?value:Expr;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The metadata of the function argument.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?meta:Metadata;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a metadata entry in the AST.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef MetadataEntry = {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The name of the metadata entry.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var name:String;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The optional parameters of the metadata entry.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?params:Array<Expr>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The position of the metadata entry.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var pos:Position;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents metadata in the AST.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef Metadata = Array<MetadataEntry>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a field in the AST.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef Field = {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The name of the field.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var name:String;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The documentation of the field, if available. If the field has no
							 | 
						||
| 
								 | 
							
										documentation, the value is `null`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?doc:String;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The access modifiers of the field. By default fields have private access.
							 | 
						||
| 
								 | 
							
										@see https://haxe.org/manual/class-field-access-modifier.html
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?access:Array<Access>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The kind of the field.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var kind:FieldType;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The position of the field.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var pos:Position;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The optional metadata of the field.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?meta:Metadata;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents an access modifier.
							 | 
						||
| 
								 | 
							
									@see https://haxe.org/manual/class-field-access-modifier.html
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								enum Access {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Public access modifier, grants access from anywhere.
							 | 
						||
| 
								 | 
							
										@see https://haxe.org/manual/class-field-visibility.html
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									APublic;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Private access modifier, grants access to class and its sub-classes
							 | 
						||
| 
								 | 
							
										only.
							 | 
						||
| 
								 | 
							
										@see https://haxe.org/manual/class-field-visibility.html
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									APrivate;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Static access modifier.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									AStatic;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Override access modifier.
							 | 
						||
| 
								 | 
							
										@see https://haxe.org/manual/class-field-override.html
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									AOverride;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Dynamic (re-)bindable access modifier.
							 | 
						||
| 
								 | 
							
										@see https://haxe.org/manual/class-field-dynamic.html
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									ADynamic;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Inline access modifier. Allows expressions to be directly inserted in
							 | 
						||
| 
								 | 
							
										place of calls to them.
							 | 
						||
| 
								 | 
							
										@see https://haxe.org/manual/class-field-inline.html
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									AInline;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Macro access modifier. Allows expression macro functions. These are
							 | 
						||
| 
								 | 
							
										normal functions which are executed as soon as they are typed.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									AMacro;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Final access modifier. For functions, they can not be overridden. For
							 | 
						||
| 
								 | 
							
										variables, it means they can be assigned to only once.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									AFinal;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Extern access modifier.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									AExtern;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Abstract access modifier.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									AAbstract;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Overload access modifier.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									AOverload;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents the field type in the AST.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								enum FieldType {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents a variable field type.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									FVar(t:Null<ComplexType>, ?e:Expr);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents a function field type.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									FFun(f:Function);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents a property with getter and setter field type.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									FProp(get:String, set:String, ?t:ComplexType, ?e:Expr);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a type definition.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef TypeDefinition = {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The package of the type definition.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var pack:Array<String>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The name of the type definition.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var name:String;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The documentation of the type, if available. If the type has no
							 | 
						||
| 
								 | 
							
										documentation, the value is `null`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?doc:String;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The position to the type definition.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var pos:Position;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The optional metadata of the type definition.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?meta:Metadata;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The parameter type declarations of the type definition.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?params:Array<TypeParamDecl>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Whether or not the type is extern.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ?isExtern:Bool;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The kind of the type definition.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var kind:TypeDefKind;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The fields of the type definition.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var fields:Array<Field>;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents a type definition kind.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								enum TypeDefKind {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents an enum kind.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									TDEnum;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents a structure kind.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									TDStructure;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents a class kind.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									TDClass(?superClass:TypePath, ?interfaces:Array<TypePath>, ?isInterface:Bool, ?isFinal:Bool, ?isAbstract:Bool);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents an alias/typedef kind.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									TDAlias(t:ComplexType); // ignore TypeDefinition.fields
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents an abstract kind.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									TDAbstract(tthis:Null<ComplexType>, ?from:Array<ComplexType>, ?to:Array<ComplexType>);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents a module-level field.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									TDField(kind:FieldType, ?access:Array<Access>); // ignore TypeDefinition.fields
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									This error can be used to handle or produce compilation errors in macros.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								class Error extends Exception {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The position of the error.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									public var pos:Position;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Instantiates an error with given message and position.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									public function new(message:String, pos:Position, ?previous:Exception) {
							 | 
						||
| 
								 | 
							
										super(message, previous);
							 | 
						||
| 
								 | 
							
										this.pos = pos;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents the import mode.
							 | 
						||
| 
								 | 
							
									@see https://haxe.org/manual/type-system-import.html
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								enum ImportMode {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents a default import `import c`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									INormal;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents the alias import `import c as alias`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									IAsName(alias:String);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Represents the wildcard import `import *`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									IAll;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Represents the import expression.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef ImportExpr = {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The path to the import expression.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var path:Array<{pos:Position, name:String}>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The mode of the import expression.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var mode:ImportMode;
							 | 
						||
| 
								 | 
							
								}
							 |