process 'directSubclasses' instead of 'allSubclasses' when checking permitted implementations of a sealed class (IJPL-158065)

GitOrigin-RevId: 9b52fe2351f2560780d09f5a4b150fddee6e3c54
This commit is contained in:
Eugene Zhuravlev
2024-07-11 15:00:23 +02:00
committed by intellij-monorepo-bot
parent bf7299d6ca
commit 1af4f1f880

View File

@@ -129,7 +129,7 @@ public final class JavaDifferentiateStrategy extends JvmDifferentiateStrategyImp
ReferenceID fromClass = change.getNow().getReferenceID();
Set<ReferenceID> permitted = collect(map(filter(change.getNow().getUsages(), u -> u instanceof ClassPermitsUsage), Usage::getElementOwner), new SmartHashSet<>());
debug("Affecting non-permitted subclasses of a sealed class: ", fromClass);
for (ReferenceID cl : filter(future.allSubclasses(fromClass), c -> !permitted.contains(c))) {
for (ReferenceID cl : filter(future.directSubclasses(fromClass), c -> !permitted.contains(c))) {
affectNodeSources(context, cl, "Affecting source file of a non-permitted subclass: ", future);
}
}