You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by gr...@apache.org on 2020/03/29 08:46:48 UTC

[royale-compiler] 02/02: Fix for issue #126 - related to referencing a setter as 'accessor' for the nameNode of a FunctionCallNode instead of the getter.

This is an automated email from the ASF dual-hosted git repository.

gregdove pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git

commit be03439d96be0e7d06b10d32c3a49324c660be4a
Author: greg-dove <gr...@gmail.com>
AuthorDate: Sun Mar 29 21:18:54 2020 +1300

    Fix for issue #126 - related to referencing a setter as 'accessor' for the nameNode of a FunctionCallNode instead of the getter.
---
 .../internal/codegen/js/jx/FunctionCallArgumentsEmitter.java        | 6 ++++++
 .../compiler/internal/codegen/js/royale/TestRoyaleExpressions.java  | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FunctionCallArgumentsEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FunctionCallArgumentsEmitter.java
index cbd786a..4e25dd9 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FunctionCallArgumentsEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FunctionCallArgumentsEmitter.java
@@ -24,6 +24,7 @@ import org.apache.royale.compiler.codegen.js.IJSEmitter;
 import org.apache.royale.compiler.definitions.IDefinition;
 import org.apache.royale.compiler.definitions.IFunctionDefinition;
 import org.apache.royale.compiler.definitions.IParameterDefinition;
+import org.apache.royale.compiler.definitions.ISetterDefinition;
 import org.apache.royale.compiler.internal.codegen.as.ASEmitterTokens;
 import org.apache.royale.compiler.internal.codegen.js.JSSubEmitter;
 import org.apache.royale.compiler.internal.codegen.js.utils.EmitterUtils;
@@ -59,6 +60,11 @@ public class FunctionCallArgumentsEmitter extends JSSubEmitter implements
         if (functionCallNode != null)
         {
             IDefinition calledDef = functionCallNode.resolveCalledExpression(getProject());
+            if (calledDef instanceof ISetterDefinition) {
+                if (((ISetterDefinition)calledDef).resolveCorrespondingAccessor(getProject()) != null) {
+                    calledDef = ((ISetterDefinition)calledDef).resolveCorrespondingAccessor(getProject());
+                }
+            }
             if (calledDef instanceof IFunctionDefinition)
             {
                 IFunctionDefinition functionDef = (IFunctionDefinition) calledDef;
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java
index a9062b9..631df2c 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java
@@ -1306,7 +1306,7 @@ public class TestRoyaleExpressions extends TestGoogExpressions
         assertOut("/**\n * @export\n * @return {number}\n */\nfoo.bar.B.prototype.b = function() {\n  var /** @type {Array.<string>} */ a = null;\n  return a.length;\n}");
     }
 
-    @Ignore
+    @Test
     public void testFunctionProperty()
     {
         IFunctionNode node = (IFunctionNode) getNode(