Files
kotlin/compiler/testData/codegen/boxWithStdlib/reflection/properties/privatePlatformStaticVarInObject.kt
Alexander Udalov 9c522b4d49 Refactor property calls in reflection, fix some corner cases
- compute a FunctionCaller instance for getter and setter so that "call" only
  delegates to that FunctionCaller's "call", in the same way it's done in
  KFunctionImpl
- use RuntimeTypeMapper.mapPropertySignature to get the exact origin and
  signature of a property and its accessors. This makes unwrapFakeOverride call
  unnecessary and also fixes some cases like private Java fields
- temporarily drop custom range checks, will be re-added soon
2015-08-07 00:55:30 +03:00

26 lines
631 B
Kotlin
Vendored

import kotlin.reflect.*
import kotlin.reflect.jvm.*
import kotlin.platform.platformStatic as static
object Obj {
private static var result: String = "Fail"
}
fun box(): String {
val p = Obj::class.members.single { it.name == "result" } as KMutableProperty1<Any?, String>
p.isAccessible = true
try {
p[null] = "OK"
return "Fail: set should check that first argument is Obj"
} catch (e: IllegalArgumentException) {}
try {
p[null]
return "Fail: get should check that first argument is Obj"
} catch (e: IllegalArgumentException) {}
p[Obj] = "OK"
return p[Obj]
}