Improve KType.toString for primitive type arguments in stdlib implementation
This commit is contained in:
+4
-6
@@ -16,22 +16,20 @@ fun check(expected: String, actual: KType) {
|
||||
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.Collection<java.lang.Character>", 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<java.lang.Integer, 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.Collection<java.lang.Character>", 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<java.lang.Integer, kotlin.Unit>", typeOf<MutableMap<Int, Unit>>())
|
||||
check("java.util.Map\$Entry<java.lang.Byte?, java.util.Set<*>>", typeOf<MutableMap.MutableEntry<Byte?, Set<*>>>())
|
||||
|
||||
return "OK"
|
||||
|
||||
+4
-6
@@ -16,22 +16,20 @@ fun check(expected: String, actual: KType) {
|
||||
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.Collection<java.lang.Character>", 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<java.lang.Integer, 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.Collection<java.lang.Character>", 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<java.lang.Integer, kotlin.Unit>", typeOf<MutableMap<Int, Unit>>())
|
||||
check("java.util.Map\$Entry<java.lang.Byte?, java.util.Set<*>>", typeOf<MutableMap.MutableEntry<Byte?, Set<*>>>())
|
||||
|
||||
return "OK"
|
||||
|
||||
@@ -35,13 +35,14 @@ public class TypeReference /* @SinceKotlin("1.6") constructor */(
|
||||
(classifier.hashCode() * 31 + arguments.hashCode()) * 31 + isMarkedNullable.hashCode()
|
||||
|
||||
override fun toString(): String =
|
||||
asString() + Reflection.REFLECTION_NOT_AVAILABLE
|
||||
asString(false) + Reflection.REFLECTION_NOT_AVAILABLE
|
||||
|
||||
private fun asString(): String {
|
||||
private fun asString(convertPrimitiveToWrapper: Boolean): String {
|
||||
val javaClass = (classifier as? KClass<*>)?.java
|
||||
val klass = when {
|
||||
javaClass == null -> classifier.toString()
|
||||
javaClass.isArray -> javaClass.arrayClassName
|
||||
convertPrimitiveToWrapper && javaClass.isPrimitive -> (classifier as KClass<*>).javaObjectType.name
|
||||
else -> javaClass.name
|
||||
}
|
||||
val args =
|
||||
@@ -70,7 +71,7 @@ public class TypeReference /* @SinceKotlin("1.6") constructor */(
|
||||
private fun KTypeProjection.asString(): String {
|
||||
if (variance == null) return "*"
|
||||
|
||||
val typeString = (type as? TypeReference)?.asString() ?: type.toString()
|
||||
val typeString = (type as? TypeReference)?.asString(true) ?: type.toString()
|
||||
return when (variance) {
|
||||
KVariance.INVARIANT -> typeString
|
||||
KVariance.IN -> "in $typeString"
|
||||
|
||||
Reference in New Issue
Block a user