Some mangling disambiguation tests.
This commit is contained in:
committed by
alexander-gorshenev
parent
f91bc457db
commit
49674d2b1b
@@ -467,6 +467,21 @@ task enum_linkTest(type: LinkKonanTest) {
|
|||||||
lib = "codegen/enum/linkTest_lib.kt"
|
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) {
|
task innerClass_simple(type: RunKonanTest) {
|
||||||
goldValue = "OK\n"
|
goldValue = "OK\n"
|
||||||
source = "codegen/innerClass/simple.kt"
|
source = "codegen/innerClass/simple.kt"
|
||||||
|
|||||||
@@ -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