Reflection: add KVisibility, KClass.visibility, KCallable.visibility

This commit is contained in:
Alexander Udalov
2016-07-12 19:29:12 +03:00
parent 7e317f7a7c
commit d78988a12a
13 changed files with 229 additions and 0 deletions
@@ -0,0 +1,29 @@
// WITH_REFLECT
import kotlin.reflect.KClass
import kotlin.reflect.KVisibility
import kotlin.test.assertEquals
class DefaultVisibilityClass
public class PublicClass {
protected class ProtectedClass
fun getProtectedClass(): KClass<*> = ProtectedClass::class
}
internal class InternalClass
private class PrivateClass
fun box(): String {
assertEquals(KVisibility.PUBLIC, DefaultVisibilityClass::class.visibility)
assertEquals(KVisibility.PUBLIC, PublicClass::class.visibility)
assertEquals(KVisibility.PROTECTED, PublicClass().getProtectedClass().visibility)
assertEquals(KVisibility.INTERNAL, InternalClass::class.visibility)
assertEquals(KVisibility.PRIVATE, PrivateClass::class.visibility)
class Local
assertEquals(null, Local::class.visibility)
val anonymous = object {}
assertEquals(null, anonymous::class.visibility)
return "OK"
}