Files
kotlin-fork/js/js.translator/testData/box/jsName/methodOfOpenClass.kt
T
Alexander Korepanov caa1570e25 [JS IR] Fix clashes between bridge and delegated function call
The patch fixes the js function signature rules to avoid clashes
 between bridge and delegated call. Use overridden symbols dfs of
 JsName annotation in order to get the correct bridge name.

^KT-52968 Fixed
2022-07-28 14:41:47 +00:00

45 lines
1.7 KiB
Kotlin
Vendored

@JsExport
open class TestOpenClass {
@JsName("testName")
open fun testFunction(): String = "TestOpenClass"
open fun testFunction(x: String): String = "TestOpenClass: ${x}"
}
open class TestOpenClassA : TestOpenClass() {
override fun testFunction(): String = "TestOpenClassA"
override fun testFunction(x: String): String = "TestOpenClassA: ${x}"
}
class TestClassA : TestOpenClassA() {
override fun testFunction(): String = "TestClassA"
override fun testFunction(x: String): String = "TestClassA: ${x}"
}
fun testTestOpenClass1(x: TestOpenClass) = x.testFunction()
fun testTestOpenClass2(x: TestOpenClass) = x.testFunction("OK")
fun testTestOpenClassA1(x: TestOpenClassA) = x.testFunction()
fun testTestOpenClassA2(x: TestOpenClassA) = x.testFunction("OK")
fun testTestClassA1(x: TestClassA) = x.testFunction()
fun testTestClassA2(x: TestClassA) = x.testFunction("OK")
fun box(): String {
assertEquals("TestOpenClass", testTestOpenClass1(TestOpenClass()))
assertEquals("TestOpenClass: OK", testTestOpenClass2(TestOpenClass()))
assertEquals("TestOpenClassA", testTestOpenClass1(TestOpenClassA()))
assertEquals("TestOpenClassA: OK", testTestOpenClass2(TestOpenClassA()))
assertEquals("TestOpenClassA", testTestOpenClassA1(TestOpenClassA()))
assertEquals("TestOpenClassA: OK", testTestOpenClassA2(TestOpenClassA()))
assertEquals("TestClassA", testTestOpenClass1(TestClassA()))
assertEquals("TestClassA: OK", testTestOpenClass2(TestClassA()))
assertEquals("TestClassA", testTestOpenClassA1(TestClassA()))
assertEquals("TestClassA: OK", testTestOpenClassA2(TestClassA()))
assertEquals("TestClassA", testTestClassA1(TestClassA()))
assertEquals("TestClassA: OK", testTestClassA2(TestClassA()))
return "OK"
}