[FIR] Adjust abbreviated type rendering in Html dump

This commit is contained in:
simon.ogorodnik
2020-03-19 21:03:38 +03:00
parent 5a3eefcba1
commit 762861a2e9
@@ -702,15 +702,20 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
symbolRef(symbol) { symbolRef(symbol) {
simpleName(type.lookupTag.name) simpleName(type.lookupTag.name)
} }
generateTypeArguments(type)
+" = " +" = "
generate( val directlyExpanded = type.directExpansionType(session)
type.directExpansionType(session)?.fullyExpandedType(session) ?: ConeKotlinErrorType("No expansion for type-alias") if (directlyExpanded != null) {
) generate(directlyExpanded.fullyExpandedType(session))
} else {
error { +"No expansion for type-alias" }
}
} }
else -> { else -> {
symbolRef(symbol) { symbolRef(symbol) {
fqn(type.lookupTag.classId.relativeClassName) fqn(type.lookupTag.classId.relativeClassName)
} }
generateTypeArguments(type)
} }
} }
} }
@@ -791,10 +796,20 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
} }
private fun FlowContent.generateTypeArguments(type: ConeKotlinType) {
if (type.typeArguments.isNotEmpty()) {
+"<"
generateList(type.typeArguments.toList()) {
generate(it)
}
+">"
}
}
private fun FlowContent.generate(type: ConeKotlinType) { private fun FlowContent.generate(type: ConeKotlinType) {
when (type) { when (type) {
is ConeClassErrorType -> error { +type.reason } is ConeClassErrorType -> error { +type.reason }
is ConeClassLikeType -> generate(type) is ConeClassLikeType -> return generate(type)
is ConeTypeParameterType -> resolved { is ConeTypeParameterType -> resolved {
symbolRef(type.lookupTag.toSymbol()) { symbolRef(type.lookupTag.toSymbol()) {
simpleName(type.lookupTag.name) simpleName(type.lookupTag.name)
@@ -810,13 +825,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
is ConeIntersectionType -> resolved { generate(type) } is ConeIntersectionType -> resolved { generate(type) }
is ConeIntegerLiteralType -> inlineUnsupported(type) is ConeIntegerLiteralType -> inlineUnsupported(type)
} }
if (type.typeArguments.isNotEmpty()) { generateTypeArguments(type)
+"<"
generateList(type.typeArguments.toList()) {
generate(it)
}
+">"
}
if (type.isMarkedNullable) { if (type.isMarkedNullable) {
+"?" +"?"
} }