You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ms...@apache.org on 2015/06/15 21:24:19 UTC

git commit: [flex-falcon] [refs/heads/develop] - Fixed bug with optional constructor args not included. - For some reason using the native keyword disallows optional parameters in method definitions. - Changed emitted code for constructor to be non nat

Repository: flex-falcon
Updated Branches:
  refs/heads/develop 323326191 -> dd122c7ce


Fixed bug with optional constructor args not included.
- For some reason using the native keyword disallows optional
  parameters in method definitions.
- Changed emitted code for constructor to be non native, also had to
  then emit a default super() call if the class has a super class.


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

Branch: refs/heads/develop
Commit: dd122c7cec532cfdfa67e08a37850420055a9437
Parents: 3233261
Author: Michael Schmalle <ms...@apache.org>
Authored: Mon Jun 15 15:23:52 2015 -0400
Committer: Michael Schmalle <ms...@apache.org>
Committed: Mon Jun 15 15:23:52 2015 -0400

----------------------------------------------------------------------
 .../codegen/externals/TestConstructor.java      |  9 +++-
 .../test-files/externals/app1/as_src/Main.as    |  4 +-
 .../externals/reference/MethodReference.java    | 43 ++++++++++++++++++--
 3 files changed, 48 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dd122c7c/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/externals/TestConstructor.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/externals/TestConstructor.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/externals/TestConstructor.java
index 10b47e9..8b95585 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/externals/TestConstructor.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/externals/TestConstructor.java
@@ -102,8 +102,13 @@ public class TestConstructor extends ExternalsTestBase
         FooOptVarArgs.getConstructor().emit(sb);
         String string = sb.toString();
         assertEquals(
-                "    /**\n     * A constructor with arg, opt arg and var args.\n     *\n     * @param arg1 [number] The arg 1.\n     * @param opt_arg2 [*] The arg  that is wrapped by another line in the comment.\n     * @param var_args [*] A var agr param.\n     * @see http://foo.bar.com \n     * @see [constructor_params]\n     * @returns {(FooVarArgs|null)} Another instance.\n     */\n    native public function FooOptVarArgs(arg1:Number, opt_arg2:* = null, ...rest);\n",
-                string);
+                "    /**\n     * A constructor with arg, opt arg and var args.\n     *\n     "
+                        + "* @param arg1 [number] The arg 1.\n     * @param opt_arg2 [*] The arg  "
+                        + "that is wrapped by another line in the comment.\n     * @param var_args "
+                        + "[*] A var agr param.\n     * @see http://foo.bar.com \n     * @see "
+                        + "[constructor_params]\n     * @returns {(FooVarArgs|null)} Another instance.\n"
+                        + "     */\n    public function FooOptVarArgs(arg1:Number, opt_arg2:* = null, ...rest) "
+                        + "{\n        super();\n    }\n", string);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dd122c7c/compiler.jx.tests/test-files/externals/app1/as_src/Main.as
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/externals/app1/as_src/Main.as b/compiler.jx.tests/test-files/externals/app1/as_src/Main.as
index b57d9d7..3c5095a 100644
--- a/compiler.jx.tests/test-files/externals/app1/as_src/Main.as
+++ b/compiler.jx.tests/test-files/externals/app1/as_src/Main.as
@@ -23,8 +23,8 @@ public class Main
 {
 	public function start():void
 	{
-		var element:Element = document.createElement("button");
-        element.onclick = function ():void {
+		var button:Element = document.createElement("button");
+        button.onclick = function ():void {
             alert("Hello browser from FalconJX!");
         };
         button.textContent = "Say Hello";

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dd122c7c/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/MethodReference.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/MethodReference.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/MethodReference.java
index db4b2f7..3508b03 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/MethodReference.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/MethodReference.java
@@ -160,13 +160,48 @@ public class MethodReference extends MemberReference
         emitComment(sb);
 
         sb.append(indent);
-        sb.append("native public function ");
-        sb.append(getQualifiedName());
-        sb.append(toPrameterString());
-        sb.append(";");
+        sb.append("public function ");
+        sb.append(getBaseName());
+        if (!getBaseName().equals("Object"))
+        {
+            sb.append(toPrameterString());
+            sb.append(" {\n");
+            sb.append(indent);
+            emitSuperCall(sb);
+            sb.append(indent);
+            sb.append("}");
+        }
+        else
+        {
+            sb.append("() {}");
+        }
+
         sb.append("\n");
     }
 
+    private void emitSuperCall(StringBuilder sb)
+    {
+
+        sb.append(indent);
+        sb.append("super(");
+
+        ClassReference superClass = getClassReference().getSuperClass();
+        if (superClass != null && !superClass.getBaseName().equals("Object"))
+        {
+            MethodReference constructor = superClass.getConstructor();
+            Set<String> parameterNames = constructor.getParameterNames();
+            int len = parameterNames.size();
+            for (int i = 0; i < len; i++)
+            {
+                sb.append("null");
+                if (i < len - 1)
+                    sb.append(", ");
+            }
+        }
+
+        sb.append(");\n");
+    }
+
     public boolean isConstructor()
     {
         return getComment().isConstructor();