Files
kotlin-fork/js/js.translator/testData/box/expression/function/overloadGeneric.kt
T
Ilya Goncharov 002d62de89 rra/ilgonmic/revert-signatures-changes
[JS IR] Fix line number test

[JS IR] Ignore isInstance repl test

[JS IR] Ignore isInstance repl test

[JS IR] Add test with unsafe variance

Revert "[JS IR] Optimize away upcasts"

This reverts commit 8149189585.

Get rid of duplicated signatures

Revert "[JS IR] Consider erasing type parameters in return type in js signatures"

This reverts commit 6adcbe081e.

Revert "rra/ilgonmic/exported-bridges-2 [JS IR] Use js name for signature"

This reverts commit 00289d35

[JS IR] Leave as is

[JS IR] Add test with overloading by generic

[JS IR] Add test from master

[JS IR] Add tests from master

Merge-request: KT-MR-5987
Merged-by: Ilya Goncharov <Ilya.Goncharov@jetbrains.com>

^KT-51700 fixed
^KT-51523 fixed
^KT-51685 fixed
2022-04-05 15:35:12 +00:00

82 lines
1.9 KiB
Kotlin
Vendored

// KJS_WITH_FULL_RUNTIME
class L<T>
class A {
fun foo(a: L<Int>) = "Int"
fun foo(a: L<String>) = "String"
fun L<Int>.bar() = "Int2"
fun L<String>.bar() = "String2"
}
fun foo(a: L<Int>) = "Int"
fun foo(a: L<String>) = "String"
private class TestClass {
private val data = mutableListOf<List<Any>>()
fun withData(data: List<List<Any>>) = apply { this.data.addAll(data) }
fun withData(row: List<Any>) = apply {
data.add(row)
}
fun getCols(): Int {
return data.firstOrNull()?.size ?: return 0
}
}
object B {
fun baz(vararg v: B) = "[A]"
fun baz(vararg v: String) = "[S]"
fun baz(v: Array<String>) = "Array<String>"
}
class C<in T> {
fun bac(c: T): String {
return "T4"
}
fun bac(c: Int): String {
return "Int5"
}
fun bac(c: List<T>): String {
return "ListT4"
}
fun bac(c: List<Int>): String {
return "ListInt4"
}
fun bac(c: List<*>): String {
return "ListStar4"
}
}
fun box(): String {
if (A().foo(L<Int>()) != "Int") return "fail1"
A().apply {
if (L<Int>().bar() != "Int2") return "fail2"
}
if (foo(L<Int>()) != "Int") return "fail3"
val b = TestClass()
val data = mutableListOf<List<Any>>()
data.add(listOf("a", "b", "c"))
data.add(listOf("d", "e", "f"))
b.withData(data)
if (b.getCols() != 3) return "fail4"
if (B.baz(B) != "[A]") return "fail5"
if (B.baz("a") != "[S]") return "fail6"
if (B.baz(arrayOf("b")) != "Array<String>") return "fail7"
if(C<String>().bac("a") != "T4") return "fail8"
if(C<String>().bac(5) != "Int5") return "fail9"
if(C<String>().bac(listOf("a", "b")) != "ListT4") return "fail10"
if(C<String>().bac(listOf(5, 6)) != "ListInt4") return "fail11"
if(C<String>().bac(listOf(Any(), Any())) != "ListStar4") return "fail12"
return "OK"
}