Files
kotlin-fork/compiler/testData/codegen/boxModernJdk/testsWithJava17/sealed/permittedSubclassesOfSealedKotlinClass.kt
T
2021-10-09 17:07:35 +03:00

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