Minor: extract rendering of type bound into method
This commit is contained in:
@@ -545,31 +545,41 @@ object Renderers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return "type parameter bounds:\n" +
|
return "type parameter bounds:\n" +
|
||||||
StringUtil.join(typeBounds, { renderTypeBounds(it, verbosity) }, "\n") + "\n\n" + "status:\n" +
|
typeBounds.joinToString("\n") { renderTypeBounds(it, verbosity) } +
|
||||||
|
"\n\n" +
|
||||||
|
"status:\n" +
|
||||||
ConstraintsUtil.getDebugMessageForStatus(constraintSystem.status)
|
ConstraintsUtil.getDebugMessageForStatus(constraintSystem.status)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderTypeBounds(typeBounds: TypeBounds, verbosity: ConstraintSystemRenderingVerbosity): String {
|
private fun renderTypeBounds(typeBounds: TypeBounds, verbosity: ConstraintSystemRenderingVerbosity): String {
|
||||||
val renderBound = { bound: Bound ->
|
|
||||||
val arrow = when (bound.kind) {
|
|
||||||
LOWER_BOUND -> ">: "
|
|
||||||
UPPER_BOUND -> "<: "
|
|
||||||
else -> ":= "
|
|
||||||
}
|
|
||||||
val renderer = if (verbosity == ConstraintSystemRenderingVerbosity.COMPACT)
|
|
||||||
DescriptorRenderer.SHORT_NAMES_IN_TYPES
|
|
||||||
else
|
|
||||||
DescriptorRenderer.FQ_NAMES_IN_TYPES
|
|
||||||
|
|
||||||
val renderedBound = arrow + renderer.renderType(bound.constrainingType) + if (!bound.isProper) "*" else ""
|
|
||||||
|
|
||||||
if (verbosity == ConstraintSystemRenderingVerbosity.COMPACT) renderedBound else renderedBound + '(' + bound.position + ')'
|
|
||||||
}
|
|
||||||
val typeVariableName = typeBounds.typeVariable.name
|
val typeVariableName = typeBounds.typeVariable.name
|
||||||
return if (typeBounds.bounds.isEmpty()) {
|
return if (typeBounds.bounds.isEmpty()) {
|
||||||
typeVariableName.asString()
|
typeVariableName.asString()
|
||||||
} else
|
} else {
|
||||||
"$typeVariableName ${StringUtil.join(typeBounds.bounds, renderBound, ", ")}"
|
val renderedBounds = typeBounds.bounds.joinToString(", ") { renderTypeBound(it, verbosity) }
|
||||||
|
|
||||||
|
typeVariableName.asString() + " " + renderedBounds
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun renderTypeBound(bound: Bound, verbosity: ConstraintSystemRenderingVerbosity): String {
|
||||||
|
val typeRendered = if (verbosity == ConstraintSystemRenderingVerbosity.COMPACT)
|
||||||
|
DescriptorRenderer.SHORT_NAMES_IN_TYPES
|
||||||
|
else
|
||||||
|
DescriptorRenderer.FQ_NAMES_IN_TYPES
|
||||||
|
|
||||||
|
val arrow = when (bound.kind) {
|
||||||
|
LOWER_BOUND -> ">: "
|
||||||
|
UPPER_BOUND -> "<: "
|
||||||
|
else -> ":= "
|
||||||
|
}
|
||||||
|
|
||||||
|
val initialBoundRender = arrow + typeRendered.renderType(bound.constrainingType) + if (!bound.isProper) "*" else ""
|
||||||
|
|
||||||
|
return when (verbosity) {
|
||||||
|
ConstraintSystemRenderingVerbosity.COMPACT -> initialBoundRender
|
||||||
|
ConstraintSystemRenderingVerbosity.DEBUG -> "$initialBoundRender (${bound.position}) "
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun debugMessage(message: String, inferenceErrorData: InferenceErrorData) = buildString {
|
private fun debugMessage(message: String, inferenceErrorData: InferenceErrorData) = buildString {
|
||||||
|
|||||||
Reference in New Issue
Block a user