[Commonizer] Extract creation of CirTypeParameter from CirTypeParameterFactory

This commit is contained in:
Dmitriy Dolovov
2021-03-05 00:37:06 +03:00
parent b30ebe2842
commit 885026f6db
5 changed files with 28 additions and 46 deletions
@@ -11,4 +11,29 @@ interface CirTypeParameter : CirHasAnnotations, CirHasName {
val isReified: Boolean
val variance: Variance
val upperBounds: List<CirType>
companion object {
@Suppress("NOTHING_TO_INLINE")
inline fun create(
annotations: List<CirAnnotation>,
name: CirName,
isReified: Boolean,
variance: Variance,
upperBounds: List<CirType>
): CirTypeParameter = CirTypeParameterImpl(
annotations = annotations,
name = name,
isReified = isReified,
variance = variance,
upperBounds = upperBounds
)
}
}
data class CirTypeParameterImpl(
override val annotations: List<CirAnnotation>,
override val name: CirName,
override val isReified: Boolean,
override val variance: Variance,
override val upperBounds: List<CirType>
) : CirTypeParameter
@@ -8,40 +8,19 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir.factory
import kotlinx.metadata.Flag
import kotlinx.metadata.KmTypeParameter
import kotlinx.metadata.klib.annotations
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirAnnotation
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirName
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirType
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirTypeParameter
import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirTypeFactory.decodeVariance
import org.jetbrains.kotlin.descriptors.commonizer.cir.impl.CirTypeParameterImpl
import org.jetbrains.kotlin.descriptors.commonizer.metadata.ALWAYS_HAS_ANNOTATIONS
import org.jetbrains.kotlin.descriptors.commonizer.utils.compactMap
import org.jetbrains.kotlin.descriptors.commonizer.utils.filteredUpperBounds
import org.jetbrains.kotlin.types.Variance
object CirTypeParameterFactory {
fun create(source: KmTypeParameter, typeResolver: CirTypeResolver): CirTypeParameter = create(
fun create(source: KmTypeParameter, typeResolver: CirTypeResolver): CirTypeParameter = CirTypeParameter.create(
annotations = CirAnnotationFactory.createAnnotations(ALWAYS_HAS_ANNOTATIONS, typeResolver, source::annotations),
name = CirName.create(source.name),
isReified = Flag.TypeParameter.IS_REIFIED(source.flags),
variance = decodeVariance(source.variance),
upperBounds = source.filteredUpperBounds.compactMap { CirTypeFactory.create(it, typeResolver) }
)
@Suppress("NOTHING_TO_INLINE")
inline fun create(
annotations: List<CirAnnotation>,
name: CirName,
isReified: Boolean,
variance: Variance,
upperBounds: List<CirType>
): CirTypeParameter {
return CirTypeParameterImpl(
annotations = annotations,
name = name,
isReified = isReified,
variance = variance,
upperBounds = upperBounds
)
}
}
@@ -1,20 +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.commonizer.cir.CirAnnotation
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirName
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirType
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirTypeParameter
import org.jetbrains.kotlin.types.Variance
data class CirTypeParameterImpl(
override val annotations: List<CirAnnotation>,
override val name: CirName,
override val isReified: Boolean,
override val variance: Variance,
override val upperBounds: List<CirType>
) : CirTypeParameter
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.descriptors.commonizer.core
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirName
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirType
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirTypeParameter
import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirTypeParameterFactory
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.CirKnownClassifiers
import org.jetbrains.kotlin.types.Variance
@@ -18,7 +17,7 @@ class TypeParameterCommonizer(classifiers: CirKnownClassifiers) : AbstractStanda
private lateinit var variance: Variance
private val upperBounds = TypeParameterUpperBoundsCommonizer(classifiers)
override fun commonizationResult() = CirTypeParameterFactory.create(
override fun commonizationResult() = CirTypeParameter.create(
annotations = emptyList(),
name = name,
isReified = isReified,
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.descriptors.commonizer.core
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirName
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirTypeParameter
import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirTypeParameterFactory
import org.jetbrains.kotlin.descriptors.commonizer.utils.MOCK_CLASSIFIERS
import org.jetbrains.kotlin.descriptors.commonizer.utils.mockClassType
import org.jetbrains.kotlin.types.Variance
@@ -87,7 +86,7 @@ class TypeParameterCommonizerTest : AbstractCommonizerTest<CirTypeParameter, Cir
isReified: Boolean = false,
variance: Variance = Variance.INVARIANT,
upperBounds: List<String> = listOf("kotlin/Any")
) = CirTypeParameterFactory.create(
) = CirTypeParameter.create(
annotations = emptyList(),
name = CirName.create(name),
isReified = isReified,