Implement KTypeImpl.toString()
This commit is contained in:
committed by
SvyatoslavScherbina
parent
e0d6a4c70e
commit
b1c9487215
@@ -21,6 +21,40 @@ internal class KTypeImpl(
|
|||||||
override fun hashCode(): Int {
|
override fun hashCode(): Int {
|
||||||
return (classifier?.hashCode() ?: 0) * 31 * 31 + this.arguments.hashCode() * 31 + if (isMarkedNullable) 1 else 0
|
return (classifier?.hashCode() ?: 0) * 31 * 31 + this.arguments.hashCode() * 31 + if (isMarkedNullable) 1 else 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun toString(): String {
|
||||||
|
val classifierString = when (classifier) {
|
||||||
|
is KClass<*> -> classifier.qualifiedName ?: classifier.simpleName
|
||||||
|
else -> null
|
||||||
|
} ?: return "(non-denotable type)"
|
||||||
|
|
||||||
|
return buildString {
|
||||||
|
append(classifierString)
|
||||||
|
|
||||||
|
if (arguments.isNotEmpty()) {
|
||||||
|
append('<')
|
||||||
|
|
||||||
|
arguments.forEachIndexed { index, argument ->
|
||||||
|
if (index > 0) append(", ")
|
||||||
|
|
||||||
|
if (argument.variance == null) {
|
||||||
|
append('*')
|
||||||
|
} else {
|
||||||
|
append(when (argument.variance) {
|
||||||
|
KVariance.INVARIANT -> ""
|
||||||
|
KVariance.IN -> "in "
|
||||||
|
KVariance.OUT -> "out "
|
||||||
|
})
|
||||||
|
append(argument.type)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
append('>')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isMarkedNullable) append('?')
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class KTypeImplForGenerics : KType {
|
internal class KTypeImplForGenerics : KType {
|
||||||
|
|||||||
Reference in New Issue
Block a user