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:
Alexander Udalov
2015-08-04 05:10:27 +03:00
parent a91729e041
commit 9c522b4d49
18 changed files with 249 additions and 205 deletions

View File

@@ -0,0 +1,3 @@
public class J {
private String result = "Fail";
}

View 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]
}