mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-09 15:53:37 +00:00
56 lines
1.7 KiB
Kotlin
Vendored
56 lines
1.7 KiB
Kotlin
Vendored
import kotlin.reflect.*
|
|
import kotlin.test.assertEquals
|
|
|
|
open class K : J() {
|
|
public val publicMemberK: String = ""
|
|
private val privateMemberK: String = ""
|
|
public val Any.publicMemberExtensionK: String get() = ""
|
|
private val Any.privateMemberExtensionK: String get() = ""
|
|
}
|
|
|
|
class L : K()
|
|
|
|
fun Collection<KProperty<*>>.names(): Set<String> =
|
|
this.map { it.name }.toSet()
|
|
|
|
fun check(c: Collection<KProperty<*>>, names: Set<String>) {
|
|
assertEquals(names, c.names())
|
|
}
|
|
|
|
fun box(): String {
|
|
val j = J::class
|
|
|
|
check(j.staticProperties,
|
|
setOf("publicStaticJ", "privateStaticJ"))
|
|
check(j.declaredMemberProperties,
|
|
setOf("publicMemberJ", "privateMemberJ"))
|
|
check(j.declaredMemberExtensionProperties,
|
|
emptySet())
|
|
|
|
check(j.memberProperties, j.declaredMemberProperties.names())
|
|
check(j.memberExtensionProperties, emptySet())
|
|
|
|
val k = K::class
|
|
|
|
check(k.staticProperties,
|
|
emptySet())
|
|
check(k.declaredMemberProperties,
|
|
setOf("publicMemberK", "privateMemberK"))
|
|
check(k.declaredMemberExtensionProperties,
|
|
setOf("publicMemberExtensionK", "privateMemberExtensionK"))
|
|
|
|
check(k.memberProperties, setOf("publicMemberJ") + k.declaredMemberProperties.names())
|
|
check(k.memberExtensionProperties, k.declaredMemberExtensionProperties.names())
|
|
|
|
|
|
val l = L::class
|
|
|
|
check(l.staticProperties, emptySet())
|
|
check(l.declaredMemberProperties, emptySet())
|
|
check(l.declaredMemberExtensionProperties, emptySet())
|
|
check(l.memberProperties, setOf("publicMemberJ", "publicMemberK"))
|
|
check(l.memberExtensionProperties, setOf("publicMemberExtensionK"))
|
|
|
|
return "OK"
|
|
}
|