Some mangling disambiguation tests.
This commit is contained in:
committed by
alexander-gorshenev
parent
f91bc457db
commit
49674d2b1b
@@ -0,0 +1,36 @@
|
||||
fun test_direct() {
|
||||
val mutListInt = mutableListOf<Int>(1, 2, 3, 4)
|
||||
val mutListNum = mutableListOf<Number>(9, 10, 11, 12)
|
||||
val mutListAny = mutableListOf<Any>(5, 6, 7, 8)
|
||||
|
||||
mangle1(mutListInt)
|
||||
mangle1(mutListNum)
|
||||
mangle1(mutListAny)
|
||||
}
|
||||
|
||||
fun test_param() {
|
||||
val mutListInt = mutableListOf<Int>(1, 2, 3, 4)
|
||||
val mutListNum = mutableListOf<Number>(9, 10, 11, 12)
|
||||
val mutListAny = mutableListOf<Any>(5, 6, 7, 8)
|
||||
|
||||
mangle2(mutListInt)
|
||||
mangle2(mutListNum)
|
||||
mangle2(mutListAny)
|
||||
}
|
||||
|
||||
fun test_multiple_constructors() {
|
||||
val any = mapOf<Float, Float>()
|
||||
val comparable = "some string"
|
||||
val number = 17
|
||||
|
||||
mangle3(any)
|
||||
mangle3(comparable)
|
||||
mangle3(number)
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
test_direct()
|
||||
test_param()
|
||||
test_multiple_constructors()
|
||||
}
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
public fun mangle1(l: List<Int>) {
|
||||
println("Int direct $l")
|
||||
}
|
||||
|
||||
public fun mangle1(l: List<out Number>) {
|
||||
println("out Number direct $l")
|
||||
}
|
||||
|
||||
public fun mangle1(l: List<*>) {
|
||||
println("star direct $l")
|
||||
}
|
||||
|
||||
public fun <T> mangle2(l: T) where T: List<Int>
|
||||
{
|
||||
println("Int param $l")
|
||||
}
|
||||
|
||||
public fun <T> mangle2(l: T) where T: List<out Number>
|
||||
{
|
||||
println("out Number param $l")
|
||||
}
|
||||
|
||||
public fun <T> mangle2(l: T) where T: List<*>
|
||||
{
|
||||
println("star param $l")
|
||||
}
|
||||
|
||||
public fun <T> mangle3(l: T)
|
||||
{
|
||||
println("no constructors $l")
|
||||
}
|
||||
|
||||
public fun <T> mangle3(l: T)
|
||||
where
|
||||
T: Comparable<T>
|
||||
{
|
||||
println("single constructor $l")
|
||||
}
|
||||
|
||||
public fun <T> mangle3(l: T)
|
||||
where
|
||||
T: Comparable<T>,
|
||||
T: Number
|
||||
{
|
||||
println("two constructors $l")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user