Files
kotlin/compiler/testData/codegen/box/reflection/modifiers/classModality.kt
Alexander Udalov 7e317f7a7c Reflection: add API for declaration modifiers
#KT-10447 Fixed
2016-08-08 17:54:11 +03:00

57 lines
1.7 KiB
Kotlin
Vendored

// WITH_REFLECT
import kotlin.test.assertTrue
import kotlin.test.assertFalse
class FinalClass {
companion object Companion
}
open class OpenClass
abstract class AbstractClass
interface Interface
enum class EnumClass
enum class EnumClassWithAbstractMember { ; abstract fun foo() }
annotation class AnnotationClass
object Object
fun box(): String {
assertTrue(FinalClass::class.isFinal)
assertFalse(FinalClass::class.isOpen)
assertFalse(FinalClass::class.isAbstract)
assertTrue(FinalClass.Companion::class.isFinal)
assertFalse(FinalClass.Companion::class.isOpen)
assertFalse(FinalClass.Companion::class.isAbstract)
assertFalse(OpenClass::class.isFinal)
assertTrue(OpenClass::class.isOpen)
assertFalse(OpenClass::class.isAbstract)
assertFalse(AbstractClass::class.isFinal)
assertFalse(AbstractClass::class.isOpen)
assertTrue(AbstractClass::class.isAbstract)
assertFalse(Interface::class.isFinal)
assertFalse(Interface::class.isOpen)
assertTrue(Interface::class.isAbstract)
assertTrue(EnumClass::class.isFinal)
assertFalse(EnumClass::class.isOpen)
assertFalse(EnumClass::class.isAbstract)
assertTrue(EnumClassWithAbstractMember::class.isFinal)
assertFalse(EnumClassWithAbstractMember::class.isOpen)
assertFalse(EnumClassWithAbstractMember::class.isAbstract)
// Note that unlike in JVM, annotation classes are final in Kotlin
assertTrue(AnnotationClass::class.isFinal)
assertFalse(AnnotationClass::class.isOpen)
assertFalse(AnnotationClass::class.isAbstract)
assertTrue(Object::class.isFinal)
assertFalse(Object::class.isOpen)
assertFalse(Object::class.isAbstract)
return "OK"
}