[JVM] Lower .entries calls on Kotlin enums

Leveraging the same mechanism with $EntriesMapping as Java enums.
Old (compiled with LV/AV < 1.8) enums are detected by looking for
static special <get-entries> method that cannot be introduced on
Kotlin enums otherwise

#KT-53236
This commit is contained in:
Vsevolod Tolstopyatov
2022-07-22 14:33:28 +02:00
committed by Space
parent a12a31ce68
commit e3bff290bd
20 changed files with 268 additions and 18 deletions
@@ -0,0 +1,29 @@
// TARGET_BACKEND: JVM_IR
// FULL_JDK
// WITH_STDLIB
// MODULE: lib
// FILE: MyEnums.kt
enum class MyEnum {
N, O
}
enum class MyEnum2 {
O, K
}
// MODULE: caller(lib)
// !LANGUAGE: +EnumEntries
// FILE: Box.kt
@OptIn(ExperimentalStdlibApi::class)
object Container {
fun getK() = MyEnum2.entries[1].toString()
}
@OptIn(ExperimentalStdlibApi::class)
fun box(): String {
return MyEnum.entries[1].toString() + Container.getK()
}
// 2 class [a-zA-Z]+\$EntriesMappings