aharui commented on issue #57: Dependency error when extending class and 
implementing interface from "external" SWC library
URL: https://github.com/apache/royale-compiler/issues/57#issuecomment-440091062
 
 
   Well, after playing with it a bit, my conclusion is that using Royale JS 
output as externs "mostly works".  If you change to use ADVANCED_OPTIMIZATIONS, 
you get warnings.  The Closure Compiler does appear to do the right thing 
regarding renaming though.  It is nice to know that they can handle more 
complex code like Object.defineProperties in externs.  However, the warnings 
make me lean away from just handing over JS files from the SWC to the compiler 
as externs.
   
   In your earlier comments, you mentioned having to create the loadable file 
that contains the definitions that you are declaring as externs.  I don't know 
how familiar you are with Adobe/Apache Flex, but that loadable file is called a 
Module (in Flex, sometimes it was also called a runtime-shared-library (RSL)).
   
   SWCs are Libraries, and shouldn't know how they are going to be 
loaded/linked.  I haven't used Microsoft Visual C++ in a long time, but 
similarly, you might link a C/C++ library into a DLL or the main app to 
actually load the code.  Flex works similarly.  Royale should too, IMO.
   
   What I am proposing is to replicate the Flex module workflow in Royale.  
Ideally, you should never have to call the Closure Compiler yourself.  You 
should be able to use the Royale compiler to create that loadable file.  It 
should be as simple as creating a file like our BasicClasses.as which imports 
and declares all the files that should go into a loadable file and compiling 
that one file.
   
   I propose to add the ability for the compiler to generate a legitimate 
externs file based on what actually went into the loadable file, which could 
then be a subset of a SWC or classes from multiple SWCs.  And doing do will 
enable the same sort of optimization that folks are used to if they are 
familiar with Flex modules.  In adding this feature we enable the Module 
optimization where a module might use some classes from a SWC that the main 
application doesn't and we will only use the classes the main application 
actually used in the externs.
   
   Yes, I am basically suggesting that you change your workflow once I get the 
externs-report feature working.  That away I only have to implement one feature 
that should help both you and users of Royale Modules.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to