KT-2752: add checkers for inconsistent usage of JsName

This commit is contained in:
Alexey Andreev
2016-06-01 18:28:06 +03:00
parent 638952e96e
commit 6e1a0901ac
27 changed files with 364 additions and 94 deletions
@@ -0,0 +1,15 @@
// FILE: foo.kt
package foo
fun bar(x: Int) = x
fun box(): Boolean {
assertEquals(23, bar(23))
assertEquals(42, foo.bar.x)
return true
}
// FILE: foobar.kt
package foo.bar
val x = 42
@@ -0,0 +1,19 @@
// FILE: foo.kt
package foo
private fun bar() = 23
private val bar = 42
fun box(): Boolean {
assertEquals(23, bar())
assertEquals(42, bar)
assertEquals(32, foo.bar.x)
return true
}
// FILE: foobar.kt
package foo.bar
val x = 32
@@ -0,0 +1,23 @@
package foo
class A {
fun foo() = 23
val bar = 123
companion object {
fun foo() = 42
val bar = 142
}
}
fun box(): String {
assertEquals(23, A().foo())
assertEquals(42, A.foo())
assertEquals(123, A().bar)
assertEquals(142, A.bar)
return "OK"
}
@@ -0,0 +1,18 @@
package foo
class A
class B
val A.foo: Int
get() = 32
val B.foo: Int
get() = 42
fun box(): String {
assertEquals(32, A().foo)
assertEquals(42, B().foo)
return "OK"
}
@@ -0,0 +1,15 @@
package foo
class A
fun A.bar() = 23
val A.bar: Int
get() = 42
fun box(): String {
assertEquals(23, A().bar())
assertEquals(42, A().bar)
return "OK"
}
@@ -0,0 +1,12 @@
package foo
@JsName("bar") fun foo(x: Int) = x
private fun bar() = 42
fun box(): String {
assertEquals(23, foo(23))
assertEquals(42, bar())
return "OK"
}
@@ -0,0 +1,12 @@
package foo
fun bar() = 23
private val bar = 32
fun box(): String {
assertEquals(23, bar())
assertEquals(32, bar)
return "OK"
}
@@ -0,0 +1,16 @@
package foo
@native fun bar()
val bar = 32
fun createNativeBar() = js("bar = function() { return 23; };")
fun box(): String {
createNativeBar()
assertEquals(23, bar())
assertEquals(32, bar)
return "OK"
}
+13
View File
@@ -0,0 +1,13 @@
var bar = function() { return 23; };
var baz = 123;
function B() {
this.q = 32;
}
B.prototype.g = function() { return 42; };
B.q = 132;
B.g = function() { return 142; };
var P = {
f: function() { return 222; }
};
+36
View File
@@ -0,0 +1,36 @@
package foo
@JsName("bar") @native fun foo(): Int = noImpl
@JsName("baz") @native val prop: Int get() = noImpl
@JsName("B") @native class A {
@JsName("g") fun f(): Int = noImpl
@JsName("q") val p: Int get() = noImpl
companion object {
@JsName("g") fun f(): Int = noImpl
@JsName("q") val p: Int get() = noImpl
}
}
@JsName("P") @native object O {
fun f(): Int = noImpl
}
fun box(): String {
assertEquals(23, foo())
assertEquals(123, prop)
assertEquals(42, A().f())
assertEquals(32, A().p)
assertEquals(142, A.f())
assertEquals(132, A.p)
assertEquals(222, O.f())
return "OK"
}