arguments are output similar to parameters, with the wrapping (), source maps 
for parameters and arguments


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/c381df34
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/c381df34
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/c381df34

Branch: refs/heads/develop
Commit: c381df34557b6e6441fa94a0ec09bc485f0faf52
Parents: 4f9787c
Author: Josh Tynjala <[email protected]>
Authored: Fri Apr 1 12:45:27 2016 -0700
Committer: Josh Tynjala <[email protected]>
Committed: Fri Apr 1 12:45:27 2016 -0700

----------------------------------------------------------------------
 .../js/sourcemaps/TestSourceMapExpressions.java |  29 +++++
 .../internal/test/SourceMapTestBase.java        |   1 +
 .../flex/compiler/codegen/as/IASEmitter.java    |   2 +
 .../compiler/internal/codegen/as/ASEmitter.java |  31 +++---
 .../compiler/internal/codegen/js/JSEmitter.java |  45 +++++++-
 .../internal/codegen/js/amd/JSAMDEmitter.java   |  38 ++++---
 .../codegen/js/flexjs/JSFlexJSEmitter.java      | 108 ++++++++++++-------
 .../internal/codegen/js/goog/JSGoogEmitter.java |   6 +-
 .../codegen/js/jx/FunctionCallEmitter.java      |  26 ++---
 .../codegen/js/vf2js/JSVF2JSEmitter.java        |   8 +-
 10 files changed, 203 insertions(+), 91 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c381df34/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapExpressions.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapExpressions.java
 
b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapExpressions.java
index c34f68a..5a94d96 100644
--- 
a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapExpressions.java
+++ 
b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapExpressions.java
@@ -6,6 +6,7 @@ import org.apache.flex.compiler.internal.test.SourceMapTestBase;
 import org.apache.flex.compiler.internal.tree.as.ArrayLiteralNode;
 import org.apache.flex.compiler.internal.tree.as.ObjectLiteralNode;
 import org.apache.flex.compiler.tree.as.IBinaryOperatorNode;
+import org.apache.flex.compiler.tree.as.IContainerNode;
 import org.apache.flex.compiler.tree.as.IDynamicAccessNode;
 import org.apache.flex.compiler.tree.as.IFunctionCallNode;
 import org.apache.flex.compiler.tree.as.IIterationFlowNode;
@@ -665,6 +666,34 @@ public class TestSourceMapExpressions extends 
SourceMapTestBase
         assertMapping(node, 0, 0, 0, 0, 0, 7);
     }
 
+    @Test
+    public void testVisitFunctionCall_1()
+    {
+        IFunctionCallNode node = (IFunctionCallNode) getNode("a()", 
IFunctionCallNode.class);
+        asBlockWalker.visitFunctionCall(node);
+        assertMapping(node, 0, 1, 0, 1, 0, 2);
+        assertMapping(node, 0, 2, 0, 2, 0, 3);
+    }
+
+    @Test
+    public void testVisitFunctionCall_2()
+    {
+        IFunctionCallNode node = (IFunctionCallNode) getNode("a(b)", 
IFunctionCallNode.class);
+        asBlockWalker.visitFunctionCall(node);
+        assertMapping(node, 0, 1, 0, 1, 0, 2);
+        assertMapping(node, 0, 3, 0, 3, 0, 4);
+    }
+
+    @Test
+    public void testVisitFunctionCall_3()
+    {
+        IFunctionCallNode node = (IFunctionCallNode) getNode("a(b, c)", 
IFunctionCallNode.class);
+        asBlockWalker.visitFunctionCall(node);
+        assertMapping(node, 0, 1, 0, 1, 0, 2);
+        assertMapping(node, 0, 3, 0, 3, 0, 5);
+        assertMapping(node, 0, 6, 0, 6, 0, 7);
+    }
+
     protected IBackend createBackend()
     {
         return new FlexJSBackend();

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c381df34/compiler.jx.tests/src/org/apache/flex/compiler/internal/test/SourceMapTestBase.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx.tests/src/org/apache/flex/compiler/internal/test/SourceMapTestBase.java
 
b/compiler.jx.tests/src/org/apache/flex/compiler/internal/test/SourceMapTestBase.java
index 756674b..a7b18cf 100644
--- 
a/compiler.jx.tests/src/org/apache/flex/compiler/internal/test/SourceMapTestBase.java
+++ 
b/compiler.jx.tests/src/org/apache/flex/compiler/internal/test/SourceMapTestBase.java
@@ -40,6 +40,7 @@ public class SourceMapTestBase extends ASTestBase
                     && endPosition.getColumn() == outEndColumn)
             {
                 foundMapping = true;
+                break;
             }
         }
         assertTrue("Mapping not found for node " + node.toString(), 
foundMapping);

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c381df34/compiler.jx/src/org/apache/flex/compiler/codegen/as/IASEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/codegen/as/IASEmitter.java 
b/compiler.jx/src/org/apache/flex/compiler/codegen/as/IASEmitter.java
index 1a666f1..bd0d1eb 100644
--- a/compiler.jx/src/org/apache/flex/compiler/codegen/as/IASEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/codegen/as/IASEmitter.java
@@ -306,6 +306,8 @@ public interface IASEmitter extends IEmitter
      * @param node The {@link IFunctionCallNode} node.
      */
     void emitFunctionCall(IFunctionCallNode node);
+    
+    void emitArguments(IContainerNode node);
 
     void emitIterationFlow(IIterationFlowNode node);
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c381df34/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
index 53ce765..309d156 100644
--- 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
+++ 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
@@ -1135,9 +1135,24 @@ public class ASEmitter implements IASEmitter, IEmitter
         }
 
         getWalker().walk(node.getNameNode());
+        
+        emitArguments(node.getArgumentsNode());
+    }
 
+    @Override
+    public void emitArguments(IContainerNode node)
+    {
         write(ASEmitterTokens.PAREN_OPEN);
-        walkArguments(node.getArgumentNodes());
+        int len = node.getChildCount();
+        for (int i = 0; i < len; i++)
+        {
+            IExpressionNode argumentNode = (IExpressionNode) node.getChild(i);
+            getWalker().walk(argumentNode);
+            if (i < len - 1)
+            {
+                writeToken(ASEmitterTokens.COMMA);
+            }
+        }
         write(ASEmitterTokens.PAREN_CLOSE);
     }
 
@@ -1203,20 +1218,6 @@ public class ASEmitter implements IASEmitter, IEmitter
         return null;
     }
 
-    public void walkArguments(IExpressionNode[] nodes)
-    {
-        int len = nodes.length;
-        for (int i = 0; i < len; i++)
-        {
-            IExpressionNode node = nodes[i];
-            getWalker().walk(node);
-            if (i < len - 1)
-            {
-                writeToken(ASEmitterTokens.COMMA);
-            }
-        }
-    }
-
     
//--------------------------------------------------------------------------
     // Static Utility
     
//--------------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c381df34/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
index bd7bf15..5f5b816 100644
--- 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
+++ 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
@@ -162,7 +162,10 @@ public class JSEmitter extends ASEmitter implements 
IJSEmitter
 
     public void emitParameters(IContainerNode node)
     {
+        startMapping(node);
         write(ASEmitterTokens.PAREN_OPEN);
+        endMapping(node);
+        
         int len = node.getChildCount();
         for (int i = 0; i < len; i++)
         {
@@ -170,10 +173,19 @@ public class JSEmitter extends ASEmitter implements 
IJSEmitter
             getWalker().walk(parameterNode); //emitParameter
             if (i < len - 1)
             {
+                //we're mapping the comma to the container, but we use the
+                //parameter line/column in case the comma is not on the same
+                //line as the opening (
+                startMapping(node, parameterNode.getLine(),
+                        parameterNode.getColumn() + 
parameterNode.getAbsoluteEnd() - parameterNode.getAbsoluteStart());
                 writeToken(ASEmitterTokens.COMMA);
+                endMapping(node);
             }
         }
+
+        startMapping(node, node.getAbsoluteEnd() - node.getAbsoluteStart() - 
1);
         write(ASEmitterTokens.PAREN_CLOSE);
+        endMapping(node);
     }
 
     @Override
@@ -185,6 +197,35 @@ public class JSEmitter extends ASEmitter implements 
IJSEmitter
     }
 
     @Override
+    public void emitArguments(IContainerNode node)
+    {
+        startMapping(node);
+        write(ASEmitterTokens.PAREN_OPEN);
+        endMapping(node);
+        
+        int len = node.getChildCount();
+        for (int i = 0; i < len; i++)
+        {
+            IExpressionNode argumentNode = (IExpressionNode) node.getChild(i);
+            getWalker().walk(argumentNode);
+            if (i < len - 1)
+            {
+                //we're mapping the comma to the container, but we use the
+                //parameter line/column in case the comma is not on the same
+                //line as the opening (
+                startMapping(node, argumentNode.getLine(),
+                        argumentNode.getColumn() + 
argumentNode.getAbsoluteEnd() - argumentNode.getAbsoluteStart());
+                writeToken(ASEmitterTokens.COMMA);
+                endMapping(node);
+            }
+        }
+
+        startMapping(node, node.getAbsoluteEnd() - node.getAbsoluteStart() - 
1);
+        write(ASEmitterTokens.PAREN_CLOSE);
+        endMapping(node);
+    }
+
+    @Override
     public void emitNumericLiteral(INumericLiteralNode node)
     {
         startMapping((ISourceLocation) node);
@@ -622,10 +663,10 @@ public class JSEmitter extends ASEmitter implements 
IJSEmitter
                 if (parentNode != null)
                 {
                     //try the parent node
-                    startMapping(parentNode);
+                    startMapping(parentNode, line, column);
+                    return;
                 }
             }
-            return;
         }
         
         String nodeName = null;

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c381df34/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/amd/JSAMDEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/amd/JSAMDEmitter.java
 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/amd/JSAMDEmitter.java
index fe00d82..27f1079 100644
--- 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/amd/JSAMDEmitter.java
+++ 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/amd/JSAMDEmitter.java
@@ -42,8 +42,11 @@ import 
org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.JSEmitter;
 import org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens;
 import org.apache.flex.compiler.internal.definitions.ClassTraitsDefinition;
+import org.apache.flex.compiler.internal.tree.as.ContainerNode;
 import org.apache.flex.compiler.internal.tree.as.FunctionCallNode;
 import org.apache.flex.compiler.internal.tree.as.FunctionNode;
+import org.apache.flex.compiler.internal.tree.as.IdentifierNode;
+import org.apache.flex.compiler.internal.tree.as.NodeBase;
 import org.apache.flex.compiler.problems.ICompilerProblem;
 import org.apache.flex.compiler.projects.ICompilerProject;
 import org.apache.flex.compiler.scopes.IASScope;
@@ -777,34 +780,36 @@ public class JSAMDEmitter extends JSEmitter implements 
IJSAMDEmitter
 
         getWalker().walk(node.getNameNode());
 
-        write(ASEmitterTokens.PAREN_OPEN);
-        walkArguments(node);
-        write(ASEmitterTokens.PAREN_CLOSE.getToken());
+        emitArguments(node.getArgumentsNode());
     }
 
     @Override
-    public void walkArguments(IExpressionNode[] nodes)
-    {
-    }
-
-    protected void walkArguments(IFunctionCallNode node)
+    public void emitArguments(IContainerNode node)
     {
-        FunctionCallNode fnode = (FunctionCallNode) node;
-        IExpressionNode[] nodes = node.getArgumentNodes();
-        int len = nodes.length;
+        IContainerNode newNode = node;
+        FunctionCallNode fnode = (FunctionCallNode) node.getParent();
+        int len = node.getChildCount();
         if (TempTools.injectThisArgument(fnode, false))
         {
-            write("this");
-            if (len > 0)
+            ContainerNode newArgs = new ContainerNode(len + 1);
+            newArgs.setSourcePath(node.getSourcePath());
+            newArgs.span(node);
+            newArgs.setParent((NodeBase) node.getParent());
+            IdentifierNode thisNode = new IdentifierNode("this");
+            thisNode.setSourcePath(node.getSourcePath());
+            newArgs.addItem(thisNode);
+            for (int i = 0; i < len; i++)
             {
-                write(",");
-                write(" ");
+                newArgs.addItem((NodeBase) node.getChild(i));
             }
+            newNode = newArgs;
         }
 
+        len = newNode.getChildCount();
+        write(ASEmitterTokens.PAREN_OPEN);
         for (int i = 0; i < len; i++)
         {
-            IExpressionNode inode = nodes[i];
+            IExpressionNode inode = (IExpressionNode) newNode.getChild(i);
             if (inode.getNodeID() == ASTNodeID.IdentifierID)
             {
                 emitArgumentIdentifier((IIdentifierNode) inode);
@@ -819,6 +824,7 @@ public class JSAMDEmitter extends JSEmitter implements 
IJSAMDEmitter
                 writeToken(ASEmitterTokens.COMMA);
             }
         }
+        write(ASEmitterTokens.PAREN_CLOSE);
     }
 
     private void emitArgumentIdentifier(IIdentifierNode node)

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c381df34/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
index 355250f..0eaf7c9 100644
--- 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
+++ 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
@@ -59,11 +59,13 @@ import 
org.apache.flex.compiler.internal.projects.FlexJSProject;
 import org.apache.flex.compiler.internal.projects.FlexProject;
 import org.apache.flex.compiler.internal.tree.as.BinaryOperatorAsNode;
 import org.apache.flex.compiler.internal.tree.as.BlockNode;
+import org.apache.flex.compiler.internal.tree.as.ContainerNode;
 import org.apache.flex.compiler.internal.tree.as.DynamicAccessNode;
 import org.apache.flex.compiler.internal.tree.as.FunctionCallNode;
 import org.apache.flex.compiler.internal.tree.as.IdentifierNode;
 import org.apache.flex.compiler.internal.tree.as.LabeledStatementNode;
 import org.apache.flex.compiler.internal.tree.as.MemberAccessExpressionNode;
+import org.apache.flex.compiler.internal.tree.as.NodeBase;
 import org.apache.flex.compiler.internal.tree.as.NumericLiteralNode;
 import org.apache.flex.compiler.projects.ICompilerProject;
 import org.apache.flex.compiler.tree.ASTNodeID;
@@ -71,6 +73,7 @@ import org.apache.flex.compiler.tree.as.IASNode;
 import org.apache.flex.compiler.tree.as.IAccessorNode;
 import org.apache.flex.compiler.tree.as.IBinaryOperatorNode;
 import org.apache.flex.compiler.tree.as.IClassNode;
+import org.apache.flex.compiler.tree.as.IContainerNode;
 import org.apache.flex.compiler.tree.as.IDefinitionNode;
 import org.apache.flex.compiler.tree.as.IExpressionNode;
 import org.apache.flex.compiler.tree.as.IFileNode;
@@ -546,12 +549,14 @@ public class JSFlexJSEmitter extends JSGoogEmitter 
implements IJSFlexJSEmitter
     }
 
     @Override
-    public void walkArguments(IExpressionNode[] nodes)
+    public void emitArguments(IContainerNode node)
     {
-       if (nodes.length == 2)
+        ContainerNode newArgs = null;
+        int len = node.getChildCount();
+       if (len == 2)
        {
             ICompilerProject project = getWalker().getProject();;
-               IFunctionCallNode fcNode = 
(IFunctionCallNode)(nodes[0].getParent().getParent());
+               IFunctionCallNode fcNode = (IFunctionCallNode) node.getParent();
                IExpressionNode nameNode = fcNode.getNameNode();
             IDefinition def = nameNode.resolve(project);
                if (def != null && def.getBaseName().equals("insertAt"))
@@ -561,45 +566,76 @@ public class JSFlexJSEmitter extends JSGoogEmitter 
implements IJSFlexJSEmitter
                        {
                        if (nameNode instanceof MemberAccessExpressionNode)
                        {
-                               IExpressionNode[] newArgs = new 
IExpressionNode[3];
-                               newArgs[0] = nodes[0];
-                               newArgs[2] = nodes[1];
-                               newArgs[1] = new NumericLiteralNode("0");
-                               nodes = newArgs;
+                        newArgs = new ContainerNode(len + 1);
+                        newArgs.setSourcePath(node.getSourcePath());
+                        newArgs.span(node);
+                        newArgs.setParent((NodeBase) node.getParent());
+                        newArgs.addItem((NodeBase) node.getChild(0));
+                        NumericLiteralNode extraNode = new 
NumericLiteralNode("0");
+                        extraNode.setSourcePath(node.getSourcePath());
+                        newArgs.addItem(extraNode);
+                        newArgs.addItem((NodeBase) node.getChild(1));
                        }
                        }
                }
        }
-       super.walkArguments(nodes);
-       if (nodes.length == 1)
-       {
+        if (len == 1)
+        {
             ICompilerProject project = getWalker().getProject();;
-               IFunctionCallNode fcNode = 
(IFunctionCallNode)(nodes[0].getParent().getParent());
-               IExpressionNode nameNode = fcNode.getNameNode();
+            IFunctionCallNode fcNode = (IFunctionCallNode) node.getParent();
+            IExpressionNode nameNode = fcNode.getNameNode();
             IDefinition def = nameNode.resolve(project);
-               if (def != null && def.getBaseName().equals("removeAt"))
-               {
-                       if (def.getParent() != null &&
-                       def.getParent().getQualifiedName().equals("Array"))
-                       {
-                       if (nameNode instanceof MemberAccessExpressionNode)
-                       {
-                               write(", 1");
-                       }
-                       }
-               }
-               else if (def != null && def.getBaseName().equals("parseInt"))
-               {
-                       IDefinition parentDef = def.getParent();
-                       if (parentDef == null)
-                       {
-                       if (nameNode instanceof IdentifierNode)
-                       {
-                               write(", 10");
-                       }
-                       }
-               }
-       }
+            if (def != null && def.getBaseName().equals("removeAt"))
+            {
+                if (def.getParent() != null &&
+                        def.getParent().getQualifiedName().equals("Array"))
+                {
+                    if (nameNode instanceof MemberAccessExpressionNode)
+                    {
+                        newArgs = new ContainerNode(len + 1);
+                        newArgs.setSourcePath(node.getSourcePath());
+                        newArgs.span(node);
+                        newArgs.setParent((NodeBase) node.getParent());
+                        for (int i = 0; i < len; i++)
+                        {
+                            newArgs.addItem((NodeBase) node.getChild(i));
+                        }
+                        NumericLiteralNode extraNode = new 
NumericLiteralNode("1");
+                        extraNode.setSourcePath(node.getSourcePath());
+                        newArgs.addItem(extraNode);
+                    }
+                }
+            }
+            else if (def != null && def.getBaseName().equals("parseInt"))
+            {
+                IDefinition parentDef = def.getParent();
+                if (parentDef == null)
+                {
+                    if (nameNode instanceof IdentifierNode)
+                    {
+                        newArgs = new ContainerNode(len + 1);
+                        newArgs.setSourcePath(node.getSourcePath());
+                        newArgs.span(node);
+                        newArgs.setParent((NodeBase) node.getParent());
+                        for (int i = 0; i < len; i++)
+                        {
+                            newArgs.addItem((NodeBase) node.getChild(i));
+                        }
+                        NumericLiteralNode extraNode = new 
NumericLiteralNode("10");
+                        extraNode.setSourcePath(node.getSourcePath());
+                        newArgs.addItem(extraNode);
+                    }
+                }
+            }
+        }
+        if (newArgs != null)
+        {
+            super.emitArguments(newArgs);
+        }
+        else
+        {
+            super.emitArguments(node);
+        }
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c381df34/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
index d37e258..7fe1657 100644
--- 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
+++ 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
@@ -566,10 +566,8 @@ public class JSGoogEmitter extends JSEmitter implements 
IJSGoogEmitter
             }
 
             getWalker().walk(node.getNameNode());
-
-            write(ASEmitterTokens.PAREN_OPEN);
-            walkArguments(node.getArgumentNodes());
-            write(ASEmitterTokens.PAREN_CLOSE);
+            
+            emitArguments(node.getArgumentsNode());
         }
         else
         {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c381df34/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
index ab36794..0b8df4e 100644
--- 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
+++ 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
@@ -125,15 +125,8 @@ public class FunctionCallEmitter extends JSSubEmitter 
implements ISubEmitter<IFu
                     if (nameNode.hasParenthesis())
                         write(ASEmitterTokens.PAREN_CLOSE);                    
    
                 }
-                getEmitter().startMapping(node.getArgumentsNode());
-                write(ASEmitterTokens.PAREN_OPEN);
-                getEmitter().endMapping(node.getArgumentsNode());
                 
-                fjs.walkArguments(node.getArgumentNodes());
-                
-                getEmitter().startMapping(node.getArgumentsNode());
-                write(ASEmitterTokens.PAREN_CLOSE);
-                getEmitter().endMapping(node.getArgumentsNode());
+                getEmitter().emitArguments(node.getArgumentsNode());
             }
             else if (!isClassCast)
             {
@@ -155,15 +148,24 @@ public class FunctionCallEmitter extends JSSubEmitter 
implements ISubEmitter<IFu
                     }
                     else if (def instanceof AppliedVectorDefinition)
                     {
-                        fjs.walkArguments(node.getArgumentNodes());
+                        IExpressionNode[] argumentNodes = 
node.getArgumentNodes();
+                        int len = argumentNodes.length;
+                        for (int i = 0; i < len; i++)
+                        {
+                            IExpressionNode argumentNode = argumentNodes[i];
+                            getWalker().walk(argumentNode);
+                            if(i < len - 1)
+                            {
+                                write(", ");
+                            }
+                        }
                         write(".slice()");
                         return;
                     }
                 }
                getWalker().walk(node.getNameNode());
-                write(ASEmitterTokens.PAREN_OPEN);
-                fjs.walkArguments(node.getArgumentNodes());
-                write(ASEmitterTokens.PAREN_CLOSE);
+
+                getEmitter().emitArguments(node.getArgumentsNode());
             }
             else //function-style cast
             {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c381df34/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
index 13bcbb3..4f9d5f2 100644
--- 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
+++ 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
@@ -656,9 +656,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter 
implements IJSVF2JSEmitter
                 else
                     // I think we still need this for "new someVarOfTypeClass"
                     getWalker().walk(node.getNameNode());
-                write(ASEmitterTokens.PAREN_OPEN);
-                walkArguments(node.getArgumentNodes());
-                write(ASEmitterTokens.PAREN_CLOSE);
+                emitArguments(node.getArgumentsNode());
             }
             else if (!isClassCast)
             {
@@ -679,9 +677,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter 
implements IJSVF2JSEmitter
                     }
                 }
                 getWalker().walk(node.getNameNode());
-                write(ASEmitterTokens.PAREN_OPEN);
-                walkArguments(node.getArgumentNodes());
-                write(ASEmitterTokens.PAREN_CLOSE);
+                emitArguments(node.getArgumentsNode());
             }
             else
             {

Reply via email to