[FIR] refactoring, extract KtUserType -> FirUserTypeRef to a separate function in RawFirBuilder

^KT-58125
This commit is contained in:
Ilya Kirillov
2023-05-27 15:30:12 +02:00
committed by Space Team
parent 0373e3fdfe
commit da35f436b3
@@ -1972,29 +1972,9 @@ open class RawFirBuilder(
isMarkedNullable = isNullable
}
is KtUserType -> {
var referenceExpression = unwrappedElement.referenceExpression
val referenceExpression = unwrappedElement.referenceExpression
if (referenceExpression != null) {
FirUserTypeRefBuilder().apply {
this.source = source
isMarkedNullable = isNullable
var ktQualifier: KtUserType? = unwrappedElement
do {
val firQualifier = FirQualifierPartImpl(
referenceExpression!!.toFirSourceElement(),
referenceExpression!!.getReferencedNameAsName(),
FirTypeArgumentListImpl(ktQualifier?.typeArgumentList?.toKtPsiSourceElement() ?: source).apply {
typeArguments.appendTypeArguments(ktQualifier!!.typeArguments)
}
)
qualifier.add(firQualifier)
ktQualifier = ktQualifier!!.qualifier
referenceExpression = ktQualifier?.referenceExpression
} while (referenceExpression != null)
qualifier.reverse()
}
convertKtTypeElement(source, isNullable, unwrappedElement, referenceExpression)
} else {
FirErrorTypeRefBuilder().apply {
this.source = source
@@ -2049,6 +2029,36 @@ open class RawFirBuilder(
return firTypeBuilder.build()
}
private fun convertKtTypeElement(
source: KtPsiSourceElement,
isNullable: Boolean,
ktUserType: KtUserType,
reference: KtSimpleNameExpression,
): FirUserTypeRefBuilder {
var referenceExpression: KtSimpleNameExpression? = reference
return FirUserTypeRefBuilder().apply {
this.source = source
isMarkedNullable = isNullable
var ktQualifier: KtUserType? = ktUserType
do {
val firQualifier = FirQualifierPartImpl(
referenceExpression!!.toFirSourceElement(),
referenceExpression!!.getReferencedNameAsName(),
FirTypeArgumentListImpl(ktQualifier?.typeArgumentList?.toKtPsiSourceElement() ?: source).apply {
typeArguments.appendTypeArguments(ktQualifier!!.typeArguments)
}
)
qualifier.add(firQualifier)
ktQualifier = ktQualifier!!.qualifier
referenceExpression = ktQualifier?.referenceExpression
} while (referenceExpression != null)
qualifier.reverse()
}
}
override fun visitAnnotationEntry(annotationEntry: KtAnnotationEntry, data: FirElement?): FirElement {
return buildAnnotationCall {
source = annotationEntry.toFirSourceElement()