Files
kotlin-fork/js/js.translator/testData/box/nameClashes/overloadClassGenericExtension.kt
T
Alexander Korepanov 0982872959 [JS IR] Fix clash between generic extension overloads
Type parameter constraints are used for calculating JS signature hash.

^KT-51151 Fixed
2022-07-22 16:14:51 +00:00

43 lines
1.4 KiB
Kotlin
Vendored

class Receiver()
class Scope() {
fun <T : String> Receiver.testOverload(e: T) = "String"
fun <T : CharSequence> Receiver.testOverload(e: T) = "CharSequence"
fun <T : Any> Receiver.testOverload(e: T) = "Any"
}
class NullableScope() {
fun <T : String?> Receiver.testOverload(e: T) = "String?"
fun <T : String> Receiver.testOverload(e: T) = "String"
fun <T : CharSequence> Receiver.testOverload(e: T) = "CharSequence"
fun <T : Any?> Receiver.testOverload(e: T) = "Any?"
}
fun box(): String {
val stringVal: String = "Stirng value"
val charSequenceVal: CharSequence = "CharSequence value"
val anyVal: Any = "Any value"
val r = Receiver()
Scope().apply {
assertEquals("String", r.testOverload(stringVal))
assertEquals("CharSequence", r.testOverload(charSequenceVal))
assertEquals("Any", r.testOverload(anyVal))
}
val stringOrNullVal: String? = "Stirng? value"
val charSequenceOrNullVal: CharSequence? = "CharSequence? value"
val anyOrNullVal: Any? = "Any? value"
NullableScope().apply {
assertEquals("String", r.testOverload(stringVal))
assertEquals("String?", r.testOverload(stringOrNullVal))
assertEquals("CharSequence", r.testOverload(charSequenceVal))
assertEquals("Any?", r.testOverload(charSequenceOrNullVal))
assertEquals("Any?", r.testOverload(anyVal))
assertEquals("Any?", r.testOverload(anyOrNullVal))
}
return "OK"
}