You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by cd...@apache.org on 2016/04/11 15:59:48 UTC

[21/50] git commit: [flex-falcon] [refs/heads/feature/maven-migration] - arguments are output similar to parameters, with the wrapping (), source maps for parameters and arguments

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/feature/maven-migration
Commit: c381df34557b6e6441fa94a0ec09bc485f0faf52
Parents: 4f9787c
Author: Josh Tynjala <jo...@apache.org>
Authored: Fri Apr 1 12:45:27 2016 -0700
Committer: Josh Tynjala <jo...@apache.org>
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
             {