[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.appendDeclaration
import org.jetbrains.kotlin.backend.common.serialization.unlinked.UnlinkedIrElementRenderer.renderError 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.backend.common.serialization.unlinked.UsedClassifierSymbolStatus.Companion.isUnlinked
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.IrBuiltIns
import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrStatement import org.jetbrains.kotlin.ir.IrStatement
@@ -303,7 +304,11 @@ internal class UnlinkedDeclarationsProcessor(
declaration.transformChildrenVoid() declaration.transformChildrenVoid()
fun <S : IrSymbol> IrOverridableDeclaration<S>.filterOverriddenSymbols() { 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) { for (member in declaration.declarations) {