FIR: Support type aliased declarations in HtmlFirDump
This commit is contained in:
@@ -23,11 +23,12 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition
|
|||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
|
||||||
import org.jetbrains.kotlin.fir.references.*
|
import org.jetbrains.kotlin.fir.references.*
|
||||||
import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
|
import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
|
||||||
import org.jetbrains.kotlin.fir.resolve.directExpansionType
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.FirAmbiguityError
|
import org.jetbrains.kotlin.fir.resolve.diagnostics.FirAmbiguityError
|
||||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.FirInapplicableCandidateError
|
import org.jetbrains.kotlin.fir.resolve.diagnostics.FirInapplicableCandidateError
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.directExpansionType
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
|
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
@@ -648,6 +649,28 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun FlowContent.generate(typeAlias: FirTypeAlias) {
|
||||||
|
inl()
|
||||||
|
|
||||||
|
declarationStatus(typeAlias.status)
|
||||||
|
|
||||||
|
keyword("typealias")
|
||||||
|
ws
|
||||||
|
anchoredName(typeAlias.name, typeAlias.symbol.classId.asString())
|
||||||
|
generateTypeParameters(typeAlias)
|
||||||
|
|
||||||
|
+" = "
|
||||||
|
|
||||||
|
val type = typeAlias.expandedConeType
|
||||||
|
if (type != null) {
|
||||||
|
generate(type as ConeKotlinType)
|
||||||
|
} else {
|
||||||
|
+"<error expanded type>"
|
||||||
|
}
|
||||||
|
|
||||||
|
br
|
||||||
|
}
|
||||||
|
|
||||||
private fun FlowContent.generate(flexibleType: ConeFlexibleType) {
|
private fun FlowContent.generate(flexibleType: ConeFlexibleType) {
|
||||||
if (flexibleType.lowerBound.nullability == ConeNullability.NOT_NULL &&
|
if (flexibleType.lowerBound.nullability == ConeNullability.NOT_NULL &&
|
||||||
flexibleType.upperBound.nullability == ConeNullability.NULLABLE &&
|
flexibleType.upperBound.nullability == ConeNullability.NULLABLE &&
|
||||||
@@ -680,7 +703,9 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
|||||||
simpleName(type.lookupTag.name)
|
simpleName(type.lookupTag.name)
|
||||||
}
|
}
|
||||||
+" = "
|
+" = "
|
||||||
generate(type.directExpansionType(session) ?: ConeKotlinErrorType("No expansion for type-alias"))
|
generate(
|
||||||
|
type.directExpansionType(session)?.fullyExpandedType(session) ?: ConeKotlinErrorType("No expansion for type-alias")
|
||||||
|
)
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
symbolRef(symbol) {
|
symbolRef(symbol) {
|
||||||
@@ -854,6 +879,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
|||||||
is FirSimpleFunction -> generate(memberDeclaration)
|
is FirSimpleFunction -> generate(memberDeclaration)
|
||||||
is FirProperty -> if (memberDeclaration.isLocal) generate(memberDeclaration as FirVariable<*>) else generate(memberDeclaration)
|
is FirProperty -> if (memberDeclaration.isLocal) generate(memberDeclaration as FirVariable<*>) else generate(memberDeclaration)
|
||||||
is FirConstructor -> generate(memberDeclaration)
|
is FirConstructor -> generate(memberDeclaration)
|
||||||
|
is FirTypeAlias -> generate(memberDeclaration)
|
||||||
else -> unsupported(memberDeclaration)
|
else -> unsupported(memberDeclaration)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user