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.
>>>>> 
>>>>> 
>>> 
>> 
> 

Reply via email to