[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
|
isMarkedNullable = isNullable
|
||||||
}
|
}
|
||||||
is KtUserType -> {
|
is KtUserType -> {
|
||||||
var referenceExpression = unwrappedElement.referenceExpression
|
val referenceExpression = unwrappedElement.referenceExpression
|
||||||
if (referenceExpression != null) {
|
if (referenceExpression != null) {
|
||||||
FirUserTypeRefBuilder().apply {
|
convertKtTypeElement(source, isNullable, unwrappedElement, referenceExpression)
|
||||||
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()
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
FirErrorTypeRefBuilder().apply {
|
FirErrorTypeRefBuilder().apply {
|
||||||
this.source = source
|
this.source = source
|
||||||
@@ -2049,6 +2029,36 @@ open class RawFirBuilder(
|
|||||||
return firTypeBuilder.build()
|
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 {
|
override fun visitAnnotationEntry(annotationEntry: KtAnnotationEntry, data: FirElement?): FirElement {
|
||||||
return buildAnnotationCall {
|
return buildAnnotationCall {
|
||||||
source = annotationEntry.toFirSourceElement()
|
source = annotationEntry.toFirSourceElement()
|
||||||
|
|||||||
Reference in New Issue
Block a user