30 lines
759 B
Kotlin
Vendored
30 lines
759 B
Kotlin
Vendored
// IGNORE_BACKEND: JVM
|
|
// WITH_REFLECT
|
|
// !LANGUAGE: +JvmPermittedSubclassesAttributeForSealed
|
|
|
|
sealed class Base
|
|
class O : Base()
|
|
class K : Base()
|
|
|
|
sealed interface IBase
|
|
class X : IBase
|
|
class Y : IBase
|
|
|
|
fun box(): String {
|
|
val cBase = Base::class.java
|
|
if (!cBase.isSealed) return "Error: Base is not sealed"
|
|
val pBase = cBase.permittedSubclasses.mapTo(HashSet()) { it.simpleName ?: "???" }
|
|
if (pBase != setOf("O", "K")) {
|
|
return "Failed: $pBase"
|
|
}
|
|
|
|
val cIBase = IBase::class.java
|
|
if (!cIBase.isSealed) return "Error: IBase is not sealed"
|
|
val pIBase = cIBase.permittedSubclasses.mapTo(HashSet()) { it.simpleName ?: "???" }
|
|
if (pIBase != setOf("X", "Y")) {
|
|
return "Failed: $pIBase"
|
|
}
|
|
|
|
return "OK"
|
|
}
|