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

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

commit 634cb4f3362c75317538ba0daedafd19742d00df
Author: DESKTOP-RH4S838\Yishay <[email protected]>
AuthorDate: Sun Apr 5 23:48:11 2020 +0300

    Works on given test case. Hope I didn't break anything.
    
    Reference #143
---
 .../royale/compiler/internal/codegen/js/JSEmitter.java    | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSEmitter.java
index d24adca..24c65f3 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSEmitter.java
@@ -40,6 +40,7 @@ import 
org.apache.royale.compiler.definitions.metadata.IMetaTag;
 import org.apache.royale.compiler.definitions.metadata.IMetaTagAttribute;
 import org.apache.royale.compiler.internal.codegen.as.ASEmitter;
 import org.apache.royale.compiler.internal.codegen.as.ASEmitterTokens;
+import org.apache.royale.compiler.internal.codegen.js.goog.JSGoogEmitterTokens;
 import org.apache.royale.compiler.internal.codegen.js.jx.BlockCloseEmitter;
 import org.apache.royale.compiler.internal.codegen.js.jx.BlockOpenEmitter;
 import org.apache.royale.compiler.internal.codegen.js.jx.CatchEmitter;
@@ -914,7 +915,19 @@ public class JSEmitter extends ASEmitter implements 
IJSEmitter
                {
                        write(coercionStart);
         }
-        emitAssignedValue(assignedNode);
+               if 
(project.getBuiltinType(BuiltinType.FUNCTION).equals(definition) && 
+                               assignedNode instanceof 
MemberAccessExpressionNode) {
+                       write(JSGoogEmitterTokens.GOOG_BIND.getToken() + 
+                                       ASEmitterTokens.PAREN_OPEN.getToken()
+                       );
+                       emitAssignedValue(assignedNode);
+                       write(ASEmitterTokens.COMMA.getToken());
+                       MemberAccessExpressionNode maenode = 
(MemberAccessExpressionNode)assignedNode;
+                       getWalker().walk(maenode.getLeftOperandNode());
+                       write(ASEmitterTokens.PAREN_CLOSE.getToken());
+               } else {
+                       emitAssignedValue(assignedNode);
+               }
                if (coercionStart != null)
                {
                        if (coercionEnd != null)

Reply via email to