You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2015/06/30 07:18:22 UTC

[2/2] git commit: [flex-falcon] [refs/heads/develop] - FLEX-34897 maintain scope when assigning methods to vars (attempt #2)

FLEX-34897 maintain scope when assigning methods to vars (attempt #2)


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

Branch: refs/heads/develop
Commit: 70bc7d8a01fe4634a033ba5ee5f81ba11350cdfb
Parents: 1b8d9bb
Author: Alex Harui <ah...@apache.org>
Authored: Mon Jun 29 22:16:46 2015 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Mon Jun 29 22:16:46 2015 -0700

----------------------------------------------------------------------
 .../internal/codegen/js/goog/JSGoogEmitter.java  | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/70bc7d8a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
index 12bfb7e..c45cb3f 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
@@ -40,10 +40,13 @@ import org.apache.flex.compiler.internal.codegen.js.JSEmitter;
 import org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.JSSessionModel;
 import org.apache.flex.compiler.internal.codegen.js.utils.EmitterUtils;
+import org.apache.flex.compiler.internal.definitions.AccessorDefinition;
+import org.apache.flex.compiler.internal.definitions.FunctionDefinition;
 import org.apache.flex.compiler.internal.scopes.PackageScope;
 import org.apache.flex.compiler.internal.tree.as.ChainedVariableNode;
 import org.apache.flex.compiler.internal.tree.as.FunctionCallNode;
 import org.apache.flex.compiler.internal.tree.as.FunctionNode;
+import org.apache.flex.compiler.internal.tree.as.MemberAccessExpressionNode;
 import org.apache.flex.compiler.problems.ICompilerProblem;
 import org.apache.flex.compiler.projects.ICompilerProject;
 import org.apache.flex.compiler.scopes.IASScope;
@@ -858,14 +861,26 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
         {
             write(ASEmitterTokens.SPACE);
             writeToken(ASEmitterTokens.EQUAL);
+            IDefinition definition = node.resolve(getWalker().getProject());
             if (node.getNodeID() == ASTNodeID.ClassReferenceID)
             {
-                IDefinition definition = node.resolve(getWalker().getProject());
                 write(definition.getQualifiedName());
             }
             else
             {
-                getWalker().walk(node);
+            	if (definition instanceof FunctionDefinition &&
+            			(!(definition instanceof AccessorDefinition)) &&
+            			node instanceof MemberAccessExpressionNode)
+            	{
+                    write(JSGoogEmitterTokens.GOOG_BIND);
+                    write(ASEmitterTokens.PAREN_OPEN);
+            		getWalker().walk(node);
+                    writeToken(ASEmitterTokens.COMMA);
+            		getWalker().walk(((MemberAccessExpressionNode)node).getLeftOperandNode());
+                    write(ASEmitterTokens.PAREN_CLOSE);
+            	}
+            	else
+            		getWalker().walk(node);
             }
         }
     }