diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/symbols/Fir2IrBindableSymbol.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/symbols/Fir2IrBindableSymbol.kt index 23fcb956733..b3f20f94fc7 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/symbols/Fir2IrBindableSymbol.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/symbols/Fir2IrBindableSymbol.kt @@ -43,6 +43,8 @@ abstract class Fir2IrBindableSymbol, B : IrSymbolOwner, if (delegate === other) return true return false } + + override var privateSignature: IdSignature? + get() = delegate.privateSignature + set(value) { + delegate.privateSignature = value + } } class IrDelegatingClassSymbolImpl(delegate: IrClassSymbol) : diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/IrSymbol.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/IrSymbol.kt index 39e1f5de9b1..56778bf9267 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/IrSymbol.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/IrSymbol.kt @@ -36,6 +36,9 @@ interface IrSymbol { val isBound: Boolean val signature: IdSignature? + + // Used to store signatures in private symbols for JS IC + var privateSignature: IdSignature? } val IrSymbol.isPublicApi: Boolean diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/impl/DescriptorlessExternalPackageFragmentSymbol.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/impl/DescriptorlessExternalPackageFragmentSymbol.kt index 1467239cce1..0a524d283a5 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/impl/DescriptorlessExternalPackageFragmentSymbol.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/impl/DescriptorlessExternalPackageFragmentSymbol.kt @@ -30,4 +30,6 @@ class DescriptorlessExternalPackageFragmentSymbol : IrExternalPackageFragmentSym override fun bind(owner: IrExternalPackageFragment) { _owner = owner } + + override var privateSignature: IdSignature? = null } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/impl/IrPrivateSymbolBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/impl/IrPrivateSymbolBase.kt index 46c47a11e84..cc6565c78c3 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/impl/IrPrivateSymbolBase.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/impl/IrPrivateSymbolBase.kt @@ -70,6 +70,8 @@ abstract class IrBindableSymbolBase get() = classSymbolTable.unboundSymbols @@ -841,7 +843,9 @@ open class SymbolTable( override fun referenceSimpleFunctionFromLinker(sig: IdSignature): IrSimpleFunctionSymbol { return simpleFunctionSymbolTable.run { if (sig.isPubliclyVisible) referenced(sig, false) { IrSimpleFunctionPublicSymbolImpl(sig) } - else IrSimpleFunctionSymbolImpl(signature = sig) + else IrSimpleFunctionSymbolImpl().also { + it.privateSignature = sig + } } }