diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BridgesConstruction.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BridgesConstruction.kt index 02ec22fbb43..2370276a434 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BridgesConstruction.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BridgesConstruction.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.classifierOrNull import org.jetbrains.kotlin.ir.types.isUnit +import org.jetbrains.kotlin.ir.util.isInlined import org.jetbrains.kotlin.ir.util.isInterface import org.jetbrains.kotlin.ir.util.isReal import org.jetbrains.kotlin.ir.util.parentAsClass @@ -188,13 +189,15 @@ class FunctionAndSignature(val function: IrSimpleFunction) { private data class Signature( val name: Name, val extensionReceiverType: String?, - val valueParameters: List + val valueParameters: List, + val returnType: String? ) private val signature = Signature( function.name, function.extensionReceiverParameter?.type?.asString(), - function.valueParameters.map { it.type.asString() } + function.valueParameters.map { it.type.asString() }, + function.returnType.run { if (isInlined()) asString() else null } ) override fun equals(other: Any?): Boolean { diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/SimpleNameGenerator.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/SimpleNameGenerator.kt index f7603e327be..9d53a3d62a9 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/SimpleNameGenerator.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/SimpleNameGenerator.kt @@ -13,8 +13,10 @@ import org.jetbrains.kotlin.ir.expressions.IrLoop import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.classifierOrFail +import org.jetbrains.kotlin.ir.types.isUnit import org.jetbrains.kotlin.ir.util.isDynamic import org.jetbrains.kotlin.ir.util.isEffectivelyExternal +import org.jetbrains.kotlin.ir.util.isInlined import org.jetbrains.kotlin.js.backend.ast.JsName import org.jetbrains.kotlin.js.naming.isES5IdentifierPart import org.jetbrains.kotlin.js.naming.isES5IdentifierStart @@ -201,6 +203,11 @@ class SimpleNameGenerator : NameGenerator { declaration.valueParameters.ifNotEmpty { joinTo(nameBuilder, "") { "_${it.type.asString()}" } } + declaration.returnType.let { + if (it.isInlined()) { + nameBuilder.append("_ret$${it.asString()}") + } + } } }