JS: fix obsolete tests
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
package foo
|
||||
|
||||
private var log = ""
|
||||
|
||||
public fun public_baz(i: Int) {
|
||||
log = "public_baz"
|
||||
}
|
||||
@native public fun public_baz(a: String) {
|
||||
}
|
||||
@@ -10,6 +13,8 @@ internal fun internal_baz(i: Int) {
|
||||
internal @native fun internal_baz(a: String) {
|
||||
}
|
||||
|
||||
private fun getCurrentPackage(): dynamic = js("_").foo
|
||||
|
||||
private fun private_baz(i: Int) {
|
||||
}
|
||||
@native private fun private_baz(a: String) {
|
||||
@@ -174,22 +179,21 @@ fun testMangledPrivate(f: () -> Unit) {
|
||||
}
|
||||
}
|
||||
|
||||
public fun stable_mangled_baz(i: Int) {
|
||||
class Dummy {
|
||||
public fun stable_mangled_baz(i: Int) { }
|
||||
}
|
||||
|
||||
val SIMPLE = "baz"
|
||||
val SIMPLE0 = "${SIMPLE}_0"
|
||||
val NATIVE = SIMPLE
|
||||
val STABLE = { stable_mangled_baz(0) }.extractNames()[1]
|
||||
val STABLE = "baz_za3lpa$"
|
||||
|
||||
fun box(): String {
|
||||
testGroup = "Top Level"
|
||||
test(STABLE) { public_baz(0) }
|
||||
|
||||
getCurrentPackage().`public_baz_za3lpa$`(0)
|
||||
assertEquals("public_baz", log)
|
||||
test(NATIVE) { public_baz("native") }
|
||||
test(SIMPLE0) { internal_baz(0) }
|
||||
test(NATIVE) { internal_baz("native") }
|
||||
test(SIMPLE0) { private_baz(0) }
|
||||
test(NATIVE) { private_baz("native") }
|
||||
|
||||
testGroup = "Public Class"
|
||||
test(STABLE) { PublicClass().public_baz(0) }
|
||||
|
||||
@@ -1,12 +1,5 @@
|
||||
package foo
|
||||
|
||||
public fun equals(a: Any?): Boolean = true
|
||||
public fun hashCode(): Int = 0
|
||||
public fun toString(): String = ""
|
||||
fun equals(a: Any?, b: Any?): Boolean = true
|
||||
fun hashCode(i: Int): Int = 0
|
||||
fun toString(s: String): String = ""
|
||||
|
||||
public class PublicClass {
|
||||
override fun equals(a: Any?): Boolean = this === a
|
||||
override fun hashCode(): Int = 0
|
||||
@@ -61,12 +54,12 @@ fun test(expected: String, f: () -> Unit) {
|
||||
}
|
||||
}
|
||||
|
||||
val STABLE_EQUALS = { equals(0) }.extractNames()[1]
|
||||
val STABLE_HASH_CODE = { hashCode() }.extractNames()[1]
|
||||
val STABLE_TO_STRING = { toString() }.extractNames()[1]
|
||||
val STABLE_EQUALS_2 = { equals(0, 0) }.extractNames()[1]
|
||||
val STABLE_HASH_CODE_2 = { hashCode(0) }.extractNames()[1]
|
||||
val STABLE_TO_STRING_2 = { toString("") }.extractNames()[1]
|
||||
val STABLE_EQUALS = "equals_za3rmp$"
|
||||
val STABLE_HASH_CODE = "hashCode"
|
||||
val STABLE_TO_STRING = "toString"
|
||||
val STABLE_EQUALS_2 = "equals_wn2jw4$"
|
||||
val STABLE_HASH_CODE_2 = "hashCode_za3lpa$"
|
||||
val STABLE_TO_STRING_2 = "toString_61zpoe$"
|
||||
|
||||
fun box(): String {
|
||||
testGroup = "Public Class"
|
||||
|
||||
+63
-33
@@ -1,45 +1,75 @@
|
||||
// MODULE: lib
|
||||
// FILE: lib.kt
|
||||
package foo
|
||||
|
||||
public class A
|
||||
var log = ""
|
||||
|
||||
internal fun A(a: Int){}
|
||||
|
||||
public class B(a: Int)
|
||||
|
||||
internal fun B(){}
|
||||
|
||||
internal fun C(a: Int){}
|
||||
|
||||
public class C
|
||||
|
||||
internal fun D(){}
|
||||
|
||||
public class D(a: Int)
|
||||
|
||||
//Testing
|
||||
|
||||
internal fun testClass(name: String, f: () -> Unit) {
|
||||
val fs = f.toString()
|
||||
|
||||
if ("$name(" !in fs) throw Exception("Name of class '$name' unexpectedly mangled: $fs")
|
||||
public class A {
|
||||
init {
|
||||
log += "class A;"
|
||||
}
|
||||
}
|
||||
|
||||
internal fun testFun(name: String, f: () -> Unit) {
|
||||
val fs = f.toString()
|
||||
|
||||
if ("$name(" in fs) throw Exception("Name of fun '$name' unexpectedly not mangled: $fs")
|
||||
internal fun A(a: Int) {
|
||||
log += "fun A;"
|
||||
}
|
||||
|
||||
public class B(a: Int) {
|
||||
init {
|
||||
log += "class B;"
|
||||
}
|
||||
}
|
||||
|
||||
internal fun B() {
|
||||
log += "fun B;"
|
||||
}
|
||||
|
||||
internal fun C(a: Int) {
|
||||
log += "fun C;"
|
||||
}
|
||||
|
||||
public class C {
|
||||
init {
|
||||
log += "class C;"
|
||||
}
|
||||
}
|
||||
|
||||
internal fun D() {
|
||||
log += "fun D;"
|
||||
}
|
||||
|
||||
public class D(a: Int) {
|
||||
init {
|
||||
log += "class D;"
|
||||
}
|
||||
}
|
||||
|
||||
fun callInternalFunctions() {
|
||||
A(0)
|
||||
B()
|
||||
C(0)
|
||||
D()
|
||||
}
|
||||
|
||||
|
||||
// MODULE: main(lib)
|
||||
// FILE: main.kt
|
||||
package foo
|
||||
|
||||
private val currentPackage: dynamic
|
||||
get() = js("\$module\$lib").foo
|
||||
|
||||
private fun instantiate(classRef: dynamic, param: dynamic = js("undefined")) = js("new classRef(param)")
|
||||
|
||||
fun box(): String {
|
||||
testClass("A") { A() }
|
||||
testFun("A") { A(1) }
|
||||
testFun("B") { B() }
|
||||
testClass("B") { B(1) }
|
||||
testClass("C") { C() }
|
||||
testFun("C") { C(1) }
|
||||
testFun("D") { D() }
|
||||
testClass("D") { D(1) }
|
||||
callInternalFunctions()
|
||||
|
||||
instantiate(currentPackage.A)
|
||||
instantiate(currentPackage.B)
|
||||
instantiate(currentPackage.C)
|
||||
instantiate(currentPackage.D, 123)
|
||||
|
||||
if (log != "fun A;fun B;fun C;fun D;class A;class B;class C;class D;") return "fail: $log"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
Vendored
-3
@@ -29,9 +29,6 @@ fun test(testName: String, ff: Any, fb: Any) {
|
||||
fun box(): String {
|
||||
val a = A()
|
||||
|
||||
test("foo()", { foo() }, { boo() })
|
||||
test("foo(Int)", { foo(1) }, { boo(1) })
|
||||
|
||||
test("a.foo()", { a.foo() }, { a.boo() })
|
||||
test("a.foo(Int)", { a.foo(1) }, { a.boo(1) })
|
||||
|
||||
|
||||
@@ -1,59 +1,5 @@
|
||||
package foo
|
||||
|
||||
fun internal_foo(): Int = 1
|
||||
@native fun internal_foo(a: Array<Int>) = "should be ignored"
|
||||
fun internal_foo(i: Int): Int = 2
|
||||
|
||||
fun internal_boo(i: Int): Int = 2
|
||||
fun internal_boo(s: String): Int = 3
|
||||
fun internal_boo(): Int = 1
|
||||
@native fun internal_boo(a: Array<Int>) = "should be ignored"
|
||||
|
||||
val internal_f = { internal_foo() + internal_foo(1) }
|
||||
val internal_b = { internal_boo() + internal_boo(1) }
|
||||
|
||||
|
||||
public fun public_foo(): Int = 1
|
||||
@native public fun public_foo(a: Array<Int>): String = "should be ignored"
|
||||
public fun public_foo(i: Int): Int = 2
|
||||
|
||||
public fun public_boo(i: Int): Int = 2
|
||||
public fun public_boo(s: String): Int = 3
|
||||
public fun public_boo(): Int = 1
|
||||
@native public fun public_boo(a: Array<Int>): String = "should be ignored"
|
||||
|
||||
val public_f = { public_foo() + public_foo(1) }
|
||||
val public_b = { public_boo() + public_boo(1) }
|
||||
|
||||
|
||||
@native private fun private_foo(a: Array<Int>): String = "should be ignored"
|
||||
private fun private_foo(): Int = 1
|
||||
private fun private_foo(i: Int): Int = 2
|
||||
|
||||
@native private fun private_boo(a: Array<Int>): String = "should be ignored"
|
||||
private fun private_boo(): Int = 1
|
||||
private fun private_boo(i: Int): Int = 2
|
||||
private fun private_boo(s: String): Int = 3
|
||||
|
||||
val private_f = { private_foo() + private_foo(1) }
|
||||
val private_b = { private_boo() + private_boo(1) }
|
||||
|
||||
|
||||
public fun mixed_foo(s: String): Int = 3
|
||||
fun mixed_foo(): Int = 1
|
||||
@native fun mixed_foo(a: Array<Int>) = "should be ignored"
|
||||
private fun mixed_foo(s: String, i: Int): Int = 4
|
||||
fun mixed_foo(i: Int): Int = 2
|
||||
|
||||
fun mixed_boo(i: Int): Int = 2
|
||||
private fun mixed_boo(s: String, i: Int): Int = 4
|
||||
@native fun mixed_boo(a: Array<Int>) = "should be ignored"
|
||||
public fun mixed_boo(s: String): Int = 3
|
||||
fun mixed_boo(): Int = 1
|
||||
|
||||
val mixed_f = { mixed_foo() + mixed_foo(1) + mixed_foo("str") + mixed_foo("str", 44) }
|
||||
val mixed_b = { mixed_boo() + mixed_boo(1) + mixed_boo("str") + mixed_boo("str", 44) }
|
||||
|
||||
|
||||
class TestInternal {
|
||||
internal fun foo(): Int = 1
|
||||
@@ -115,18 +61,6 @@ class TestMixed {
|
||||
val mixed_in_class_f = TestMixed().f
|
||||
val mixed_in_class_b = TestMixed().b
|
||||
|
||||
class A
|
||||
|
||||
public fun A.foo(): Int = 2
|
||||
public val A.foo: Int
|
||||
get() = 1
|
||||
public val A.boo: Int
|
||||
get() = 1
|
||||
public fun A.boo(): Int = 2
|
||||
|
||||
val public_ext_f: A.() -> Int = { -> this.foo() + this.foo }
|
||||
val public_ext_b: A.() -> Int = { -> this.boo() + this.boo }
|
||||
|
||||
interface TestPublicInTrait {
|
||||
@JsName("foo") fun foo(): Int = 2
|
||||
@JsName("fooProp") val foo: Int
|
||||
@@ -139,25 +73,21 @@ val public_in_trait_b = { obj: TestPublicInTrait -> obj.boo() + obj.boo }
|
||||
|
||||
//Testing
|
||||
|
||||
private val functionRegex = RegExp("function\\s+[a-z0-9\$_]+\\(")
|
||||
|
||||
fun test(testName: String, ff: Any, fb: Any) {
|
||||
val f = ff.toString()
|
||||
val b = fb.toString().replaceAll("boo", "foo")
|
||||
val f = ff.toString().replace(functionRegex, "")
|
||||
val b = fb.toString().replaceAll("boo", "foo").replace(functionRegex, "")
|
||||
|
||||
if (f != b) fail("FAILED on ${testName}:\n f = \"$f\"\n b = \"$b\"")
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
test("internal", internal_f, internal_b)
|
||||
test("public", public_f, public_b)
|
||||
test("private", private_f, private_b)
|
||||
test("mixed", mixed_f, mixed_b)
|
||||
|
||||
test("internal_in_class", internal_in_class_f, internal_in_class_b)
|
||||
test("public_in_class", public_in_class_f, public_in_class_b)
|
||||
test("private_in_class", private_in_class_f, private_in_class_b)
|
||||
test("mixed_in_class", mixed_in_class_f, mixed_in_class_b)
|
||||
|
||||
test("public_ext_prop", public_ext_f, public_ext_b)
|
||||
test("public_in_trait", public_in_trait_f, public_in_trait_b)
|
||||
|
||||
return "OK"
|
||||
|
||||
Reference in New Issue
Block a user