Some mangling disambiguation tests.

This commit is contained in:
Alexander Gorshenev
2017-04-06 14:28:55 +03:00
committed by alexander-gorshenev
parent f91bc457db
commit 49674d2b1b
3 changed files with 98 additions and 0 deletions
+15
View File
@@ -467,6 +467,21 @@ task enum_linkTest(type: LinkKonanTest) {
lib = "codegen/enum/linkTest_lib.kt"
}
task mangling(type: LinkKonanTest) {
goldValue =
"Int direct [1, 2, 3, 4]\n" +
"out Number direct [9, 10, 11, 12]\n" +
"star direct [5, 6, 7, 8]\n" +
"Int param [1, 2, 3, 4]\n" +
"out Number param [9, 10, 11, 12]\n" +
"star param [5, 6, 7, 8]\n" +
"no constructors {}\n" +
"single constructor some string\n" +
"two constructors 17\n"
source = "mangling/mangling.kt"
lib = "mangling/manglinglib.kt"
}
task innerClass_simple(type: RunKonanTest) {
goldValue = "OK\n"
source = "codegen/innerClass/simple.kt"
+36
View File
@@ -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")
}