mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-09 15:53:37 +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:
3
compiler/testData/codegen/boxWithJava/reflection/mutatePrivateJavaInstanceField/J.java
vendored
Normal file
3
compiler/testData/codegen/boxWithJava/reflection/mutatePrivateJavaInstanceField/J.java
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
public class J {
|
||||
private String result = "Fail";
|
||||
}
|
||||
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