[JVM] Improve code coverage of EntriesMapping
Ensure that when .entries is accessed from an inline function body or lambda argument, EntriesMapping are properly generated and used without excessive mappings and duplicated fields #KT-53236
This commit is contained in:
committed by
Space
parent
8a181cf2bd
commit
c0f81cbc45
@@ -0,0 +1,35 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// NO_CHECK_LAMBDA_INLINING
|
||||
// WITH_RUNTIME
|
||||
|
||||
// WITH_STDLIB
|
||||
|
||||
// MODULE: lib
|
||||
// FILE: MyEnum.kt
|
||||
|
||||
package test
|
||||
|
||||
enum class X {
|
||||
O,
|
||||
K
|
||||
}
|
||||
|
||||
inline fun test(block: () -> String): String {
|
||||
return block()
|
||||
}
|
||||
|
||||
// MODULE: caller(lib)
|
||||
// !LANGUAGE: +EnumEntries
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
import test.*
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
fun box(): String {
|
||||
return test {
|
||||
X.entries[0].toString()
|
||||
} + test {
|
||||
X.entries[1].toString()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// WITH_RUNTIME
|
||||
// WITH_STDLIB
|
||||
|
||||
// MODULE: lib
|
||||
// FILE: 1.kt
|
||||
|
||||
package test
|
||||
|
||||
enum class X {
|
||||
O,
|
||||
K
|
||||
}
|
||||
|
||||
// MODULE: caller(lib)
|
||||
// !LANGUAGE: +EnumEntries
|
||||
|
||||
// FILE: 2.kt
|
||||
import test.*
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
inline fun test(idx: Int): String {
|
||||
return X.entries[idx].toString()
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return test(0) + test(1)
|
||||
}
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
// WITH_RUNTIME
|
||||
// WITH_STDLIB
|
||||
|
||||
// MODULE: lib
|
||||
// FILE: 1.kt
|
||||
|
||||
package test
|
||||
|
||||
enum class X {
|
||||
O,
|
||||
K
|
||||
}
|
||||
|
||||
enum class Y {
|
||||
O,
|
||||
K
|
||||
}
|
||||
|
||||
// MODULE: caller(lib)
|
||||
// !LANGUAGE: +EnumEntries
|
||||
|
||||
// FILE: 2.kt
|
||||
import test.*
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
fun funForAdditionalMappingArrayInMappingFile(): String = Y.entries[1].toString()
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
inline fun test(idx: Int): String = X.entries[idx].toString()
|
||||
|
||||
// FILE: 3.kt
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
return test(0) + test(1)
|
||||
}
|
||||
Vendored
+38
@@ -0,0 +1,38 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
// WITH_RUNTIME
|
||||
// WITH_STDLIB
|
||||
|
||||
// MODULE: lib
|
||||
// FILE: 1.kt
|
||||
|
||||
package test
|
||||
|
||||
enum class X {
|
||||
O,
|
||||
K
|
||||
}
|
||||
|
||||
enum class Y {
|
||||
O,
|
||||
K
|
||||
}
|
||||
|
||||
// MODULE: caller(lib)
|
||||
// !LANGUAGE: +EnumEntries
|
||||
|
||||
// FILE: 2.kt
|
||||
import test.*
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
inline fun test(idx: Int): String = X.entries[idx].toString()
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
fun funForAdditionalMappingArrayInMappingFile(): String = Y.entries[1].toString()
|
||||
|
||||
// FILE: 3.kt
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
return test(0) + test(1)
|
||||
}
|
||||
Reference in New Issue
Block a user