From 6cc39788fd0163d937352ec2ab3c9664f650e0a6 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Mon, 22 Feb 2021 18:26:06 +0100 Subject: [PATCH] FIR: Fix main fn mangling (without proper detection) proper main function detector has to be implemented in addition to that --- .../kotlin/fir/backend/jvm/FirJvmMangleComputer.kt | 11 +++++++++++ compiler/testData/codegen/box/package/mainInFiles.kt | 1 - 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt index 272be1cc857..57b3520f02c 100644 --- a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt +++ b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.backend.common.serialization.mangle.MangleMode import org.jetbrains.kotlin.backend.common.serialization.mangle.collectForMangler import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.declarations.* +import org.jetbrains.kotlin.fir.resolve.firProvider import org.jetbrains.kotlin.fir.resolve.symbolProvider import org.jetbrains.kotlin.fir.resolve.fullyExpandedType import org.jetbrains.kotlin.fir.resolve.toSymbol @@ -35,6 +36,11 @@ open class FirJvmMangleComputer( open fun FirFunction<*>.platformSpecificFunctionName(): String? = null + open fun FirFunction<*>.platformSpecificSuffix(): String? = + if (this is FirSimpleFunction && name.asString() == "main") + this@FirJvmMangleComputer.session.firProvider.getFirCallableContainerFile(symbol)?.name + else null + open fun FirFunction<*>.specialValueParamPrefix(param: FirValueParameter): String = "" private fun addReturnType(): Boolean = false @@ -121,6 +127,11 @@ open class FirJvmMangleComputer( val name = (this as? FirSimpleFunction)?.name ?: Name.special("") builder.append(name.asString()) + platformSpecificSuffix()?.let { + builder.append(MangleConstant.PLATFORM_FUNCTION_MARKER) + builder.append(it) + } + mangleSignature(isCtor, isStatic) } diff --git a/compiler/testData/codegen/box/package/mainInFiles.kt b/compiler/testData/codegen/box/package/mainInFiles.kt index 48bbd7ad905..423aa39d980 100644 --- a/compiler/testData/codegen/box/package/mainInFiles.kt +++ b/compiler/testData/codegen/box/package/mainInFiles.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME