8.1 Built-in Compiler Metadata
Starting from Haxe 3.0, you can get the list of defined compiler metadata by running haxe --help-metas
Global metadata
Metadata | Description | Platform |
---|---|---|
@:abi | Function ABI/calling convention | cpp |
@:abstract | Sets the underlying class implementation as abstract type | cs java |
@:access (Target path) | Forces private access to package type or field, see Access Control | all |
@:allow (Target path) | Allows private access from package type or field, see Access Control | all |
@:analyzer | Used to configure the static analyzer | all |
@:annotation | Annotation (<code>@interface</code>) definitions on -java-lib imports will be annotated with this metadata. Has no effect on types compiled by Haxe |
java |
@:arrayAccess | Allows Array access on an abstract | all |
@:autoBuild (Build macro call) | Extends <code>@:build</code> metadata to all extending and implementing classes. See Macro autobuild | all |
@:bind | Override Swf class declaration | flash |
@:bitmap (Bitmap file path) | _Embeds given bitmap data into the class (must extend flash.display.BitmapData ) |
flash |
@:bridgeProperties | Creates native property bridges for all Haxe properties in this class | cs |
@:build (Build macro call) | Builds a class or enum from a macro. See Type Building | all |
@:buildXml | Specify xml data to be injected into Build.xml | cpp |
@:callable | Abstract forwards call to its underlying type | all |
@:classCode | Used to inject platform-native code into a class | cs java |
@:commutative | Declares an abstract operator as commutative | all |
@:compilerGenerated | Marks a field as generated by the compiler. Shouldn't be used by the end user | cs java |
@:coreApi | Identifies this class as a core api class (forces Api check) | all |
@:coreType | Identifies an abstract as core type so that it requires no implementation | all |
@:cppFileCode | Code to be injected into generated cpp file | cpp |
@:cppInclude | File to be included in generated cpp file | cpp |
@:cppNamespaceCode | cpp | |
@:dce | Forces Dead Code Elimination even when not -dce full is specified |
all |
@:debug | Forces debug information to be generated into the Swf even without -debug |
flash |
@:decl | cpp | |
@:defParam | all | |
@:delegate | Automatically added by -net-lib on delegates |
cs |
@:depend | cpp | |
@:deprecated | Automatically added by -java-lib on class fields annotated with <code>@Deprecated</code> annotation. Has no effect on types compiled by Haxe |
java |
@:event | Automatically added by -net-lib on events. Has no effect on types compiled by Haxe |
cs |
@:enum | Defines finite value sets to abstract definitions. See enum abstracts | all |
@:expose (?Name=Class path) | Makes the class available on the window object or exports for node.js. See exposing Haxe classes for JavaScript |
js |
@:extern | Marks the field as extern so it is not generated | all |
@:fakeEnum (Type name) | Treat enum as collection of values of the specified type | all |
@:file(File path) | Includes a given binary file into the target Swf and associates it with the class (must extend flash.utils.ByteArray ) |
flash |
@:final | Prevents a class from being extended | all |
@:font (TTF path Range String) | Embeds the given TrueType font into the class (must extend flash.text.Font ) |
flash |
@:forward (List of field names) | Forwards field access to underlying type | all |
@:from | Specifies that the field of the abstract is a cast operation from the type identified in the function. See Implicit Casts | all |
@:functionCode | cpp | |
@:functionTailCode | cpp | |
@:generic | Marks a class or class field as generic so each type parameter combination generates its own type/field | all |
@:genericBuild | Builds instances of a type using the specified macro | all |
@:getter (Class field name) | Generates a native getter function on the given field | flash |
@:hack | Allows extending classes marked as <code>@:final</code> | all |
@:headerClassCode | Code to be injected into the generated class, in the header | cpp |
@:headerCode | Code to be injected into the generated header file | cpp |
@:headerNamespaceCode | cpp | |
@:hxGen | Annotates that an extern class was generated by Haxe | cs java |
@:ifFeature (Feature name) | Causes a field to be kept by DCE if the given feature is part of the compilation | all |
@:include | cpp | |
@:initPackage | all | |
@:internal | Generates the annotated field/class with internal access |
cs java |
@:isVar | Forces a physical field to be generated for properties that otherwise would not require one | all |
@:javaCanonical (Output type package,Output type name) | Used by the Java target to annotate the canonical path of the type | java |
@:jsRequire | Generate javascript module require expression for given extern | js |
@:keep | Causes a field or type to be kept by DCE | all |
@:keepInit | Causes a class to be kept by DCE even if all its field are removed | all |
@:keepSub | Extends <code>@:keep</code> metadata to all implementing and extending classes | all |
@:macro | (deprecated) | all |
@:mergeBlock | Merge the annotated block into the current scope | all |
@:meta | Internally used to mark a class field as being the metadata field | all |
@:multiType (Relevant type parameters) | Specifies that an abstract chooses its this-type from its <code>@:to</code> functions | all |
@:native (Output type path) | Rewrites the path of a class or enum during generation | all |
@:nativeChildren | Annotates that all children from a type should be treated as if it were an extern definition - platform native | cs java |
@:nativeGen | Annotates that a type should be treated as if it were an extern definition - platform native | cs java |
@:nativeProperty | Use native properties which will execute even with dynamic usage | cpp |
@:noCompletion | Prevents the compiler from suggesting completion on this field | all |
@:noDebug | Does not generate debug information into the Swf even if -debug is set |
flash |
@:noDoc | Prevents a type from being included in documentation generation | all |
@:noImportGlobal | Prevents a static field from being imported with import Class.* |
all |
@:noPrivateAccess | Disallow private access to anything for the annotated expression | all |
@:noStack | cpp | |
@:noUsing | Prevents a field from being used with using |
all |
@:nonVirtual | Declares function to be non-virtual | cpp |
@:notNull | Declares an abstract type as not accepting null values |
all |
@:ns | Internally used by the Swf generator to handle namespaces | flash |
@:op (The operation) | Declares an abstract field as being an operator overload | all |
@:optional | Marks the field of a structure as optional. See Optional Arguments | all |
@:overload (Function specification) | Allows the field to be called with different argument types. Function specification cannot be an expression | all |
@:privateAccess | Allow private access to anything for the annotated expression | all |
@:property | Marks a property field to be compiled as a native C# property | cs |
@:protected | Marks a class field as being protected | all |
@:public | Marks a class field as being public | all |
@:publicFields | Forces all class fields of inheriting classes to be public | all |
@:pythonImport | Generates python import statement for extern classes | python |
@:readOnly | Generates a field with the readonly native keyword |
cs |
@:remove | Causes an interface to be removed from all implementing classes before generation | all |
@:require (Compiler flag to check) | Allows access to a field only if the specified compiler flag is set | all |
@:rtti | Adds runtime type informations. See RTTI | all |
@:runtime | all | |
@:runtimeValue | Marks an abstract as being a runtime value | all |
@:selfCall | Translates method calls into calling object directly | js |
@:setter (Class field name) | Generates a native setter function on the given field | flash |
@:sound (File path) | Includes a given .wav or .mp3 file into the target Swf and associates it with the class (must extend flash.media.Sound ) |
flash |
@:sourceFile | Source code filename for external class | cpp |
@:strict | Used to declare a native C# attribute or a native Java metadata. Is type checked | cs java |
@:struct | Marks a class definition as a struct | cs |
@:structAccess | Marks an extern class as using struct access('.') not pointer('->') | cpp |
@:suppressWarnings | Adds a SuppressWarnings annotation for the generated Java class | java |
@:throws (Type as String) | Adds a throws declaration to the generated function |
java |
@:to | Specifies that the field of the abstract is a cast operation to the type identified in the function. See Implicit Casts | all |
@:transient | Adds the transient flag to the class field |
java |
@:unbound | Compiler internal to denote unbounded global variable | all |
@:unifyMinDynamic | Allows a collection of types to unify to Dynamic | all |
@:unreflective | cpp | |
@:unsafe | Declares a class or a method with the C#'s unsafe flag |
cs |
@:usage | all | |
@:value | Used to store default values for fields and function arguments | all |
@:void | Use Cpp native 'void' return type | cpp |
@:volatile | cs java |