I'll take a look at these when I'm back in action next week!

- Josh

On 2019/02/10 10:02:53, Harbs <[email protected]> wrote: 
> The commit seems to break some things for me.
> 
> I’m working on finding the exact problem, but I’m noticing issues along the 
> way:
> 
> 1.
> In function:
> function drawPath(path:BezierPathVO,b:PathBuilder):void
> 
> The following:
> b.moveTo(path.pathPoints[0].anchor.x,path.pathPoints[0].anchor.y);
> 
> compiles to:
> b.moveTo(Number(path.pathPoints[0].anchor.x), 
> Number(path.pathPoints[0].anchor.y));
> 
> pathPoints is of type Vector.<PathPointVO>
> and PathPointVO anchor is of type Point
> 
> x and y should be inferrable that they are Numbers and it should compile 
> unchanged.
> 
> 2.
> paragraph.setStyle("tabXML", escape(para.tabXML.toXMLString()));
> 
> Compiles to:
> paragraph.setStyle("tabXML", 
> escape(org.apache.royale.utils.Language.string(para.tabXML.toXMLString())));
> 
> para.tabXML is typed as XML and toXMLString() should be recognizable as a 
> String and Language.string() should not be called.
> 
> 3.
> var file:XML = files[i];
> doc.retrieveFile([email protected]());
> 
> Compiles to:
> doc.retrieveFile(org.apache.royale.utils.Language.string(file.attribute('loc').toString()));
> 
> The compiler should know that toString() is a string and doesn’t need 
> Language.string()
> 
> 4.
> Another interesting change:
> stroke.setLineStyle(1,0x00FFFF,1);
> 
> Now becomes:
> stroke.setLineStyle(1, 65535, 1);
> 
> I’m not sure whether this is something we should be concerned about or not.
> 
> 5.
> XML has many cases where you have something like this:
> xml.setNodeKind(_nodeKind);
> becomes
> xml.setNodeKind(org.apache.royale.utils.Language.string(this.XML__nodeKind));
> 
> Although everything is strings…
> 
> 
> 
> 
> 
> 
> > On Feb 6, 2019, at 6:40 PM, [email protected] wrote:
> > 
> > This is an automated email from the ASF dual-hosted git repository.
> > 
> > joshtynjala pushed a commit to branch develop
> > in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
> > 
> > commit fd7b81f4448db0f5eb70f22208c9144549cc4806
> > Author: Josh Tynjala <[email protected]>
> > AuthorDate: Wed Feb 6 08:36:10 2019 -0800
> > 
> >    ParametersEmitter: fixed automatic type coercion and added some tests 
> > (closes #74)
> > ---
> > .../js/jx/FunctionCallArgumentsEmitter.java        | 10 +++++--
> > .../codegen/js/royale/TestRoyaleExpressions.java   | 34 
> > +++++++++++++++++++++-
> > 2 files changed, 40 insertions(+), 4 deletions(-)
> > 
> > diff --git 
> > a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FunctionCallArgumentsEmitter.java
> >  
> > b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FunctionCallArgumentsEmitter.java
> > index 40b6302..c92f189 100644
> > --- 
> > a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FunctionCallArgumentsEmitter.java
> > +++ 
> > b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FunctionCallArgumentsEmitter.java
> > @@ -61,17 +61,21 @@ public class FunctionCallArgumentsEmitter extends 
> > JSSubEmitter implements
> >         for (int i = 0; i < len; i++)
> >         {
> >             IExpressionNode argumentNode = (IExpressionNode) 
> > node.getChild(i);
> > -            IParameterDefinition paramDef = null;
> > +            IDefinition paramTypeDef = null;
> >             if (paramDefs != null && paramDefs.length > i)
> >             {
> > -                paramDef = paramDefs[i];
> > +                IParameterDefinition paramDef = paramDefs[i];
> >                 if (paramDef.isRest())
> >                 {
> >                     paramDef = null;
> >                 }
> > +                if (paramDef != null)
> > +                {
> > +                    paramTypeDef = paramDef.resolveType(getProject());
> > +                }
> >             }
> > 
> > -            getEmitter().emitAssignmentCoercion(argumentNode, paramDef);
> > +            getEmitter().emitAssignmentCoercion(argumentNode, 
> > paramTypeDef);
> > 
> >             if (i < len - 1)
> >             {
> > diff --git 
> > a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java
> >  
> > b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java
> > index 93db140..56b6363 100644
> > --- 
> > a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java
> > +++ 
> > b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java
> > @@ -1523,7 +1523,7 @@ public class TestRoyaleExpressions extends 
> > TestGoogExpressions
> >     @Test
> >     public void testVisitCallFunctionReturnedFromFunction()
> >     {
> > -        IFunctionCallNode node = (IFunctionCallNode) getNode("function 
> > foo(a:String, b:String):Function { return null }; return foo(3, 4)(1, 2);", 
> > +        IFunctionCallNode node = (IFunctionCallNode) getNode("function 
> > foo(a:int, b:int):Function { return null }; return foo(3, 4)(1, 2);", 
> >                                                             
> > IFunctionCallNode.class);
> >         asBlockWalker.visitFunctionCall(node);
> >         assertOut("foo(3, 4)(1, 2)");
> > @@ -1571,6 +1571,38 @@ public class TestRoyaleExpressions extends 
> > TestGoogExpressions
> >         assertOut("return 4294967173");
> >     }
> > 
> > +    @Test
> > +    public void testVisitFunctionCallWithIntParameterNegative()
> > +    {
> > +        IFunctionCallNode node = (IFunctionCallNode) getNode("function 
> > a(foo:int):void {}; a(-123)", IFunctionCallNode.class);
> > +        asBlockWalker.visitFunctionCall(node);
> > +        assertOut("a(-123)");
> > +    }
> > +
> > +    @Test
> > +    public void testVisitFunctionCallWithIntParameterDecimal()
> > +    {
> > +        IFunctionCallNode node = (IFunctionCallNode) getNode("function 
> > a(foo:int):void {}; a(123.4)", IFunctionCallNode.class);
> > +        asBlockWalker.visitFunctionCall(node);
> > +        assertOut("a(123)");
> > +    }
> > +
> > +    @Test
> > +    public void testVisitFunctionCallWithUintParameterNegative()
> > +    {
> > +        IFunctionCallNode node = (IFunctionCallNode) getNode("function 
> > a(foo:uint):void {}; a(-123)", IFunctionCallNode.class);
> > +        asBlockWalker.visitFunctionCall(node);
> > +        assertOut("a(4294967173)");
> > +    }
> > +
> > +    @Test
> > +    public void testVisitFunctionCallWithUintParameterDecimal()
> > +    {
> > +        IFunctionCallNode node = (IFunctionCallNode) getNode("function 
> > a(foo:uint):void {}; a(123.4)", IFunctionCallNode.class);
> > +        asBlockWalker.visitFunctionCall(node);
> > +        assertOut("a(123)");
> > +    }
> > +
> >     protected IBackend createBackend()
> >     {
> >         return new RoyaleBackend();
> > 
> 
> 

Reply via email to