JS: refactor translation of callable references to top-level properties

This commit is contained in:
Alexey Andreev
2016-10-26 19:14:24 +03:00
parent 0252fe57af
commit ac4bfc645e
3 changed files with 57 additions and 16 deletions
@@ -4,6 +4,9 @@ var x = 1
val y = 2
val z: Int
get() = 3
fun box(): String {
var refX = ::x
assertEquals(1, refX.get())
@@ -16,5 +19,9 @@ fun box(): String {
assertEquals(2, refY.get())
assertEquals("y", refY.name)
var refZ = ::z
assertEquals(3, refZ.get())
assertEquals("z", refZ.name)
return "OK"
}
+3 -4
View File
@@ -470,10 +470,9 @@
};
};
Kotlin.getCallableRefForTopLevelProperty = function(packageName, name, isVar) {
var getFun = Function("p", "return function " + name + "() { return p['" + name + "']; }")(packageName);
var setFun = isVar ? function(value) { packageName[name] = value; } : null;
return getPropertyRefClass(getFun, "get", setFun, "set_za3rmp$", propertyRefClassMetadataCache.zeroArg);
Kotlin.getCallableRefForTopLevelProperty = function(getter, setter, name) {
var getFun = Function("getter", "return function " + name + "() { return getter(); }")(getter, setter);
return getPropertyRefClass(getFun, "get", setter, "set_za3rmp$", propertyRefClassMetadataCache.zeroArg);
};
Kotlin.getCallableRefForMemberProperty = function(name, isVar) {