From 0fd4f10f6cabc254aee0479cbc7e58e16753bcdb Mon Sep 17 00:00:00 2001 From: Sergej Jaskiewicz Date: Wed, 23 Aug 2023 17:09:37 +0200 Subject: [PATCH] [K/N] Avoid magic strings in KonanMangler --- .../backend/native/FirNativeKotlinMangler.kt | 15 +++++++------- .../serialization/mangle/MangleConstant.kt | 4 ++++ .../konan/serialization/KonanMangler.kt | 20 +++++++++++-------- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/compiler/fir/native/src/org/jetbrains/kotlin/fir/backend/native/FirNativeKotlinMangler.kt b/compiler/fir/native/src/org/jetbrains/kotlin/fir/backend/native/FirNativeKotlinMangler.kt index 76677e3e0ae..9f76612a245 100644 --- a/compiler/fir/native/src/org/jetbrains/kotlin/fir/backend/native/FirNativeKotlinMangler.kt +++ b/compiler/fir/native/src/org/jetbrains/kotlin/fir/backend/native/FirNativeKotlinMangler.kt @@ -5,10 +5,7 @@ package org.jetbrains.kotlin.fir.backend.native -import org.jetbrains.kotlin.backend.common.serialization.mangle.KotlinExportChecker -import org.jetbrains.kotlin.backend.common.serialization.mangle.KotlinMangleComputer -import org.jetbrains.kotlin.backend.common.serialization.mangle.MangleMode -import org.jetbrains.kotlin.backend.common.serialization.mangle.SpecialDeclarationType +import org.jetbrains.kotlin.backend.common.serialization.mangle.* import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.backend.FirMangler import org.jetbrains.kotlin.fir.backend.FirExportCheckerVisitor @@ -88,15 +85,17 @@ class FirNativeKotlinMangleComputer( return buildString { receiverParameter?.let { append(it.getTypeName(session)) - append(".") + append(MangleConstant.FQN_SEPARATOR) } - append("objc:") + append(MangleConstant.OBJC_MARK) append(it.selector) - if ((this@platformSpecificFunctionName is FirConstructor) && isObjCConstructor(session)) append("#Constructor") + if ((this@platformSpecificFunctionName is FirConstructor) && isObjCConstructor(session)) { + append(MangleConstant.OBJC_CONSTRUCTOR_MARK) + } if (this@platformSpecificFunctionName is FirPropertyAccessor) { - append("#Accessor") + append(MangleConstant.OBJC_PROPERTY_ACCESSOR_MARK) } } } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/MangleConstant.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/MangleConstant.kt index 85853ab5986..03920cde660 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/MangleConstant.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/MangleConstant.kt @@ -47,5 +47,9 @@ enum class MangleConstant(val prefix: Char, val separator: Char, val suffix: Cha const val FUN_PREFIX = "kfun" const val CLASS_PREFIX = "kclass" const val FIELD_PREFIX = "kfield" + + const val OBJC_MARK = "objc:" + const val OBJC_CONSTRUCTOR_MARK = "#Constructor" + const val OBJC_PROPERTY_ACCESSOR_MARK = "#Accessor" } } \ No newline at end of file diff --git a/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanMangler.kt b/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanMangler.kt index 1185c8f8d9c..c2556dbb141 100644 --- a/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanMangler.kt +++ b/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanMangler.kt @@ -71,15 +71,17 @@ abstract class AbstractKonanIrMangler( return buildString { if (extensionReceiverParameter != null) { append(extensionReceiverParameter!!.type.getClass()!!.name) - append(".") + append(MangleConstant.FQN_SEPARATOR) } - append("objc:") + append(MangleConstant.OBJC_MARK) append(it.selector) - if (this@platformSpecificFunctionName is IrConstructor && this@platformSpecificFunctionName.isObjCConstructor) append("#Constructor") + if (this@platformSpecificFunctionName is IrConstructor && this@platformSpecificFunctionName.isObjCConstructor) { + append(MangleConstant.OBJC_CONSTRUCTOR_MARK) + } if ((this@platformSpecificFunctionName as? IrSimpleFunction)?.correspondingPropertySymbol != null) { - append("#Accessor") + append(MangleConstant.OBJC_PROPERTY_ACCESSOR_MARK) } } } @@ -136,15 +138,17 @@ abstract class AbstractKonanDescriptorMangler : DescriptorBasedKotlinManglerImpl return buildString { if (extensionReceiverParameter != null) { append(extensionReceiverParameter!!.type.constructor.declarationDescriptor!!.name) - append(".") + append(MangleConstant.FQN_SEPARATOR) } - append("objc:") + append(MangleConstant.OBJC_MARK) append(it.selector) - if (this@platformSpecificFunctionName is ConstructorDescriptor && this@platformSpecificFunctionName.isObjCConstructor) append("#Constructor") + if (this@platformSpecificFunctionName is ConstructorDescriptor && this@platformSpecificFunctionName.isObjCConstructor) { + append(MangleConstant.OBJC_CONSTRUCTOR_MARK) + } if (this@platformSpecificFunctionName is PropertyAccessorDescriptor) { - append("#Accessor") + append(MangleConstant.OBJC_PROPERTY_ACCESSOR_MARK) } } }