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 2016/08/30 07:30:32 UTC

[09/12] git commit: [flex-falcon] [refs/heads/develop] - [IMPROVEMENT] More robust ancestry check for needsEventDispatcher

[IMPROVEMENT] More robust ancestry check for needsEventDispatcher


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

Branch: refs/heads/develop
Commit: 26cd027c595f5fc852277fda886f1d608ba35412
Parents: 7842b1e
Author: greg-dove <gr...@gmail.com>
Authored: Mon Aug 29 13:29:03 2016 +1200
Committer: greg-dove <gr...@gmail.com>
Committed: Mon Aug 29 13:30:12 2016 +1200

----------------------------------------------------------------------
 .../internal/definitions/ClassDefinitionBase.java         | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/26cd027c/compiler/src/main/java/org/apache/flex/compiler/internal/definitions/ClassDefinitionBase.java
----------------------------------------------------------------------
diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/definitions/ClassDefinitionBase.java b/compiler/src/main/java/org/apache/flex/compiler/internal/definitions/ClassDefinitionBase.java
index f8a63ea..60d8725 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/internal/definitions/ClassDefinitionBase.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/internal/definitions/ClassDefinitionBase.java
@@ -278,7 +278,7 @@ public abstract class ClassDefinitionBase extends TypeDefinitionBase implements
             {
 
                 IClassDefinition baseClass = resolveBaseClass(project);
-                if (baseClass != null)
+                while (baseClass != null)
                 {
                     if (baseClass.isInstanceOf(iEventDispatcher, project))
                     {
@@ -287,12 +287,14 @@ public abstract class ClassDefinitionBase extends TypeDefinitionBase implements
                         return false;
                     }
                     if (baseClass.needsEventDispatcher(project)) {
-                        //recursive check back to the lowest level base class that needs Bindable support
-                        //If the base class needs implicit Bindable support, then this sub-class will inherit its
+                        //check the base class for 'needs Bindable support'
+                        //If the base class needs implicit Bindable implementation,
+                        //then this sub-class will inherit its
                         //compiler-generated implementation, so this sub-class does not 'need' it
                         return false;
                     }
-
+                    //check the full ancestor chain
+                    baseClass = baseClass.resolveBaseClass(project);
                 }
 
                 InterfaceDefinition[] interfs = resolveImplementedInterfaces(project, null, false);