KT-2752: fix JsName with explicit use target. Add some tests for JsName with use targets

This commit is contained in:
Alexey Andreev
2016-06-03 13:05:52 +03:00
parent be0013d9f2
commit 725d13b72e
20 changed files with 138 additions and 41 deletions
@@ -3,19 +3,23 @@ package foo
import kotlin.reflect.KProperty
class A {
@JsName("xx") val x: Int by B()
@JsName("xx") val x: Int by B(23)
@get:JsName("getYY") val y: Int by B(42)
}
class B {
operator fun getValue(thisRef: Any?, property: KProperty<*>): Int = 23
class B(val value: Int) {
operator fun getValue(thisRef: Any?, property: KProperty<*>): Int = value
}
fun box(): String {
val a = A()
assertEquals(23, a.x)
assertEquals(42, a.y)
val d: dynamic = a
assertEquals(23, d.xx)
assertEquals(42, d.getYY())
return "OK"
}
@@ -3,10 +3,10 @@ package foo
fun bar(x: Int) = x
fun box(): Boolean {
fun box(): String {
assertEquals(23, bar(23))
assertEquals(42, foo.bar.x)
return true
return "OK"
}
// FILE: foobar.kt
@@ -5,12 +5,12 @@ private fun bar() = 23
private val bar = 42
fun box(): Boolean {
fun box(): String {
assertEquals(23, bar())
assertEquals(42, bar)
assertEquals(32, foo.bar.x)
return true
return "OK"
}
// FILE: foobar.kt
@@ -0,0 +1,31 @@
package foo
class A {
@get:JsName("getX_") val x = 23
@get:JsName("getY_") @set:JsName("setY_") var y = 0
@JsName("z_") var z = 0
}
fun box(): String {
val a = A()
assertEquals(23, a.x)
assertEquals(0, a.y)
a.y = 42
assertEquals(42, a.y)
a.z = 99
assertEquals(99, a.z)
val d: dynamic = A()
assertEquals(23, d.getX_())
assertEquals(0, d.getY_())
d.setY_(42)
assertEquals(42, d.getY_())
d.z_ = 99
assertEquals(99, d.z_)
return "OK"
}
@@ -1,4 +1,4 @@
// ONLY_THIS_QUALIFIED_REFERENCES: foo_qltb3l$
// ONLY_THIS_QUALIFIED_REFERENCES: foo_0
package foo
@@ -11,7 +11,11 @@ open class A {
}
}
class B : A() {
interface C {
@get:JsName("getZ_") val z: Int
}
class B : A(), C {
override val x: Int
get() = 42
@@ -20,6 +24,8 @@ class B : A() {
set(value) {
super.y = value + 2
}
override val z = 55
}
fun getPackage() = js("return Kotlin.modules.JS_TESTS.foo")
@@ -31,6 +37,7 @@ fun box(): String {
assertEquals(15, a.y)
a.y = 13
assertEquals(30, a.y)
assertEquals(55, a.z)
val d: dynamic = B()
@@ -38,6 +45,7 @@ fun box(): String {
assertEquals(15, d.getY_())
d.setY_(13)
assertEquals(30, d.getY_())
assertEquals(55, d.getZ_())
return "OK"
}