From 9230195317b5ac17797f48e03949c70d8c38c1b1 Mon Sep 17 00:00:00 2001 From: "Denis.Zharkov" Date: Wed, 6 Oct 2021 13:34:02 +0300 Subject: [PATCH] FIR2IR: Prettify some parts at Fir2IrTypeConverter.kt --- .../kotlin/fir/backend/Fir2IrTypeConverter.kt | 91 +++++++++++-------- 1 file changed, 51 insertions(+), 40 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrTypeConverter.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrTypeConverter.kt index 4fe6c54e722..1180f55c9cb 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrTypeConverter.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrTypeConverter.kt @@ -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() private val errorTypeForCapturedTypeStub by lazy { createErrorType() } @@ -102,20 +106,27 @@ class Fir2IrTypeConverter( is ConeLookupTagBasedType -> { val typeAnnotations = mutableListOf() 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