[IR] Fix name clash between properties with the same fqn

Promote ABI version
This commit is contained in:
Roman Artemev
2019-06-19 16:19:57 +03:00
committed by romanart
parent 2995e9fcac
commit 88e92be091
3 changed files with 16 additions and 7 deletions
@@ -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"
@@ -3,6 +3,7 @@
// FILE: common.kt
class C<T>(var t: T)
class G<T>(var t: T)
var <T> C<T>.live: T
get() {
@@ -12,16 +13,25 @@ var <T> C<T>.live: T
t = value
}
var <T> G<T>.live: T
get() {
return t
}
set(value) {
t = value
}
// MODULE: main(lib)
// FILE: main.kt
import kotlin.reflect.KMutableProperty0
fun qux(text: KMutableProperty0<String>): String {
text.set("OK")
fun qux(text: KMutableProperty0<String>, 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")
}
@@ -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"
}