diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java b/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java index c976b3631cd7..f7a6904cd9dd 100644 --- a/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java +++ b/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java @@ -1675,22 +1675,12 @@ public class Mappings { } } - private void cleanupRemovedClass(final int className, ClassRepr cr, Collection clusters) { - if (cr == null) { - cr = new Util().reprByName(className); - } - - if (cr != null) { - for (final int superSomething : cr.getSupers()) { - myClassToSubclasses.removeFrom(superSomething, cr.name); - } - + private void cleanupBackDependency(final int className, Collection clusters) { + if (clusters == null) { final int sourceFile = myClassToSourceFile.get(className); if (sourceFile > 0) { - if (clusters == null) { - clusters = mySourceFileToUsages.get(sourceFile); - } + clusters = mySourceFileToUsages.get(sourceFile); if (clusters != null) { for (final UsageRepr.Cluster cluster : clusters) { @@ -1700,8 +1690,8 @@ public class Mappings { if (u instanceof UsageRepr.ClassUsage) { final TIntHashSet residents = cluster.getResidence(u); - if (residents != null && residents.contains(cr.name)) { - myClassToClassDependency.removeFrom(((UsageRepr.ClassUsage)u).className, cr.name); + if (residents != null && residents.contains(className)) { + myClassToClassDependency.removeFrom(((UsageRepr.ClassUsage)u).className, className); } } } @@ -1710,6 +1700,20 @@ public class Mappings { } } } + } + + private void cleanupRemovedClass(final int className, ClassRepr cr, Collection clusters) { + if (cr == null) { + cr = new Util().reprByName(className); + } + + if (cr != null) { + for (final int superSomething : cr.getSupers()) { + myClassToSubclasses.removeFrom(superSomething, cr.name); + } + } + + cleanupBackDependency(className, clusters); myClassToClassDependency.remove(className); myClassToSubclasses.remove(className); @@ -1766,6 +1770,9 @@ public class Mappings { else { myClassToSourceFile.remove(c); } + + cleanupBackDependency(c, null); + return true; } });