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"
|
||||
}
|
||||
|
||||
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"
|
||||
|
||||
@@ -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