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 {
