JVM IR: support inline classes with private constructors from other modules

#KT-44723 Fixed
This commit is contained in:
Alexander Udalov
2021-03-19 21:01:09 +01:00
parent dac218dc39
commit b5f9b1dfc0
12 changed files with 204 additions and 14 deletions
@@ -0,0 +1,14 @@
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// MODULE: lib
// USE_OLD_INLINE_CLASSES_MANGLING_SCHEME
// FILE: A.kt
inline class A private constructor(val value: String) {
constructor(c: Char) : this(c + "K")
}
// MODULE: main(lib)
// FILE: B.kt
fun box(): String = A('O').value
@@ -0,0 +1,16 @@
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// MODULE: lib
// USE_OLD_INLINE_CLASSES_MANGLING_SCHEME
// FILE: A.kt
inline class A private constructor(private val value: String) {
constructor(c: Char) : this(c + "K")
val publicValue: String get() = value
}
// MODULE: main(lib)
// FILE: B.kt
fun box(): String = A('O').publicValue
@@ -0,0 +1,12 @@
// WITH_RUNTIME
// MODULE: lib
// FILE: A.kt
inline class A private constructor(val value: String) {
constructor(c: Char) : this(c + "K")
}
// MODULE: main(lib)
// FILE: B.kt
fun box(): String = A('O').value
@@ -0,0 +1,14 @@
// WITH_RUNTIME
// MODULE: lib
// FILE: A.kt
inline class A private constructor(private val value: String) {
constructor(c: Char) : this(c + "K")
val publicValue: String get() = value
}
// MODULE: main(lib)
// FILE: B.kt
fun box(): String = A('O').publicValue