FIR2IR: Prettify some parts at Fir2IrTypeConverter.kt

This commit is contained in:
Denis.Zharkov
2021-10-06 13:34:02 +03:00
committed by TeamCityServer
parent 9d9f191f51
commit 9230195317
@@ -31,36 +31,40 @@ class Fir2IrTypeConverter(
private val components: Fir2IrComponents
) : Fir2IrComponents by components {
internal val classIdToSymbolMap by lazy { mapOf(
StandardClassIds.Nothing to irBuiltIns.nothingClass,
StandardClassIds.Unit to irBuiltIns.unitClass,
StandardClassIds.Boolean to irBuiltIns.booleanClass,
StandardClassIds.String to irBuiltIns.stringClass,
StandardClassIds.Any to irBuiltIns.anyClass,
StandardClassIds.Long to irBuiltIns.longClass,
StandardClassIds.Int to irBuiltIns.intClass,
StandardClassIds.Short to irBuiltIns.shortClass,
StandardClassIds.Byte to irBuiltIns.byteClass,
StandardClassIds.Float to irBuiltIns.floatClass,
StandardClassIds.Double to irBuiltIns.doubleClass,
StandardClassIds.Char to irBuiltIns.charClass,
StandardClassIds.Array to irBuiltIns.arrayClass
)}
internal val classIdToSymbolMap by lazy {
mapOf(
StandardClassIds.Nothing to irBuiltIns.nothingClass,
StandardClassIds.Unit to irBuiltIns.unitClass,
StandardClassIds.Boolean to irBuiltIns.booleanClass,
StandardClassIds.String to irBuiltIns.stringClass,
StandardClassIds.Any to irBuiltIns.anyClass,
StandardClassIds.Long to irBuiltIns.longClass,
StandardClassIds.Int to irBuiltIns.intClass,
StandardClassIds.Short to irBuiltIns.shortClass,
StandardClassIds.Byte to irBuiltIns.byteClass,
StandardClassIds.Float to irBuiltIns.floatClass,
StandardClassIds.Double to irBuiltIns.doubleClass,
StandardClassIds.Char to irBuiltIns.charClass,
StandardClassIds.Array to irBuiltIns.arrayClass
)
}
internal val classIdToTypeMap by lazy { mapOf(
StandardClassIds.Nothing to irBuiltIns.nothingType,
StandardClassIds.Unit to irBuiltIns.unitType,
StandardClassIds.Boolean to irBuiltIns.booleanType,
StandardClassIds.String to irBuiltIns.stringType,
StandardClassIds.Any to irBuiltIns.anyType,
StandardClassIds.Long to irBuiltIns.longType,
StandardClassIds.Int to irBuiltIns.intType,
StandardClassIds.Short to irBuiltIns.shortType,
StandardClassIds.Byte to irBuiltIns.byteType,
StandardClassIds.Float to irBuiltIns.floatType,
StandardClassIds.Double to irBuiltIns.doubleType,
StandardClassIds.Char to irBuiltIns.charType
)}
internal val classIdToTypeMap by lazy {
mapOf(
StandardClassIds.Nothing to irBuiltIns.nothingType,
StandardClassIds.Unit to irBuiltIns.unitType,
StandardClassIds.Boolean to irBuiltIns.booleanType,
StandardClassIds.String to irBuiltIns.stringType,
StandardClassIds.Any to irBuiltIns.anyType,
StandardClassIds.Long to irBuiltIns.longType,
StandardClassIds.Int to irBuiltIns.intType,
StandardClassIds.Short to irBuiltIns.shortType,
StandardClassIds.Byte to irBuiltIns.byteType,
StandardClassIds.Float to irBuiltIns.floatType,
StandardClassIds.Double to irBuiltIns.doubleType,
StandardClassIds.Char to irBuiltIns.charType
)
}
private val capturedTypeCache = mutableMapOf<ConeCapturedType, IrType>()
private val errorTypeForCapturedTypeStub by lazy { createErrorType() }
@@ -102,20 +106,27 @@ class Fir2IrTypeConverter(
is ConeLookupTagBasedType -> {
val typeAnnotations = mutableListOf<IrConstructorCall>()
typeAnnotations += with(annotationGenerator) { annotations.toIrAnnotations() }
val irSymbol = getBuiltInClassSymbol(classId)
?: lookupTag.toSymbol(session)?.toSymbol(session, classifierStorage, typeContext) {
typeAnnotations += with(annotationGenerator) { it.toIrAnnotations() }
val irSymbol =
getBuiltInClassSymbol(classId)
?: lookupTag.toSymbol(session)?.toSymbol(session, classifierStorage, typeContext) {
typeAnnotations += with(annotationGenerator) { it.toIrAnnotations() }
}
?: return createErrorType()
when {
hasEnhancedNullability -> {
builtIns.enhancedNullabilityAnnotationConstructorCall()?.let {
typeAnnotations += it
}
}
?: return createErrorType()
if (hasEnhancedNullability) {
builtIns.enhancedNullabilityAnnotationConstructorCall()?.let {
typeAnnotations += it
}
} else if (hasFlexibleNullability) {
builtIns.flexibleNullabilityAnnotationConstructorCall()?.let {
typeAnnotations += it
hasFlexibleNullability -> {
builtIns.flexibleNullabilityAnnotationConstructorCall()?.let {
typeAnnotations += it
}
}
}
for (attributeAnnotation in attributes.customAnnotations) {
if (annotations.any { it.classId == attributeAnnotation.classId }) continue
typeAnnotations += callGenerator.convertToIrConstructorCall(attributeAnnotation) as? IrConstructorCall ?: continue