This is an automated email from the ASF dual-hosted git repository. aharui pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
commit dbbcee56ac0edaf8d077bb06d159c7a9b2ae057d Author: Alex Harui <[email protected]> AuthorDate: Thu Mar 29 22:15:52 2018 -0700 try a faster way of figuring out if something is a member of a particular class. fixes #36 --- .../internal/codegen/js/utils/EmitterUtils.java | 45 ++++------------------ 1 file changed, 7 insertions(+), 38 deletions(-) diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/utils/EmitterUtils.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/utils/EmitterUtils.java index 2729cab..b80e657 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/utils/EmitterUtils.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/utils/EmitterUtils.java @@ -414,53 +414,22 @@ public class EmitterUtils public static boolean isClassMember(ICompilerProject project, IDefinition nodeDef, IClassNode classNode) { - if (nodeDef.isInternal() && (!(nodeDef.getParent() instanceof ClassDefinition))) + IDefinition parentDef = nodeDef.getParent(); + if (nodeDef.isInternal() && (!(parentDef instanceof ClassDefinition))) return false; - TypeScope cscope = (TypeScope) classNode.getDefinition() - .getContainedScope(); - - Set<INamespaceDefinition> nsSet = cscope.getNamespaceSet(project); - Collection<IDefinition> defs = new HashSet<IDefinition>(); - - cscope.getAllPropertiesForMemberAccess((CompilerProject) project, defs, - nsSet); - - Iterator<IDefinition> visiblePropertiesIterator = defs.iterator(); - while (visiblePropertiesIterator.hasNext()) - { - if (nodeDef.getQualifiedName().equals( - visiblePropertiesIterator.next().getQualifiedName())) - return true; - } - - return false; + IClassDefinition cdef = classNode.getDefinition(); + return parentDef == cdef || (parentDef instanceof ClassDefinition && cdef.isInstanceOf((ClassDefinition)parentDef, project)); } public static boolean isClassMember(ICompilerProject project, IDefinition nodeDef, IClassDefinition classDef) { - if (nodeDef.isInternal() && (!(nodeDef.getParent() instanceof ClassDefinition))) + IDefinition parentDef = nodeDef.getParent(); + if (nodeDef.isInternal() && (!(parentDef instanceof ClassDefinition))) return false; - TypeScope cscope = (TypeScope) classDef - .getContainedScope(); - - Set<INamespaceDefinition> nsSet = cscope.getNamespaceSet(project); - Collection<IDefinition> defs = new HashSet<IDefinition>(); - - cscope.getAllPropertiesForMemberAccess((CompilerProject) project, defs, - nsSet); - - Iterator<IDefinition> visiblePropertiesIterator = defs.iterator(); - while (visiblePropertiesIterator.hasNext()) - { - if (nodeDef.getQualifiedName().equals( - visiblePropertiesIterator.next().getQualifiedName())) - return true; - } - - return false; + return parentDef == classDef || (parentDef instanceof ClassDefinition && ((ClassDefinition)parentDef).isInstanceOf(classDef, project)); } public static boolean isScalar(IExpressionNode node) -- To stop receiving notification emails like this one, please contact [email protected].
