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 <greg.d...@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(