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();