FIR IDE: do not search for sealed class inheritors on every class resolve

This commit is contained in:
Ilya Kirillov
2021-04-01 17:55:24 +02:00
parent 0e93924ff3
commit 5ceec858aa
13 changed files with 133 additions and 117 deletions
@@ -86,7 +86,7 @@ class FirSealedClassInheritorsProcessor(
if (regularClass.modality == Modality.SEALED) {
val inheritors = inheritorsMap.remove(regularClass)
if (inheritors != null) {
regularClass.sealedInheritors = inheritors
regularClass.setSealedClassInheritors(inheritors)
}
}
if (inheritorsMap.isEmpty()) return regularClass.compose()
@@ -313,7 +313,7 @@ private object WhenOnSealedClassExhaustivenessChecker : WhenExhaustivenessChecke
return
}
when {
fir.modality == Modality.SEALED -> fir.sealedInheritors?.forEach {
fir.modality == Modality.SEALED -> fir.getSealedClassInheritors(session).forEach {
val symbol = session.symbolProvider.getClassLikeSymbolByFqName(it) as? FirRegularClassSymbol
symbol?.collectAllSubclassesTo(destination, session)
}