// !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" }