From fa9285aac784098ff97cd3a19735aedb6fb984d4 Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Fri, 5 Mar 2021 00:47:50 +0300 Subject: [PATCH] [Commonizer] Extract creation of CirTypeAlias from CirTypeAliasFactory --- .../commonizer/cir/CirTypeAlias.kt | 33 +++++++++++++++++++ .../cir/factory/CirTypeAliasFactory.kt | 27 +++------------ .../commonizer/cir/impl/CirTypeAliasImpl.kt | 21 ------------ .../commonizer/core/TypeAliasCommonizer.kt | 5 ++- .../commonizer/core/TypeCommonizerTest.kt | 3 +- 5 files changed, 40 insertions(+), 49 deletions(-) delete mode 100644 native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/impl/CirTypeAliasImpl.kt diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirTypeAlias.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirTypeAlias.kt index 149397d8a1b..91dc1fe0b44 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirTypeAlias.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/CirTypeAlias.kt @@ -5,7 +5,40 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir +import org.jetbrains.kotlin.descriptors.Visibility + interface CirTypeAlias : CirClassifier, CirLiftedUpDeclaration { val underlyingType: CirClassOrTypeAliasType val expandedType: CirClassType + + companion object { + @Suppress("NOTHING_TO_INLINE") + inline fun create( + annotations: List, + name: CirName, + typeParameters: List, + visibility: Visibility, + underlyingType: CirClassOrTypeAliasType, + expandedType: CirClassType + ): CirTypeAlias = CirTypeAliasImpl( + annotations = annotations, + name = name, + typeParameters = typeParameters, + visibility = visibility, + underlyingType = underlyingType, + expandedType = expandedType + ) + } +} + +data class CirTypeAliasImpl( + override val annotations: List, + override val name: CirName, + override val typeParameters: List, + override val visibility: Visibility, + override val underlyingType: CirClassOrTypeAliasType, + override val expandedType: CirClassType // only for commonization algorithm; does not participate in building resulting declarations +) : CirTypeAlias { + // any TA in "common" fragment is already lifted up + override val isLiftedUp get() = true } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/factory/CirTypeAliasFactory.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/factory/CirTypeAliasFactory.kt index aec097ce38d..2b1f5f5ca74 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/factory/CirTypeAliasFactory.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/factory/CirTypeAliasFactory.kt @@ -6,9 +6,9 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir.factory import kotlinx.metadata.KmTypeAlias -import org.jetbrains.kotlin.descriptors.Visibility -import org.jetbrains.kotlin.descriptors.commonizer.cir.* -import org.jetbrains.kotlin.descriptors.commonizer.cir.impl.CirTypeAliasImpl +import org.jetbrains.kotlin.descriptors.commonizer.cir.CirClassOrTypeAliasType +import org.jetbrains.kotlin.descriptors.commonizer.cir.CirName +import org.jetbrains.kotlin.descriptors.commonizer.cir.CirTypeAlias import org.jetbrains.kotlin.descriptors.commonizer.metadata.decodeVisibility import org.jetbrains.kotlin.descriptors.commonizer.utils.compactMap @@ -17,7 +17,7 @@ object CirTypeAliasFactory { val underlyingType = CirTypeFactory.create(source.underlyingType, typeResolver) as CirClassOrTypeAliasType val expandedType = CirTypeFactory.unabbreviate(underlyingType) - return create( + return CirTypeAlias.create( annotations = CirAnnotationFactory.createAnnotations(source.flags, typeResolver, source::annotations), name = name, typeParameters = source.typeParameters.compactMap { CirTypeParameterFactory.create(it, typeResolver) }, @@ -26,23 +26,4 @@ object CirTypeAliasFactory { expandedType = expandedType ) } - - @Suppress("NOTHING_TO_INLINE") - inline fun create( - annotations: List, - name: CirName, - typeParameters: List, - visibility: Visibility, - underlyingType: CirClassOrTypeAliasType, - expandedType: CirClassType - ): CirTypeAlias { - return CirTypeAliasImpl( - annotations = annotations, - name = name, - typeParameters = typeParameters, - visibility = visibility, - underlyingType = underlyingType, - expandedType = expandedType - ) - } } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/impl/CirTypeAliasImpl.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/impl/CirTypeAliasImpl.kt deleted file mode 100644 index d8d66d3d36a..00000000000 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/impl/CirTypeAliasImpl.kt +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.descriptors.commonizer.cir.impl - -import org.jetbrains.kotlin.descriptors.Visibility -import org.jetbrains.kotlin.descriptors.commonizer.cir.* - -data class CirTypeAliasImpl( - override val annotations: List, - override val name: CirName, - override val typeParameters: List, - override val visibility: Visibility, - override val underlyingType: CirClassOrTypeAliasType, - override val expandedType: CirClassType // only for commonization algorithm; does not participate in building resulting declarations -) : CirTypeAlias { - // any TA in "common" fragment is already lifted up - override val isLiftedUp get() = true -} diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeAliasCommonizer.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeAliasCommonizer.kt index 200502317c3..a635407cc6c 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeAliasCommonizer.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeAliasCommonizer.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.commonizer.cir.* import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirClassFactory -import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirTypeAliasFactory import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.CirKnownClassifiers /** @@ -50,7 +49,7 @@ private class TypeAliasShortCircuitingCommonizer( private val expandedType = TypeCommonizer(classifiers) private val visibility = VisibilityCommonizer.lowering() - override fun commonizationResult() = CirTypeAliasFactory.create( + override fun commonizationResult() = CirTypeAlias.create( annotations = emptyList(), name = name, typeParameters = typeParameters.result, @@ -86,7 +85,7 @@ private class TypeAliasLiftingUpCommonizer(classifiers: CirKnownClassifiers) : A override fun commonizationResult(): CirTypeAlias { val underlyingType = underlyingType.result as CirClassOrTypeAliasType - return CirTypeAliasFactory.create( + return CirTypeAlias.create( annotations = emptyList(), name = name, typeParameters = typeParameters.result, diff --git a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizerTest.kt b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizerTest.kt index e708219382d..1956c51d00d 100644 --- a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizerTest.kt +++ b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizerTest.kt @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.commonizer.cir.* import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirClassFactory -import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirTypeAliasFactory import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.* import org.jetbrains.kotlin.descriptors.commonizer.utils.isUnderStandardKotlinPackages import org.jetbrains.kotlin.descriptors.commonizer.utils.mockClassType @@ -499,7 +498,7 @@ class TypeCommonizerTest : AbstractCommonizerTest() { typeAliasId = type.classifierId ) } - node.targetDeclarations[index] = CirTypeAliasFactory.create( + node.targetDeclarations[index] = CirTypeAlias.create( annotations = emptyList(), name = type.classifierId.relativeNameSegments.last(), typeParameters = emptyList(),