| // LANGUAGE: +CollectionLiterals | |
| class MyList<T>(val data: Array<out T>) { | |
| companion object { | |
| operator fun <K> of(vararg strs: K) = MyList(strs) | |
| } | |
| } | |
| fun <U> makeString(lst: MyList<U>): String { | |
| var res = "" | |
| for (e in lst.data) { | |
| res += e | |
| } | |
| return res | |
| } | |
| fun makeStringWithNullableAny(lst: MyList<Any?>): String { | |
| return makeString<Any?>(lst) | |
| } | |
| fun box(): String { | |
| val resString = makeString<String>(["1", "2", "3"]) | |
| val resInt = makeString<Int>([1, 2, 3]) | |
| val resAny = makeString<Any>([1, "2", '3']) | |
| val nonGenericRes = makeStringWithNullableAny(["1", "2", "3"]) | |
| return when { | |
| resString != "123" -> "Fail#String" | |
| resInt != "123" -> "Fail#Int" | |
| resAny != "123" -> "Fail#Any" | |
| nonGenericRes != "123" -> "Fail#NonGeneric" | |
| else -> "OK" | |
| } | |
| } |