[IR] Partial linkage: Avoid overriding of private callable members

^KT-53608
This commit is contained in:
Dmitriy Dolovov
2022-09-13 18:06:11 +02:00
parent 84b3e7bfbe
commit f846ecf7d7
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.backend.common.serialization.unlinked.PartialLinkage
import org.jetbrains.kotlin.backend.common.serialization.unlinked.UnlinkedIrElementRenderer.appendDeclaration
import org.jetbrains.kotlin.backend.common.serialization.unlinked.UnlinkedIrElementRenderer.renderError
import org.jetbrains.kotlin.backend.common.serialization.unlinked.UsedClassifierSymbolStatus.Companion.isUnlinked
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.ir.IrBuiltIns
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrStatement
@@ -303,7 +304,11 @@ internal class UnlinkedDeclarationsProcessor(
declaration.transformChildrenVoid()
fun <S : IrSymbol> IrOverridableDeclaration<S>.filterOverriddenSymbols() {
overriddenSymbols = overriddenSymbols.filter { it.isBound }
overriddenSymbols = overriddenSymbols.filter { symbol ->
symbol.isBound
// Handle the case when the overridden declaration became private.
&& (symbol.owner as? IrDeclarationWithVisibility)?.visibility != DescriptorVisibilities.PRIVATE
}
}
for (member in declaration.declarations) {