On 12/12/16, 9:13 AM, "Josh Tynjala" <joshtynj...@gmail.com> wrote:
>Yeah, if we could make it work without creating a SWC, I think that would >be ideal. The fewer steps it takes to add third-party libraries to a >project, the better. > >I notice that you seem to have a preference for custom ASDoc tags, like >@externs or @flexjsignorecoercion for changing the compiler's behavior. >Why >not metadata, like [Extern] or [IgnoreCoercion], instead? Personally, >using >ASDoc tags for something other than documentation doesn't feel quite right >to me. Metadata has long been used to pass extra information to the >compiler, though. Plus, if something needs more complex configuration, >metadata is more like setting properties on an object: >[Metadata(option1="true",option2="hello world")]. I've been meaning to ask >you about this for a while, but I kept forgetting. I tend to offer up custom ASDoc tags as compiler directives because Google Closure Compiler uses a similar JSDoc tag set in a similar way. It controls the output and doesn't always need to be kept around after the compile. IIRC, the compiler and runtime teams thought Metadata was an overused mess. It has several inconsistent uses. I think only [Bindable] actually is a compiler directive that alters the compiler output. Other metadata is used by MXML and IDEs to declare events and styles but doesn't alter the byte code of the class it annotates other than being stored in the SWC and deleted from the final SWF. All other metadata, including Bindable, are annotations stored in the code for use by the code, where it is hard.slow to access in Flash. @externs could be [Externs] since it is needed after compile time, but I can't think of a good reason to store it in the byte code. It isn't needed by MXML, IDEs, or at runtime, and has to appear in the JSDoc output so the Google Closure Compiler can use it. Of course, I could be convinced otherwise... -Alex