Harbs opened a new issue #202:
URL: https://github.com/apache/royale-compiler/issues/202


   Using this simple app:
   ```
   <?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" />
           </js:View>
       </js:initialView>
   </js:Application>
   ```
   If you compile using this config:
   ```
   {
       "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"
       ]
   }
   ```
   You get 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(){}}
   ```
   That's a lot of unnecessary cruft.
   
   My best guess on why that's happening is:
   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.
   
   Only the interface information is needed by Language. The `name` and `qname` 
are only needed for reflection.
   
   The solution is probably to separate the class `name` and `qname` from the 
interface dependencies. It seems like they should be two variables.
   
   That should free up `name` and `qname` to be removed unless Reflection is 
used.
   
   Names that make sense would be `ROYALE_CLASS_INFO` and 
`ROYALE_INTERFACE_INFO`. A question I have would be whether pulling out the 
interface info might cause problems for existing SWC libraries. Probably yes, 
but requiring rebuilding SWCs is probably reasonable.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@royale.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to