88 lines
1.5 KiB
Kotlin
Vendored
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"
|
|
}
|