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


The following commit(s) were added to refs/heads/develop by this push:
     new a47853b  ClassDefinition: fixed case where problems could contain more 
than one of the same DuplicateSkinStateProblem
a47853b is described below

commit a47853b5b51c83bbcd0e57860896017bd6e1e503
Author: Josh Tynjala <joshtynj...@apache.org>
AuthorDate: Thu Sep 5 14:07:44 2019 -0700

    ClassDefinition: fixed case where problems could contain more than one of 
the same DuplicateSkinStateProblem
---
 .../internal/definitions/ClassDefinition.java      | 23 ++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git 
a/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/ClassDefinition.java
 
b/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/ClassDefinition.java
index 9e3f63f..85a6900 100644
--- 
a/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/ClassDefinition.java
+++ 
b/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/ClassDefinition.java
@@ -768,20 +768,27 @@ public class ClassDefinition extends ClassDefinitionBase 
implements IClassDefini
     {
         Set<String> states = new HashSet<String>();
 
-        // Iterate over this class and its superclasses.
-        for (IClassDefinition c : classIterable(project, true))
+        // Iterate over the superclasses first, but don't worry about 
duplicates
+        // yet. The superclasses will find their own duplicates!
+        for (IClassDefinition c : classIterable(project, false))
         {
             for (String state : c.getSkinStates(problems))
             {
-                if (states.contains(state))
-                {
-                    ICompilerProblem problem = new 
DuplicateSkinStateProblem(c, state);
-                    problems.add(problem);
-                }
-
                 states.add(state);
             }
         }
+        // Then, add the states from this class and check for duplicates that
+        // specifically come from this class
+        for (String state : getSkinStates(problems))
+        {
+            if (states.contains(state))
+            {
+                ICompilerProblem problem = new DuplicateSkinStateProblem(this, 
state);
+                problems.add(problem);
+            }
+
+            states.add(state);
+        }
 
         return states.toArray(new String[states.size()]);
     }

Reply via email to