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(