You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2015/12/23 19:21:39 UTC
git commit: [flex-falcon] [refs/heads/develop] - FLEX-34993 fix
implicit super calls
Repository: flex-falcon
Updated Branches:
refs/heads/develop 85d6606b4 -> fe2a00466
FLEX-34993 fix implicit super calls
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/fe2a0046
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/fe2a0046
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/fe2a0046
Branch: refs/heads/develop
Commit: fe2a004660da6ef130a0aa03811155cf3c54cbd2
Parents: 85d6606
Author: Alex Harui <ah...@apache.org>
Authored: Wed Dec 23 10:21:34 2015 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Wed Dec 23 10:21:34 2015 -0800
----------------------------------------------------------------------
.../codegen/js/flexjs/TestFlexJSClass.java | 20 ++++++++++++++++++--
.../codegen/js/jx/SuperCallEmitter.java | 7 +++++++
2 files changed, 25 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/fe2a0046/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
index db12f5b..509c491 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
@@ -49,6 +49,22 @@ public class TestFlexJSClass extends TestGoogClass
assertOut("/**\n * @constructor\n * @extends {goog.events.EventTarget}\n */\norg.apache.flex.A = function() {\n org.apache.flex.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.flex.A, goog.events.EventTarget);");
}
+ @Test
+ public void testSimpleExtendsWithArgs()
+ {
+ IClassNode node = getClassNode("public class A extends EventTarget {public function A(arg:String) { super(arg);}}");
+ asBlockWalker.visitClass(node);
+ assertOut("/**\n * @constructor\n * @extends {goog.events.EventTarget}\n * @param {string} arg\n */\norg.apache.flex.A = function(arg) {\n org.apache.flex.A.base(this, 'constructor', arg);\n};\ngoog.inherits(org.apache.flex.A, goog.events.EventTarget);");
+ }
+
+ @Test
+ public void testSimpleExtendsWithArgsImplicitSuper()
+ {
+ IClassNode node = getClassNode("public class A extends EventTarget {public function A(arg:String) {}}");
+ asBlockWalker.visitClass(node);
+ assertOut("/**\n * @constructor\n * @extends {goog.events.EventTarget}\n * @param {string} arg\n */\norg.apache.flex.A = function(arg) {\n org.apache.flex.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.flex.A, goog.events.EventTarget);");
+ }
+
@Override
@Test
public void testSimpleExtendsImplements()
@@ -172,7 +188,7 @@ public class TestFlexJSClass extends TestGoogClass
{
IClassNode node = getClassNode("public class A extends goog.events.EventTarget {public function A(arg1:String, arg2:int) {}}");
asBlockWalker.visitClass(node);
- assertOut("/**\n * @constructor\n * @extends {goog.events.EventTarget}\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.flex.A = function(arg1, arg2) {\n org.apache.flex.A.base(this, 'constructor', arg1, arg2);\n};\ngoog.inherits(org.apache.flex.A, goog.events.EventTarget);");
+ assertOut("/**\n * @constructor\n * @extends {goog.events.EventTarget}\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.flex.A = function(arg1, arg2) {\n org.apache.flex.A.base(this, 'constructor');\n};\ngoog.inherits(org.apache.flex.A, goog.events.EventTarget);");
}
@Override
@@ -370,7 +386,7 @@ public class TestFlexJSClass extends TestGoogClass
{
IClassNode node = getClassNode("public class A extends EventTarget {public function A(arg1:String, arg2:int) {arg2 = arg2 + 2;} public var foo:Array = [];}");
asBlockWalker.visitClass(node);
- assertOut("/**\n * @constructor\n * @extends {goog.events.EventTarget}\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.flex.A = function(arg1, arg2) {\n org.apache.flex.A.base(this, 'constructor', arg1, arg2);\n \n this.foo = [];\n arg2 = arg2 + 2;\n};\ngoog.inherits(org.apache.flex.A, goog.events.EventTarget);\n\n\n/**\n * @export\n * @type {Array}\n */\norg.apache.flex.A.prototype.foo;");
+ assertOut("/**\n * @constructor\n * @extends {goog.events.EventTarget}\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.flex.A = function(arg1, arg2) {\n org.apache.flex.A.base(this, 'constructor');\n \n this.foo = [];\n arg2 = arg2 + 2;\n};\ngoog.inherits(org.apache.flex.A, goog.events.EventTarget);\n\n\n/**\n * @export\n * @type {Array}\n */\norg.apache.flex.A.prototype.foo;");
}
protected IBackend createBackend()
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/fe2a0046/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
index d1c1c62..5546ee0 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
@@ -230,9 +230,16 @@ public class SuperCallEmitter extends JSSubEmitter
}
else if (fnode.isConstructor())
{
+ // I think we only get here for implicit super calls
+ // (when there is no mention of super() in the constructor
+ // code and the compiler autogenerates the super() call)
+ // and implicit super calls do not have parameters passed
+ // to them.
+ /*
anodes = fnode.getParameterNodes();
writeArguments = (anodes != null && anodes.length > 0);
+ */
}
if (writeArguments)