Support mutable collection types in typeOf
flexibleTypes_1_6.kt is fixed for JVM IR in a subsequent commit. #KT-35877 Fixed
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
// !API_VERSION: LATEST
|
||||
// !USE_EXPERIMENTAL: kotlin.ExperimentalStdlibApi
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// WITH_REFLECT
|
||||
// FILE: box.kt
|
||||
|
||||
@@ -14,12 +16,10 @@ fun box(): String {
|
||||
if (v1 != "kotlin.String!") return "Fail 1: $v1"
|
||||
|
||||
val v2 = returnTypeOf { J.mutabilityFlexible() }.toString()
|
||||
// TODO: should be (Mutable)List after KT-35877.
|
||||
if (v2 != "kotlin.collections.List<kotlin.String!>") return "Fail 2: $v2"
|
||||
if (v2 != "kotlin.collections.(Mutable)List<kotlin.String!>") return "Fail 2: $v2"
|
||||
|
||||
val v3 = returnTypeOf { J.bothFlexible() }.toString()
|
||||
// TODO: should be (Mutable)List after KT-35877.
|
||||
if (v3 != "kotlin.collections.List<kotlin.String!>!") return "Fail 3: $v3"
|
||||
if (v3 != "kotlin.collections.(Mutable)List<kotlin.String!>!") return "Fail 3: $v3"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
// !API_VERSION: LATEST
|
||||
// !USE_EXPERIMENTAL: kotlin.ExperimentalStdlibApi
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_REFLECT
|
||||
|
||||
package test
|
||||
|
||||
import kotlin.reflect.KType
|
||||
import kotlin.reflect.typeOf
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
fun check(expected: String, actual: KType) {
|
||||
assertEquals(expected, actual.toString())
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
check("kotlin.collections.Iterable<kotlin.Number>", typeOf<Iterable<Number>>())
|
||||
check("kotlin.collections.Iterator<kotlin.CharSequence>", typeOf<Iterator<CharSequence>>())
|
||||
check("kotlin.collections.Collection<kotlin.Char>", typeOf<Collection<Char>>())
|
||||
check("kotlin.collections.List<kotlin.String>", typeOf<List<String>>())
|
||||
check("kotlin.collections.Set<kotlin.Double?>", typeOf<Set<Double?>>())
|
||||
check("kotlin.collections.ListIterator<kotlin.Any>", typeOf<ListIterator<Any>>())
|
||||
check("kotlin.collections.Map<kotlin.Int, kotlin.Unit>", typeOf<Map<Int, Unit>>())
|
||||
check("kotlin.collections.Map.Entry<kotlin.Byte?, kotlin.collections.Set<*>>", typeOf<Map.Entry<Byte?, Set<*>>>())
|
||||
|
||||
check("kotlin.collections.MutableIterable<kotlin.Number>", typeOf<MutableIterable<Number>>())
|
||||
check("kotlin.collections.MutableIterator<kotlin.CharSequence>", typeOf<MutableIterator<CharSequence>>())
|
||||
check("kotlin.collections.MutableCollection<kotlin.Char>", typeOf<MutableCollection<Char>>())
|
||||
check("kotlin.collections.MutableList<kotlin.String>", typeOf<MutableList<String>>())
|
||||
check("kotlin.collections.MutableSet<kotlin.Double?>", typeOf<MutableSet<Double?>>())
|
||||
check("kotlin.collections.MutableListIterator<kotlin.Any>", typeOf<MutableListIterator<Any>>())
|
||||
check("kotlin.collections.MutableMap<kotlin.Int, kotlin.Unit>", typeOf<MutableMap<Int, Unit>>())
|
||||
check("kotlin.collections.MutableMap.MutableEntry<kotlin.Byte?, kotlin.collections.Set<*>>", typeOf<MutableMap.MutableEntry<Byte?, Set<*>>>())
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
// !API_VERSION: 1.5
|
||||
// !USE_EXPERIMENTAL: kotlin.ExperimentalStdlibApi
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_REFLECT
|
||||
|
||||
package test
|
||||
|
||||
import kotlin.reflect.KType
|
||||
import kotlin.reflect.typeOf
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
fun check(expected: String, actual: KType) {
|
||||
assertEquals(expected, actual.toString())
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
check("kotlin.collections.Iterable<kotlin.Number>", typeOf<Iterable<Number>>())
|
||||
check("kotlin.collections.Iterator<kotlin.CharSequence>", typeOf<Iterator<CharSequence>>())
|
||||
check("kotlin.collections.Collection<kotlin.Char>", typeOf<Collection<Char>>())
|
||||
check("kotlin.collections.List<kotlin.String>", typeOf<List<String>>())
|
||||
check("kotlin.collections.Set<kotlin.Double?>", typeOf<Set<Double?>>())
|
||||
check("kotlin.collections.ListIterator<kotlin.Any>", typeOf<ListIterator<Any>>())
|
||||
check("kotlin.collections.Map<kotlin.Int, kotlin.Unit>", typeOf<Map<Int, Unit>>())
|
||||
check("kotlin.collections.Map.Entry<kotlin.Byte?, kotlin.collections.Set<*>>", typeOf<Map.Entry<Byte?, Set<*>>>())
|
||||
|
||||
check("kotlin.collections.Iterable<kotlin.Number>", typeOf<MutableIterable<Number>>())
|
||||
check("kotlin.collections.Iterator<kotlin.CharSequence>", typeOf<MutableIterator<CharSequence>>())
|
||||
check("kotlin.collections.Collection<kotlin.Char>", typeOf<MutableCollection<Char>>())
|
||||
check("kotlin.collections.List<kotlin.String>", typeOf<MutableList<String>>())
|
||||
check("kotlin.collections.Set<kotlin.Double?>", typeOf<MutableSet<Double?>>())
|
||||
check("kotlin.collections.ListIterator<kotlin.Any>", typeOf<MutableListIterator<Any>>())
|
||||
check("kotlin.collections.Map<kotlin.Int, kotlin.Unit>", typeOf<MutableMap<Int, Unit>>())
|
||||
check("kotlin.collections.Map.Entry<kotlin.Byte?, kotlin.collections.Set<*>>", typeOf<MutableMap.MutableEntry<Byte?, Set<*>>>())
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
// !API_VERSION: LATEST
|
||||
// !USE_EXPERIMENTAL: kotlin.ExperimentalStdlibApi
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
|
||||
package test
|
||||
|
||||
import kotlin.reflect.KType
|
||||
import kotlin.reflect.typeOf
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
fun check(expected: String, actual: KType) {
|
||||
assertEquals(expected + " (Kotlin reflection is not available)", actual.toString())
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
check("java.lang.Iterable<java.lang.Number>", typeOf<Iterable<Number>>())
|
||||
check("java.util.Iterator<java.lang.CharSequence>", typeOf<Iterator<CharSequence>>())
|
||||
// TODO: java.util.Collection<java.lang.Character>
|
||||
check("java.util.Collection<char>", typeOf<Collection<Char>>())
|
||||
check("java.util.List<java.lang.String>", typeOf<List<String>>())
|
||||
check("java.util.Set<java.lang.Double?>", typeOf<Set<Double?>>())
|
||||
check("java.util.ListIterator<java.lang.Object>", typeOf<ListIterator<Any>>())
|
||||
// TODO: java.util.Map<java.lang.Integer, kotlin.Unit>
|
||||
check("java.util.Map<int, kotlin.Unit>", typeOf<Map<Int, Unit>>())
|
||||
check("java.util.Map\$Entry<java.lang.Byte?, java.util.Set<*>>", typeOf<Map.Entry<Byte?, Set<*>>>())
|
||||
|
||||
check("java.lang.Iterable<java.lang.Number>", typeOf<MutableIterable<Number>>())
|
||||
check("java.util.Iterator<java.lang.CharSequence>", typeOf<MutableIterator<CharSequence>>())
|
||||
check("java.util.Collection<char>", typeOf<MutableCollection<Char>>())
|
||||
check("java.util.List<java.lang.String>", typeOf<MutableList<String>>())
|
||||
check("java.util.Set<java.lang.Double?>", typeOf<MutableSet<Double?>>())
|
||||
check("java.util.ListIterator<java.lang.Object>", typeOf<MutableListIterator<Any>>())
|
||||
check("java.util.Map<int, kotlin.Unit>", typeOf<MutableMap<Int, Unit>>())
|
||||
check("java.util.Map\$Entry<java.lang.Byte?, java.util.Set<*>>", typeOf<MutableMap.MutableEntry<Byte?, Set<*>>>())
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
// !API_VERSION: 1.5
|
||||
// !USE_EXPERIMENTAL: kotlin.ExperimentalStdlibApi
|
||||
// TARGET_BACKEND: JVM
|
||||
// WITH_RUNTIME
|
||||
|
||||
package test
|
||||
|
||||
import kotlin.reflect.KType
|
||||
import kotlin.reflect.typeOf
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
fun check(expected: String, actual: KType) {
|
||||
assertEquals(expected + " (Kotlin reflection is not available)", actual.toString())
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
check("java.lang.Iterable<java.lang.Number>", typeOf<Iterable<Number>>())
|
||||
check("java.util.Iterator<java.lang.CharSequence>", typeOf<Iterator<CharSequence>>())
|
||||
// TODO: java.util.Collection<java.lang.Character>
|
||||
check("java.util.Collection<char>", typeOf<Collection<Char>>())
|
||||
check("java.util.List<java.lang.String>", typeOf<List<String>>())
|
||||
check("java.util.Set<java.lang.Double?>", typeOf<Set<Double?>>())
|
||||
check("java.util.ListIterator<java.lang.Object>", typeOf<ListIterator<Any>>())
|
||||
// TODO: java.util.Map<java.lang.Integer, kotlin.Unit>
|
||||
check("java.util.Map<int, kotlin.Unit>", typeOf<Map<Int, Unit>>())
|
||||
check("java.util.Map\$Entry<java.lang.Byte?, java.util.Set<*>>", typeOf<Map.Entry<Byte?, Set<*>>>())
|
||||
|
||||
check("java.lang.Iterable<java.lang.Number>", typeOf<MutableIterable<Number>>())
|
||||
check("java.util.Iterator<java.lang.CharSequence>", typeOf<MutableIterator<CharSequence>>())
|
||||
check("java.util.Collection<char>", typeOf<MutableCollection<Char>>())
|
||||
check("java.util.List<java.lang.String>", typeOf<MutableList<String>>())
|
||||
check("java.util.Set<java.lang.Double?>", typeOf<MutableSet<Double?>>())
|
||||
check("java.util.ListIterator<java.lang.Object>", typeOf<MutableListIterator<Any>>())
|
||||
check("java.util.Map<int, kotlin.Unit>", typeOf<MutableMap<Int, Unit>>())
|
||||
check("java.util.Map\$Entry<java.lang.Byte?, java.util.Set<*>>", typeOf<MutableMap.MutableEntry<Byte?, Set<*>>>())
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user