I summarized this in an issue: https://github.com/apache/royale-compiler/issues/202
> On Dec 1, 2021, at 8:13 PM, Harbs <harbs.li...@gmail.com> wrote: > > I suspect that the following is happening: > > 1. Language.as uses ROYALE_CLASS_INFO to find interfaces. > 2. That makes Closure Compiler assume ROYALE_CLASS_INFO is needed. > 3. All the info from ROYALE_CLASS_INFO including the class name and qname is > preserved. > > Perhaps we should have two variables: > 1. ROYALE_CLASS_INFO for the name and qname > 2. ROYALE_INTERFACE_INFO for the interface dependency > > That should free up ROYALE_CLASS_INFO to be removed unless Reflection is used. > > Thoughts? > >> On Dec 1, 2021, at 7:50 PM, Harbs <harbs.li...@gmail.com> wrote: >> >> It looks to me like that’s it. >> >> We have this included in the minified code which should not be there: >> >> ke.prototype.g={names:[{name:'IStyleObject',h:fb,kind:k}]}; >> >>> On Dec 1, 2021, at 7:46 PM, Harbs <harbs.li...@gmail.com> wrote: >>> >>> Hmm. Maybe. >>> >>> Greg, I think that’s your area of expertise. >>> >>>> On Dec 1, 2021, at 7:45 PM, Josh Tynjala <joshtynj...@bowlerhat.dev> wrote: >>>> >>>> Could those be the qname strings added to the ROYALE_CLASS_INFO object? >>>> >>>> For example, I assume that this one: >>>> >>>> fb='org.apache.royale.core.IStyleObject' >>>> >>>> Comes from here: >>>> >>>> /** >>>> * Metadata >>>> * >>>> * @type {Object.<string, Array.<Object>>} >>>> */ >>>> org.apache.royale.core.IStyleObject.prototype.ROYALE_CLASS_INFO = { names: >>>> [{ name: 'IStyleObject', qName: 'org.apache.royale.core.IStyleObject', >>>> kind: 'interface' }] }; >>>> >>>> I'm not super familiar with the reflection system, so that's just a guess. >>>> >>>> -- >>>> Josh Tynjala >>>> Bowler Hat LLC <https://bowlerhat.dev> >>>> >>>> >>>> On Wed, Dec 1, 2021 at 9:25 AM Harbs <harbs.li...@gmail.com> wrote: >>>> >>>>> Maybe I’m missing a compiler option, but I compiled this: >>>>> >>>>> <?xml version="1.0" encoding="utf-8"?> >>>>> <js:Application xmlns:fx="http://ns.adobe.com/mxml/2009" >>>>> xmlns:js="library://ns.apache.org/royale/basic" >>>>> applicationComplete="onComplete()"> >>>>> <fx:Script> >>>>> <![CDATA[ >>>>> private function onComplete():void{ >>>>> trace("foo"); >>>>> } >>>>> ]]> >>>>> </fx:Script> >>>>> <js:valuesImpl> >>>>> <js:SimpleCSSValuesImpl /> >>>>> </js:valuesImpl> >>>>> <js:initialView> >>>>> <js:View> >>>>> <js:Label text="ID" id="id1" localId="id1" /> >>>>> </js:View> >>>>> </js:initialView> >>>>> </js:Application> >>>>> >>>>> with this: >>>>> >>>>> { >>>>> "config": "royale", >>>>> "compilerOptions": { >>>>> "debug": true, >>>>> "targets": ["JSRoyale"], >>>>> "source-map": true, >>>>> "remove-circulars": true >>>>> }, >>>>> "additionalOptions": "-js-output-optimization=skipAsCoercions >>>>> -allow-abstract-classes=true -js-vector-emulation-class=Array >>>>> -js-vector-index-checks=false -js-complex-implicit-coercions=false >>>>> -export-public-symbols=false -prevent-rename-protected-symbols=false >>>>> -prevent-rename-public-static-methods=false >>>>> -prevent-rename-public-instance-methods=false >>>>> -prevent-rename-public-static-variables=false >>>>> -prevent-rename-public-instance-variables=false >>>>> -prevent-rename-public-instance-accessors=false", >>>>> "files": >>>>> [ >>>>> "src/test_project.mxml" >>>>> ] >>>>> } >>>>> >>>>> And got this at the top of the minified code: >>>>> >>>>> >>>>> var aa='Error #1034: Type Coercion failed: cannot convert >>>>> ',ba='applicationComplete',ca='array',da='backgroundImage',ea='border-box',fa='childrenAdded',f='class',ha='deferredSizeHandler',ia='explicitHeightChanged',ja='explicitWidthChanged',h='function',ka='handleInitComplete',la='handleSizeChange',ma='heightChanged',na='inherit',oa='initComplete',k='interface',pa='number',qa='object',ra='org.apache.royale.core.Application',sa='org.apache.royale.core.ApplicationBase',ta='org.apache.royale.core.Bead', >>>>> >>>>> ua='org.apache.royale.core.BeadViewBase',va='org.apache.royale.core.DispatcherBead',wa='org.apache.royale.core.ElementWrapper',xa='org.apache.royale.core.GroupBase',ya='org.apache.royale.core.HTMLElementWrapper',za='org.apache.royale.core.IApplicationView',Aa='org.apache.royale.core.IBead',Ba='org.apache.royale.core.IBeadController',Ca='org.apache.royale.core.IBeadLayout',Da='org.apache.royale.core.IBeadModel',Ea='org.apache.royale.core.IBeadView',Fa='org.apache.royale.core.IBorderPaddingMarginValuesImpl', >>>>> >>>>> Ga='org.apache.royale.core.ICSSImpl',Ha='org.apache.royale.core.IChild',Ia='org.apache.royale.core.IContainer',Ja='org.apache.royale.core.IContentViewHost',Ka='org.apache.royale.core.IDocument',La='org.apache.royale.core.IFlexInfo',Ma='org.apache.royale.core.IId',Na='org.apache.royale.core.IInitialViewApplication',Oa='org.apache.royale.core.ILayoutChild',Pa='org.apache.royale.core.ILayoutHost',Qa='org.apache.royale.core.ILayoutParent',Ra='org.apache.royale.core.ILayoutView',Sa='org.apache.royale.core.IMXMLDocument', >>>>> >>>>> Ta='org.apache.royale.core.IMeasurementBead',Ua='org.apache.royale.core.IParent',Va='org.apache.royale.core.IParentIUIBase',Wa='org.apache.royale.core.IPopUpHost',Xa='org.apache.royale.core.IPopUpHostParent',Ya='org.apache.royale.core.IRenderedObject',Za='org.apache.royale.core.IRoyaleElement',$a='org.apache.royale.core.IState',ab='org.apache.royale.core.IStatesImpl',bb='org.apache.royale.core.IStatesObject',cb='org.apache.royale.core.IStrand',db='org.apache.royale.core.IStrandWithModel',eb='org.apache.royale.core.IStrandWithModelView', >>>>> >>>>> fb='org.apache.royale.core.IStyleObject',gb='org.apache.royale.core.IStyleableObject',hb='org.apache.royale.core.IUIBase',ib='org.apache.royale.core.IValuesImpl',jb='org.apache.royale.core.LayoutBase',kb='org.apache.royale.core.SimpleCSSValuesImpl',lb='org.apache.royale.core.UIBase',mb='org.apache.royale.core.ValuesManager',nb='org.apache.royale.core.View',ob='org.apache.royale.core.ViewBase',pb='org.apache.royale.core.WrappedHTMLElement',qb='org.apache.royale.core.layout.EdgeData',rb='org.apache.royale.core.layout.LayoutData', >>>>> >>>>> sb='org.apache.royale.core.layout.MarginData',tb='org.apache.royale.core.styles.BorderStyles',ub='org.apache.royale.events.BrowserEvent',vb='org.apache.royale.events.ElementEvents',wb='org.apache.royale.events.Event',xb='org.apache.royale.events.EventDispatcher',yb='org.apache.royale.events.IBrowserEvent',zb='org.apache.royale.events.IEventDispatcher',Ab='org.apache.royale.events.IRoyaleEvent',Bb='org.apache.royale.events.ValueChangeEvent',Cb='org.apache.royale.events.ValueEvent',Db='org.apache.royale.events.utils.EventUtils', >>>>> Eb='org.apache.royale.html.Label',Fb='org.apache.royale.html.beads.GroupView',Gb='org.apache.royale.html.beads.layouts.BasicLayout',Hb='org.apache.royale.utils.CSSUtils',Ib='org.apache.royale.utils.MXMLDataInterpreter',Jb='org.apache.royale.utils.StringPadder',Kb='org.apache.royale.utils.Timer',Lb='percentHeightChanged',Mb='percentWidthChanged',Nb='resizeHandler',Ob='sizeChanged',Pb='string',Qb='test_project',Rb='viewChanged',Sb='widthChanged';function >>>>> l(){return function(){}} >>>>> >>>>>> On Dec 1, 2021, at 7:14 PM, Josh Tynjala <joshtynj...@bowlerhat.dev> >>>>> wrote: >>>>>> >>>>>>> I also noticed that none of these options seem to allow class names to >>>>> be >>>>>> dropped. That’s a lot of baggage being carried around for no apparent >>>>>> reason. >>>>>> >>>>>> It's certainly possible that I accidentally overlooked class renaming, >>>>> but >>>>>> that doesn't sound right to me. I'll double-check. >>>>> >>>>> >>> >> >