mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-09 00:21:47 +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/mutatePrivateJavaStaticField/J.java
vendored
Normal file
3
compiler/testData/codegen/boxWithJava/reflection/mutatePrivateJavaStaticField/J.java
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
public class J {
|
||||
private static String result = "Fail";
|
||||
}
|
||||
10
compiler/testData/codegen/boxWithJava/reflection/mutatePrivateJavaStaticField/K.kt
vendored
Normal file
10
compiler/testData/codegen/boxWithJava/reflection/mutatePrivateJavaStaticField/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 KMutableProperty0<String>
|
||||
p.isAccessible = true
|
||||
p.set("OK")
|
||||
return p.get()
|
||||
}
|
||||
Reference in New Issue
Block a user