Files
kotlin-fork/compiler/testData/codegen/box/enum/enumEntriesCompatibilityCheck.kt
T
2023-06-22 17:10:51 +02:00

88 lines
1.5 KiB
Kotlin
Vendored

// !LANGUAGE: +EnumEntries
// IGNORE_BACKEND: JS, JVM
// FULL_JDK
// WITH_STDLIB
package pckg
import kotlin.test.assertEquals
enum class EBasic {
A0;
}
enum class E0 {;
companion object {
val entries = "OK"
}
}
object Shadowing {
val entries = "OK"
enum class E0 {
E;
fun test() = entries
}
}
enum class E01 {;
object entries {
override fun toString(): String {
return "OK"
}
}
}
enum class E02(val entries: String) {
E("OK");
fun test() = entries // check whether this entries is referenced to ctor parameter
}
var e03Res: String? = null
enum class E03 {
E("OK");
constructor(entries: String) {
e03Res = entries
}
}
enum class E04 {
E;
val entries = "OK"
fun test() = entries
}
// This case doesn't work in KJS/IR: KT-58396
interface I05 {
val entries: String
get() = "OK"
}
enum class E05 : I05 {
E;
fun test() = entries
}
@OptIn(ExperimentalStdlibApi::class)
fun box(): String {
assertEquals(EBasic.entries.first().toString(), "A0") // make sure the feature is working
assertEquals(E0.entries, "OK")
assertEquals(Shadowing.E0.E.test(), "OK")
assertEquals(E01.entries.toString(), "OK")
assertEquals(E02.E.test(), "OK")
E03.E // to initialize e03Res
assertEquals(e03Res, "OK")
assertEquals(E04.E.entries, "OK")
assertEquals(E04.E.test(), "OK")
assertEquals(E05.E.test(), "OK")
return "OK"
}