You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by er...@apache.org on 2013/11/05 13:45:30 UTC

[04/11] git commit: [flex-falcon] [refs/heads/develop] - Fixed old TODO: handle parsing of 'rest' parameter.

Fixed old TODO: handle parsing of 'rest' parameter.

Signed-off-by: Erik de Bruin <er...@ixsoftware.nl>


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

Branch: refs/heads/develop
Commit: 15f1e13979fab1e8f20087c3cfed57a8e7ae9b59
Parents: fa7b340
Author: Erik de Bruin <er...@ixsoftware.nl>
Authored: Sun Nov 3 10:54:49 2013 +0100
Committer: Erik de Bruin <er...@ixsoftware.nl>
Committed: Tue Nov 5 07:15:07 2013 +0100

----------------------------------------------------------------------
 .../internal/codegen/as/TestMethodMembers.java  |  7 +++---
 .../compiler/internal/codegen/as/ASEmitter.java | 24 +++++++++++++-------
 2 files changed, 19 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/15f1e139/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/as/TestMethodMembers.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/as/TestMethodMembers.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/as/TestMethodMembers.java
index fda88cc..ce4316f 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/as/TestMethodMembers.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/as/TestMethodMembers.java
@@ -97,13 +97,12 @@ public class TestMethodMembers extends ASTestBase
         assertOut("function foo(bar:String, baz:int = null):int {\n\treturn -1;\n}");
     }
 
-    // TODO (mschmalle) handle ...rest parameter correctly
     @Test
     public void testMethod_withRestParameterTypeReturnType()
     {
-//        IFunctionNode node = getMethod("function foo(bar:String, ...rest):int{\treturn -1;}");
-//        asBlockWalker.visitFunction(node);
-//        assertOut("function foo(bar:String, ...rest):int {\n\treturn -1;\n}");
+        IFunctionNode node = getMethod("function foo(bar:String, ...rest):int{\treturn -1;}");
+        asBlockWalker.visitFunction(node);
+        assertOut("function foo(bar:String, ...rest):int {\n\treturn -1;\n}");
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/15f1e139/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 3db6b55..f634e60 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
@@ -739,15 +739,23 @@ public class ASEmitter implements IASEmitter, IEmitter
     @Override
     public void emitParameter(IParameterNode node)
     {
-        getWalker().walk(node.getNameExpressionNode());
-        write(ASEmitterTokens.COLON);
-        getWalker().walk(node.getVariableTypeNode());
-        IExpressionNode anode = node.getAssignedValueNode();
-        if (anode != null)
+        if (node.isRest())
         {
-            write(ASEmitterTokens.SPACE);
-            writeToken(ASEmitterTokens.EQUAL);
-            getWalker().walk(anode);
+            write(ASEmitterTokens.ELLIPSIS);
+            write(node.getName());
+        }
+        else
+        {
+            getWalker().walk(node.getNameExpressionNode());
+            write(ASEmitterTokens.COLON);
+            getWalker().walk(node.getVariableTypeNode());
+            IExpressionNode anode = node.getAssignedValueNode();
+            if (anode != null)
+            {
+                write(ASEmitterTokens.SPACE);
+                writeToken(ASEmitterTokens.EQUAL);
+                getWalker().walk(anode);
+            }
         }
     }