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-libimports 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 fullis 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-libon delegates | cs | 
| @:depend | cpp | |
| @:deprecated | Automatically added by -java-libon class fields annotated with <code>@Deprecated</code> annotation. Has no effect on types compiled by Haxe | java | 
| @:event | Automatically added by -net-libon 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 windowobject orexportsfor 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 internalaccess | 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 -debugis 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 nullvalues | 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 readonlynative 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 throwsdeclaration 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 transientflag 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 unsafeflag | 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 |