I was about to make the same suggestion. We can use “I” for interfaces, “c” for 
class, “k” for kind, “n” for names. etc.

> On Dec 11, 2018, at 2:52 PM, Frost, Andrew <andrew.fr...@harman.com> wrote:
> 
> Hi
> 
> Not sure that I fully understand this but would a valid compromise be 
> something where the field name isn't renamed at all automatically, but we 
> just change it in the JS generation code to be "i" rather than "interfaces", 
> and update the Language is/as functions to work with this property name? Not 
> sure whether it would work and I don't know whether the Reflection stuff 
> would then need to change too, but if this is all in the generated outputs 
> and/or the framework's own code then it shouldn't be something that the end 
> user would bother about..
> 
> thanks
> 
>   Andrew
> 
> 
> -----Original Message-----
> From: Alex Harui [mailto:aha...@adobe.com.INVALID] 
> Sent: 11 December 2018 08:32
> To: dev@royale.apache.org
> Subject: [EXTERNAL] ROYALE_CLASS_INFO, renaming, modules, Objects
> 
> I spent some time today trying to get Tour De Flex to run in production mode 
> with the main app and modules being separately minified.
> 
> I've fixed a few things here and there, but an interesting issue I ran into 
> has to do with the plain object we use in ROYALE_CLASS_INFO (and will apply 
> to other objects).
> 
> The ROYALE_CLASS_INFO is generated on each class and has a "names" property 
> and an optional "interfaces" property.  An example is:
> 
> org.apache.royale.html.beads.models.PanelModel.prototype.ROYALE_CLASS_INFO = 
> { names: [{ name: 'PanelModel', qName: 
> 'org.apache.royale.html.beads.models.PanelModel', kind: 'class' }], 
> interfaces: [org.apache.royale.core.IBead, 
> org.apache.royale.core.IPanelModel] };
> 
> Because the field names are not quoted, then in most output, the field name 
> "interfaces" is renamed and all code referencing this field is renamed as 
> well.  This is good because it means that you don't have to download the word 
> "interfaces" once per-class. Instead of 10 characters, it is usually one or 
> two.  100 classes saves you about 900 bytes.
> 
> However, it turns out that in Tour De Flex, the main app uses Reflection and 
> Reflection uses a quoted 'interfaces' string and thus, the field name 
> 'interfaces' in ROYALE_CLASS_INFO isn't renamed, but in most modules 
> "interfaces" is renamed since no other code in the module has a quoted string 
> for 'interfaces'.  But that means that when a module loads, the 
> Language.is/as won't work since classes in the main app are using 
> "interfaces" but the classes in the module are using some short name.
> 
> One solution is to always quote that field in the compiler output and 
> Language is/as so it doesn't get renamed, but that means that field will 
> never get renamed and you lose saving those bytes.
> 
> Another is let folks figure out their own workarounds, by adding some code 
> that will prevent the renaming in the modules.
> 
> Other ideas are welcome.  I'm done for tonight.
> 
> Thoughts?
> -Alex
> 

Reply via email to