[JS] Keep interfaces

^KT-54173 fixed
This commit is contained in:
Ilya Goncharov
2022-09-29 16:12:19 +00:00
committed by Space Team
parent 41c9ffb060
commit 7d8636aac4
6 changed files with 87 additions and 2 deletions
@@ -127,7 +127,8 @@ internal class JsUsefulDeclarationProcessor(
override fun processSuperTypes(irClass: IrClass) {
irClass.superTypes.forEach {
if (!it.isInterface()) {
val shouldClassBeKept = it.classOrNull?.let { context.keeper.shouldKeep(it.owner) } ?: false
if (!it.isInterface() || shouldClassBeKept) {
(it.classifierOrNull as? IrClassSymbol)?.owner?.enqueue(irClass, "superTypes")
}
}
@@ -63,7 +63,7 @@ class UselessDeclarationsRemover(
private fun IrClassSymbol.collectUsedSuperTypes(): Set<IrClassSymbol> {
return savedTypesCache.getOrPut(this) {
if (owner in usefulDeclarations) {
if (owner in usefulDeclarations || context.keeper.shouldKeep(owner)) {
setOf(this)
} else {
owner.superTypes