in hot-reload-analysis/src/main/kotlin/org/jetbrains/compose/reload/analysis/MutableApplicationInfoImpl.kt [85:132]
override fun remove(classId: ClassId) {
val previousClassInfo = classIndex.remove(classId) ?: return
previousClassInfo.methods.forEach { methodInfo ->
methodIndex.remove(methodInfo.key)
}
previousClassInfo.fields.forEach { fieldInfo ->
fieldIndex.remove(fieldInfo.key)
}
val previousAllScopes = previousClassInfo.methods.values.map { it.rootScope }
.withClosure<ScopeInfo> { scope -> scope.children }
previousAllScopes.forEach { scope ->
groupIndex[scope.group]?.apply {
remove(scope)
if (isEmpty()) groupIndex.remove(scope.group)
}
scope.methodDependenciesList.forEach { methodId ->
dependencyIndex[methodId]?.apply {
remove(scope)
if (isEmpty()) dependencyIndex.remove(methodId)
}
}
scope.fieldDependenciesList.forEach { fieldId ->
dependencyIndex[fieldId]?.apply {
remove(scope)
if (isEmpty()) dependencyIndex.remove(fieldId)
}
}
}
val previousSuperClassifiers = listOfNotNull(
previousClassInfo.superClass,
*previousClassInfo.superInterfaces.toTypedArray()
)
superIndex.remove(classId)
previousSuperClassifiers.forEach { superClassifier ->
superIndexInverse[superClassifier]?.apply {
remove(classId)
if (isEmpty()) superIndexInverse.remove(superClassifier)
}
}
}