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

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

commit 40599e1997998662085ea8b20dac5564afb41b8d
Author: Josh Tynjala <[email protected]>
AuthorDate: Thu Jul 11 16:06:18 2019 -0700

    BinaryOperatorEmitter: call formatQualifiedName() only when the right hand 
side is a package or file member (it could be a local variable instead)
---
 .../codegen/js/jx/BinaryOperatorEmitter.java       | 47 +++++++++++++++++++---
 1 file changed, 42 insertions(+), 5 deletions(-)

diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
index 8d6c103..fee9757 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
@@ -23,7 +23,11 @@ import org.apache.royale.compiler.codegen.ISubEmitter;
 import org.apache.royale.compiler.codegen.js.IJSEmitter;
 import org.apache.royale.compiler.constants.IASLanguageConstants;
 import org.apache.royale.compiler.definitions.IDefinition;
+import org.apache.royale.compiler.definitions.IFunctionDefinition;
+import 
org.apache.royale.compiler.definitions.IFunctionDefinition.FunctionClassification;;
 import org.apache.royale.compiler.definitions.ITypeDefinition;
+import org.apache.royale.compiler.definitions.IVariableDefinition;
+import 
org.apache.royale.compiler.definitions.IVariableDefinition.VariableClassification;;
 import org.apache.royale.compiler.internal.codegen.as.ASEmitterTokens;
 import org.apache.royale.compiler.internal.codegen.js.JSEmitterTokens;
 import org.apache.royale.compiler.internal.codegen.js.JSSubEmitter;
@@ -87,11 +91,44 @@ public class BinaryOperatorEmitter extends JSSubEmitter 
implements
 
             IDefinition dnode = (node.getRightOperandNode())
                     .resolve(getProject());
-            if (dnode != null)
-                write(getEmitter()
-                        .formatQualifiedName(dnode.getQualifiedName()));
-            else
-                getWalker().walk(node.getRightOperandNode());
+                       if (dnode != null)
+                       {
+                               String dnodeQname = dnode.getQualifiedName();
+                boolean isPackageOrFileMember = false;
+                if (dnode instanceof IVariableDefinition)
+                {
+                    IVariableDefinition variable = (IVariableDefinition) dnode;
+                    VariableClassification classification = 
variable.getVariableClassification();
+                    if (classification == 
VariableClassification.PACKAGE_MEMBER ||
+                            classification == 
VariableClassification.FILE_MEMBER)
+                    {
+                        isPackageOrFileMember = true;
+                    }
+                }
+                else if (dnode instanceof IFunctionDefinition)
+                {
+                    IFunctionDefinition func = (IFunctionDefinition) dnode;
+                    FunctionClassification classification = 
func.getFunctionClassification();
+                    if (classification == 
FunctionClassification.PACKAGE_MEMBER ||
+                            classification == 
FunctionClassification.FILE_MEMBER)
+                    {
+                        isPackageOrFileMember = true;
+                    }
+                }
+                               else if(dnode instanceof ITypeDefinition)
+                               {
+                                       isPackageOrFileMember = true;
+                               }
+                               if(isPackageOrFileMember)
+                               {
+                                       dnodeQname = 
getEmitter().formatQualifiedName(dnodeQname);
+                               }
+                write(dnodeQname);
+                       }
+                       else
+                       {
+                               getWalker().walk(node.getRightOperandNode());
+                       }
         }
         else
         {

Reply via email to