|  | @@ -25,11 +25,22 @@ package haxe.macro;
 | 
	
		
			
				|  |  |      Warning: Some of these types correspond to compiler-internal data structures
 | 
	
		
			
				|  |  |      and might change in minor Haxe releases in order to adapt to internal changes.
 | 
	
		
			
				|  |  |  */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents a reference to internal compiler structure. It exists to avoid
 | 
	
		
			
				|  |  | +	expensive encoding if it is not required and to ensure that physical
 | 
	
		
			
				|  |  | +	equality remains intact.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	A structure is only encoded when user requests it through `ref.get()`.
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  typedef Ref<T> = {
 | 
	
		
			
				|  |  |  	public function get() : T;
 | 
	
		
			
				|  |  |  	public function toString() : String;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents a type
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  enum Type {
 | 
	
		
			
				|  |  |  	/**
 | 
	
		
			
				|  |  |  		Represents a monomorph.
 | 
	
	
		
			
				|  | @@ -93,103 +104,406 @@ enum Type {
 | 
	
		
			
				|  |  |  	TAbstract( t : Ref<AbstractType>, params : Array<Type> );
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents information for anonymous structure types.
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  typedef AnonType = {
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The class fields of the structure.
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var fields : Array<ClassField>;
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The status/kind of the structure.
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var status : AnonStatus;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents the kind of the anonymous structure type.
 | 
	
		
			
				|  |  | +**/
 | 
	
		
			
				|  |  |  enum AnonStatus {
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A closed structure is considered complete. That is, no further fields
 | 
	
		
			
				|  |  | +		can be added to it.
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	AClosed;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		An open structure allows having additional fields added to it, which is
 | 
	
		
			
				|  |  | +		used during type inference. It is closed upon unification.
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	AOpened;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A const structure is one that appears directly in syntax. It cannot be
 | 
	
		
			
				|  |  | +		assigned to a smaller structure type (that is, it does not allow
 | 
	
		
			
				|  |  | +		structural sub-typing).
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	AConst;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Represents a structure which extends one or multiple structures defined
 | 
	
		
			
				|  |  | +		in `tl`.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		@see http://haxe.org/manual/type-system-extensions.html
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	AExtend( tl:Ref<Array<Type>> );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A structure that represents the static fields of a class.
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	AClassStatics( t : Ref<ClassType> );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A structure that represents the constructors of an enum.
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	AEnumStatics( t : Ref<EnumType> );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A structure that represents the static fields of an abstract.
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	AAbstractStatics( t : Ref<AbstractType> );
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents the declaration of type parameters.
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  typedef TypeParameter = {
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The name of the type parameter
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var name: String;
 | 
	
		
			
				|  |  | -	var t: Type;
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -typedef BaseType = {
 | 
	
		
			
				|  |  | -	var pack : Array<String>;
 | 
	
		
			
				|  |  | -	var name : String;
 | 
	
		
			
				|  |  | -	var module : String;
 | 
	
		
			
				|  |  | -	var pos : Expr.Position;
 | 
	
		
			
				|  |  | -	var isPrivate : Bool;
 | 
	
		
			
				|  |  | -	var isExtern : Bool;
 | 
	
		
			
				|  |  | -	var params : Array<TypeParameter>;
 | 
	
		
			
				|  |  | -	var meta : MetaAccess;
 | 
	
		
			
				|  |  | -	var doc : Null<String>;
 | 
	
		
			
				|  |  | -	function exclude() : Void;
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The type of the type parameter. It is guaranteed to be a `TInst` with a
 | 
	
		
			
				|  |  | +		`KTypeParameter` kind.
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var t: Type;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents a class field.
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  typedef ClassField = {
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The name of the class field
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var name : String;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The type of the class field
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var type : Type;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Whether or not the class field is public
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var isPublic : Bool;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The type parameters of the class field
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var params : Array<TypeParameter>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The metadata of the class field
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var meta : MetaAccess;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The class field kind
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var kind : FieldKind;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Returns the typed expression of the class field.
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	function expr() : Null<TypedExpr>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The position of the class field
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var pos : Expr.Position;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The associated documentation of the class field
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var doc : Null<String>;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents an enum constructor
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  | +typedef EnumField = {
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The name of the enum constructor
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var name : String;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The type of the enum constructor
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var type : Type;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The position of the enum constructor
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var pos : Expr.Position;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The metadata of the enum constructor
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var meta : MetaAccess;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The index of the enum constructor, i.e. in which position it appears
 | 
	
		
			
				|  |  | +		in the syntax
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var index : Int;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The associated documentation of the enum constructor
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var doc : Null<String>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The type parameters of the enum constructor
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var params : Array<TypeParameter>;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents the kind of a class.
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  enum ClassKind {
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A normal class
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	KNormal;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A type parameter class with a set of constraints
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	KTypeParameter(constraints:Array<Type>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A structurally extended class
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		@deprecated
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	KExtension(cl:Ref<ClassType>, params:Array<Type>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A special kind of class to encode expressions into type parameters
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	KExpr(expr:Expr);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A `@:generic` base class
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	KGeneric;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A concrete `@:generic` instance, referencing the original class and the
 | 
	
		
			
				|  |  | +		applied type parameters
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	KGenericInstance(cl:Ref<ClassType>, params:Array<Type>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A special class for `haxe.macro.MacroType`
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		@deprecated
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	KMacroType;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		An implementation class of an abstract, i.e. where all its run-time code
 | 
	
		
			
				|  |  | +		is
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	KAbstractImpl(a:Ref<AbstractType>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A `@:genericBuild` class
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	KGenericBuild;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	The information that all types (`ClassType`, `EnumType`, `DefType`,
 | 
	
		
			
				|  |  | +	`AbstractType`) have in common
 | 
	
		
			
				|  |  | +**/
 | 
	
		
			
				|  |  | +typedef BaseType = {
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The package of the type
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var pack : Array<String>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The name of the type
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var name : String;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The module name of the type, which might be different
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var module : String;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The position of the type
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var pos : Expr.Position;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Whether or not the type is private
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var isPrivate : Bool;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Whether or not the type is extern
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var isExtern : Bool;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The type parameters of the type
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var params : Array<TypeParameter>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The metadata of the type
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var meta : MetaAccess;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The associated documentation of the class field
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var doc : Null<String>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Allows excluding the type from compilation
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	function exclude() : Void;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents a class type
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  typedef ClassType = {> BaseType,
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The kind of the class
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var kind : ClassKind;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		If true the type is an interface, otherwise it is a class
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var isInterface : Bool;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The parent class and its type parameters, if available
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var superClass : Null<{ t : Ref<ClassType>, params : Array<Type> }>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The implemented interfaces and their type parameters
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var interfaces : Array<{ t : Ref<ClassType>, params : Array<Type> }>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The member fields of the class
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var fields : Ref<Array<ClassField>>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The static fields of the class
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var statics : Ref<Array<ClassField>>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	//var dynamic : Null<Type>;
 | 
	
		
			
				|  |  |  	//var arrayAccess : Null<Type>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The constructor of the class, if available
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var constructor : Null<Ref<ClassField>>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The `__init__` expression of the class, if available
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var init : Null<TypedExpr>;
 | 
	
		
			
				|  |  | -	var overrides : Array<Ref<ClassField>>;
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -typedef EnumField = {
 | 
	
		
			
				|  |  | -	var name : String;
 | 
	
		
			
				|  |  | -	var type : Type;
 | 
	
		
			
				|  |  | -	var pos : Expr.Position;
 | 
	
		
			
				|  |  | -	var meta : MetaAccess;
 | 
	
		
			
				|  |  | -	var index : Int;
 | 
	
		
			
				|  |  | -	var doc : Null<String>;
 | 
	
		
			
				|  |  | -	var params : Array<TypeParameter>;
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The list of fields that have override status
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var overrides : Array<Ref<ClassField>>;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents an enum type
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  typedef EnumType = {> BaseType,
 | 
	
		
			
				|  |  | -	var constructs : Map<String,EnumField>;
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The available enum constructors
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var constructs : Map<String, EnumField>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		An ordered list of enum constructor names
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var names : Array<String>;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents a typedef
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  typedef DefType = {> BaseType,
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The target type of the typedef
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var type : Type;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents an abstract type
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  typedef AbstractType = {>BaseType,
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The underlying type of the abstract
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var type : Type;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The implementation class of the abstract, if available
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var impl : Null<Ref<ClassType>>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The defined binary operators of the abstract
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var binops : Array<{op:Expr.Binop, field:ClassField}>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The defined unary operators of the abstract
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var unops : Array<{op:Expr.Unop, postFix:Bool, field:ClassField}>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The available implicit from-casts of the abstract
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		@see http://haxe.org/manual/types-abstract-implicit-casts.html
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var from : Array<{t:Type, field:Null<ClassField>}>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The available implicit to-casts of the abstract
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		@see http://haxe.org/manual/types-abstract-implicit-casts.html
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var to : Array<{t:Type, field:Null<ClassField>}>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The defined array-access fields of the abstract
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	var array : Array<ClassField>;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -250,100 +564,413 @@ typedef MetaAccess = {
 | 
	
		
			
				|  |  |  	function has( name : String ) : Bool;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents a field kind
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  enum FieldKind {
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A variable of property, depending on the `read` and `write` values
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	FVar( read : VarAccess, write : VarAccess );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A method
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	FMethod( k : MethodKind );
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents the variable accessor
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  enum VarAccess {
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Normal access (`default`)
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	AccNormal;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Private access (`null`)
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	AccNo;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		No access (`never`)
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	AccNever;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Unused
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	AccResolve;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Access through accessor function (`get`, `set`, `dynamic`)
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	AccCall;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Inline access (`inline`)
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	AccInline;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Failed access due to a `@:require` metadata
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	AccRequire( r : String, ?msg : String );
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents the method kind
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  enum MethodKind {
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A normal method
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	MethNormal;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		An inline method
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		@see http://haxe.org/manual/class-field-inline.html
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	MethInline;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A dynamic, rebindable method
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		@see http://haxe.org/manual/class-field-dynamic.html
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	MethDynamic;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A macro method
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	MethMacro;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents typed constant
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  enum TConstant {
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		An `Int` literal
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TInt(i:Int);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A `Float` literal, represented as String to avoid precision loss
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TFloat(s:String);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A `String` literal
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TString(s:String);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A `Bool` literal
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TBool(b:Bool);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The constant `null`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TNull;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The constant `this`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TThis;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The constant `super`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TSuper;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents a variable in the typed AST.
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  typedef TVar = {
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The unique ID of the variable
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	public var id(default, never):Int;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The name of the variable
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	public var name(default, never):String;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The type of the variable
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	public var t(default, never):Type;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Whether or not the variable has been captured by a closure
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	public var capture(default, never):Bool;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Special information which is internally used to keep track of closure
 | 
	
		
			
				|  |  | +		information
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	public var extra(default,never):Null<{params: Array<TypeParameter>, expr: Null<TypedExpr>}>;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents a module type. These are the types that can be declared in a Haxe
 | 
	
		
			
				|  |  | +	module and which are passed to the generators (except `TTypeDecl`).
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  enum ModuleType {
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A class
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TClassDecl(c:Ref<ClassType>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		An enum
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TEnumDecl(e:Ref<EnumType>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A typedef
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TTypeDecl(t:Ref<DefType>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		An abstract
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TAbstract(a:Ref<AbstractType>);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents a function in the typed AST.
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  typedef TFunc = {
 | 
	
		
			
				|  |  | -	args: Array<{v:TVar, value:Null<TConstant>}>,
 | 
	
		
			
				|  |  | -	t: Type,
 | 
	
		
			
				|  |  | -	expr: TypedExpr
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A list of function arguments identified by an argument variable `v` and
 | 
	
		
			
				|  |  | +		an optional initialization `value`.
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var args: Array<{v:TVar, value:Null<TConstant>}>;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The return type of the function
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var t: Type;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The expression of the function body
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var expr: TypedExpr;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents the kind of field access in the typed AST.
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  enum FieldAccess {
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Access of field `cf` on a class instance `c` with type parameters
 | 
	
		
			
				|  |  | +		`params`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	FInstance(c:Ref<ClassType>, params:Array<Type>, cf:Ref<ClassField>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Static access of a field `cf` on a class `c`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	FStatic(c:Ref<ClassType>, cf:Ref<ClassField>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Access of field `cf` on an anonymous structure
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	FAnon(cf:Ref<ClassField>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Dynamic field access of a field named `s`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	FDynamic(s:String);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Closure field access of field `cf` on a class instance `c` with type
 | 
	
		
			
				|  |  | +		parameters `params`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	FClosure(c:Null<{c:Ref<ClassType>, params:Array<Type>}>, cf:Ref<ClassField>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Field access to an enum constructor `ef` of enum `e`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	FEnum(e:Ref<EnumType>, ef:EnumField);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents kind of a node in the typed AST
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  enum TypedExprDef {
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A constant
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TConst(c:TConstant);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Reference to a local variable `v`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TLocal(v:TVar);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Array access `e1[e2]`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TArray(e1:TypedExpr, e2:TypedExpr);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Binary operator `e1 op e2`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	TBinop(op:Expr.Binop, e1:TypedExpr, e2:TypedExpr);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Field access on `e` according to `fa`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TField(e:TypedExpr, fa:FieldAccess);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Reference to a module type `m`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TTypeExpr(m:ModuleType);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Parentheses `(e)`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TParenthesis(e:TypedExpr);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		An object declaration
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TObjectDecl(fields:Array<{name:String, expr:TypedExpr}>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		An array declaration `[el]`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TArrayDecl(el:Array<TypedExpr>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A call `e(el)`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TCall(e:TypedExpr, el:Array<TypedExpr>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A constructor call `new c<params>(el)`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TNew(c:Ref<ClassType>, params: Array<Type>, el:Array<TypedExpr>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		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)
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TUnop(op:Expr.Unop, postFix:Bool, e:TypedExpr);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A function declaration
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TFunction(tfunc:TFunc);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A variable declaration `var v` or `var v = expr`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TVar(v:TVar, expr:Null<TypedExpr>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A block declaration `{el}`.
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TBlock(el:Array<TypedExpr>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A `for` expression
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TFor(v:TVar, e1:TypedExpr, e2:TypedExpr);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		An `if(econd) eif` or `if(econd) eif else eelse` expression
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TIf(econd:TypedExpr, eif:TypedExpr, eelse:Null<TypedExpr>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Represents a `while` expression.
 | 
	
		
			
				|  |  | +		When `normalWhile` is `true` it is `while (...)`
 | 
	
		
			
				|  |  | +		When `normalWhile` is `false` it is `do {...} while (...)`
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TWhile(econd:TypedExpr, e:TypedExpr, normalWhile:Bool);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Represents a `switch` expression with related cases and an optional
 | 
	
		
			
				|  |  | +		`default` case if edef != null.
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TSwitch(e:TypedExpr, cases:Array<{values:Array<TypedExpr>, expr:TypedExpr}>, edef:Null<TypedExpr>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Represents a `try`-expression with related catches.
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TTry(e:TypedExpr, catches:Array<{v:TVar, expr:TypedExpr}>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A `return` or `return e` expression
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TReturn(e:Null<TypedExpr>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A `break` expression
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TBreak;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A `continue` expression
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TContinue;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A `throw e` expression
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TThrow(e:TypedExpr);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A `cast e` or `cast (e, m)` expression
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TCast(e:TypedExpr, m:Null<ModuleType>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		A `@m e1` expression
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TMeta(m:Expr.MetadataEntry, e1:TypedExpr);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		Access to an enum parameter (generated by the pattern matcher)
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  |  	TEnumParameter(e1:TypedExpr, ef:EnumField, index:Int);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | +	Represents a typed AST node
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  |  typedef TypedExpr = {
 | 
	
		
			
				|  |  | -	expr: TypedExprDef,
 | 
	
		
			
				|  |  | -	pos: Expr.Position,
 | 
	
		
			
				|  |  | -	t: Type
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The expression kind
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var expr: TypedExprDef;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The position of the expression
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var pos: Expr.Position;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +		The type of the expression
 | 
	
		
			
				|  |  | +	**/
 | 
	
		
			
				|  |  | +	var t: Type;
 | 
	
		
			
				|  |  |  }
 |