[FIR] refactoring, extract KtUserType -> FirUserTypeRef to a separate function in RawFirBuilder
^KT-58125
This commit is contained in:
committed by
Space Team
parent
0373e3fdfe
commit
da35f436b3
+32
-22
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user