diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt index 5c89c43a243..a4e9aca9d63 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl import org.jetbrains.kotlin.ir.expressions.impl.IrFunctionReferenceImpl import org.jetbrains.kotlin.ir.expressions.impl.IrGetValueImpl import org.jetbrains.kotlin.ir.expressions.impl.IrPropertyReferenceImpl +import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols @@ -33,7 +34,7 @@ import org.jetbrains.kotlin.name.Name val STATIC_THIS_PARAMETER = object : IrDeclarationOriginImpl("STATIC_THIS_PARAMETER") {} class PrivateMembersLowering(val context: JsIrBackendContext) : ClassLoweringPass { - private val memberMap = mutableMapOf() + private val memberMap = mutableMapOf() override fun lower(irClass: IrClass) { @@ -41,7 +42,7 @@ class PrivateMembersLowering(val context: JsIrBackendContext) : ClassLoweringPas irClass.declarations.transformFlat { when (it) { is IrSimpleFunction -> transformMemberToStaticFunction(it)?.let { staticFunction -> - memberMap[it] = staticFunction + memberMap[it.symbol] = staticFunction listOf(staticFunction) } is IrProperty -> listOf(it.apply { @@ -56,12 +57,12 @@ class PrivateMembersLowering(val context: JsIrBackendContext) : ClassLoweringPas override fun visitCall(expression: IrCall): IrExpression { super.visitCall(expression) - return memberMap[expression.symbol.owner]?.let { + return memberMap[expression.symbol]?.let { transformPrivateToStaticCall(expression, it) } ?: expression } - override fun visitFunctionReference(expression: IrFunctionReference) = memberMap[expression.symbol.owner]?.let { + override fun visitFunctionReference(expression: IrFunctionReference) = memberMap[expression.symbol]?.let { transformPrivateToStaticReference(expression) { IrFunctionReferenceImpl( expression.startOffset, expression.endOffset, @@ -74,7 +75,7 @@ class PrivateMembersLowering(val context: JsIrBackendContext) : ClassLoweringPas } ?: expression override fun visitPropertyReference(expression: IrPropertyReference): IrExpression { - return if (expression.getter?.owner in memberMap || expression.setter?.owner in memberMap) { + return if (expression.getter in memberMap || expression.setter in memberMap) { transformPrivateToStaticReference(expression) { IrPropertyReferenceImpl( expression.startOffset, expression.endOffset, @@ -82,8 +83,8 @@ class PrivateMembersLowering(val context: JsIrBackendContext) : ClassLoweringPas expression.descriptor, expression.typeArgumentsCount, expression.field, - memberMap[expression.getter?.owner]?.symbol ?: expression.getter, - memberMap[expression.setter?.owner]?.symbol ?: expression.setter, + memberMap[expression.getter]?.symbol ?: expression.getter, + memberMap[expression.setter]?.symbol ?: expression.setter, expression.origin ) } @@ -132,7 +133,7 @@ class PrivateMembersLowering(val context: JsIrBackendContext) : ClassLoweringPas } private fun transformAccessor(accessor: IrSimpleFunction) = - transformMemberToStaticFunction(accessor)?.also { memberMap[accessor] = it } ?: accessor + transformMemberToStaticFunction(accessor)?.also { memberMap[accessor.symbol] = it } ?: accessor private fun transformMemberToStaticFunction(function: IrSimpleFunction): IrSimpleFunction? {