Repository: flex-falcon
Updated Branches:
  refs/heads/develop d51eb8a48 -> 9827b9f90


fix a call to super


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

Branch: refs/heads/develop
Commit: 9827b9f9090cb533cf017bbdf3dbc4b0f2bddb66
Parents: d51eb8a
Author: Alex Harui <aha...@apache.org>
Authored: Fri Aug 4 00:03:17 2017 -0700
Committer: Alex Harui <aha...@apache.org>
Committed: Fri Aug 4 00:03:17 2017 -0700

----------------------------------------------------------------------
 .../codegen/js/jx/SuperCallEmitter.java         |  9 ++++--
 .../js/flexjs/TestFlexJSExpressions.java        | 32 ++++++++++++++++++++
 2 files changed, 39 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/9827b9f9/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
index ad3c6c4..f1b8bed 100644
--- 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
@@ -73,8 +73,13 @@ public class SuperCallEmitter extends JSSubEmitter
             IClassNode cnode = (IClassNode) node
                     .getAncestorOfType(IClassNode.class);
 
-            if (fnode != null
-                    && (fnode.getNodeID() == ASTNodeID.GetterID || fnode
+            IExpressionNode fcNameNode = fcnode.getNameNode();
+            // assume it is memberaccess of the form super.somefunction
+            MemberAccessExpressionNode mae = null;
+            if (fcNameNode.getNodeID() == ASTNodeID.MemberAccessExpressionID)
+               mae = (MemberAccessExpressionNode)fcNameNode;
+            if (mae != null
+                    && (mae.getRightOperandNode().getNodeID() == 
ASTNodeID.GetterID || mae.getRightOperandNode()
                             .getNodeID() == ASTNodeID.SetterID))
             {
                 if (cnode == null && thisClass != null)

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/9827b9f9/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
index b5a7de5..dc28b6b 100644
--- 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
+++ 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
@@ -35,6 +35,7 @@ import org.apache.flex.compiler.tree.as.IClassNode;
 import org.apache.flex.compiler.tree.as.IFileNode;
 import org.apache.flex.compiler.tree.as.IFunctionCallNode;
 import org.apache.flex.compiler.tree.as.IFunctionNode;
+import org.apache.flex.compiler.tree.as.IGetterNode;
 import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.IVariableNode;
 import org.junit.Ignore;
@@ -74,6 +75,37 @@ public class TestFlexJSExpressions extends 
TestGoogExpressions
         assertOut("super.foo");
     }
 
+    @Test
+    public void testVisitLanguageIdentifierNode_SuperGetter()
+    {
+        IClassNode node = (IClassNode)getNode("public function get 
defaultPrevented():Boolean " +
+                                              "{ return 
super.isDefaultPrevented(); }" + 
+                                              "override public function 
isDefaultPrevented():Boolean" +
+                                       "{ return defaultPrevented; }", 
IClassNode.class);
+        // getters and setters don't get output until the class is output so 
you can't just visit the accessorNode
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\n" + 
+                         "FalconTest_A = function() {\n" +
+                         "};\n\n\n" +
+                         "/**\n" +
+                         " * Prevent renaming of class. Needed for 
reflection.\n" +
+                         " */\n" +
+                         "goog.exportSymbol('FalconTest_A', 
FalconTest_A);\n\n\n" +
+                         "FalconTest_A.prototype.falconTest_a = function() 
{\n" +
+                         "  var self = this;\n" +
+                         "  ;\n" +
+                         "  function isDefaultPrevented() {\n" +
+                         "    return defaultPrevented;\n  };\n" +
+                         "  ;\n  \n" +
+                         "};\n\n\n" +
+                         "FalconTest_A.prototype.get__defaultPrevented = 
function() {\n" +
+                         "  return 
FalconTest_A.superClass_.isDefaultPrevented.apply(this);\n" +
+                         "};\n\n\n" +
+                         "Object.defineProperties(FalconTest_A.prototype, /** 
@lends {FalconTest_A.prototype} */ {\n" +
+                         "/** @export */\n" +
+                         "defaultPrevented: {\nget: 
FalconTest_A.prototype.get__defaultPrevented}}\n);");
+    }
+
     @Override
     @Test
     public void testVisitLanguageIdentifierNode_SuperMethod_1()

Reply via email to