mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-10 00:21:35 +00:00
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
This commit is contained in:
10
compiler/testData/codegen/boxWithJava/reflection/mutatePrivateJavaInstanceField/K.kt
vendored
Normal file
10
compiler/testData/codegen/boxWithJava/reflection/mutatePrivateJavaInstanceField/K.kt
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
import kotlin.reflect.*
|
||||
import kotlin.reflect.jvm.*
|
||||
|
||||
fun box(): String {
|
||||
val a = J()
|
||||
val p = J::class.members.single { it.name == "result" } as KMutableProperty1<J, String>
|
||||
p.isAccessible = true
|
||||
p[a] = "OK"
|
||||
return p[a]
|
||||
}
|
||||
Reference in New Issue
Block a user