From 88e92be0914fe613e1a4be06ae52bb5f484b32eb Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Wed, 19 Jun 2019 16:19:57 +0300 Subject: [PATCH] [IR] Fix name clash between properties with the same fqn Promote ABI version --- .../common/serialization/KotlinMangler.kt | 3 +-- .../properties/genericPropertyMultiModule.kt | 18 ++++++++++++++---- .../kotlin/library/KotlinAbiVersion.kt | 2 +- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinMangler.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinMangler.kt index cbe3a919e84..f6090660ed0 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinMangler.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinMangler.kt @@ -203,8 +203,7 @@ abstract class KotlinManglerImpl: KotlinMangler { val parentDeclaration = (parent as? IrSimpleFunction)?.correspondingPropertySymbol?.owner ?: parent val containingDeclarationPart = when (parentDeclaration) { - is IrDeclarationParent -> parentDeclaration.fqNameUnique.asString() - is IrProperty -> "${parentDeclaration.parent.fqNameUnique}.${parentDeclaration.name}" + is IrDeclaration -> parentDeclaration.uniqSymbolName() else -> error("Unexpected type parameter parent") } return "ktypeparam:$containingDeclarationPart$name@$index" diff --git a/compiler/testData/codegen/box/properties/genericPropertyMultiModule.kt b/compiler/testData/codegen/box/properties/genericPropertyMultiModule.kt index 5f0d23f8156..5922a3102b6 100644 --- a/compiler/testData/codegen/box/properties/genericPropertyMultiModule.kt +++ b/compiler/testData/codegen/box/properties/genericPropertyMultiModule.kt @@ -3,6 +3,7 @@ // FILE: common.kt class C(var t: T) +class G(var t: T) var C.live: T get() { @@ -12,16 +13,25 @@ var C.live: T t = value } +var G.live: T + get() { + return t + } + set(value) { + t = value + } + // MODULE: main(lib) // FILE: main.kt import kotlin.reflect.KMutableProperty0 -fun qux(text: KMutableProperty0): String { - text.set("OK") +fun qux(text: KMutableProperty0, s: String): String { + text.set(s) return text.get() } fun box(): String { - val c = C("FAIL") - return qux(c::live) + val c = C("FAIL_C") + val g = G("FAIL_G") + return qux(c::live, "O") + qux(g::live, "K") } \ No newline at end of file diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinAbiVersion.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinAbiVersion.kt index 4f945d0ee85..99de2180679 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinAbiVersion.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinAbiVersion.kt @@ -22,7 +22,7 @@ fun String.parseKonanAbiVersion(): KotlinAbiVersion { data class KotlinAbiVersion(val version: Int) { companion object { - val CURRENT = KotlinAbiVersion(12) + val CURRENT = KotlinAbiVersion(13) } override fun toString() = "$version" }