[Commonizer] Extract creation of CirFunction from CirFunctionFactory

This commit is contained in:
Dmitriy Dolovov
2021-03-05 00:54:45 +03:00
parent d3c60ab72e
commit 3778d1d631
4 changed files with 56 additions and 67 deletions
@@ -5,6 +5,56 @@
package org.jetbrains.kotlin.descriptors.commonizer.cir
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility
interface CirFunction : CirFunctionOrProperty, CirCallableMemberWithParameters {
val modifiers: CirFunctionModifiers
companion object {
@Suppress("NOTHING_TO_INLINE")
inline fun create(
annotations: List<CirAnnotation>,
name: CirName,
typeParameters: List<CirTypeParameter>,
visibility: Visibility,
modality: Modality,
containingClass: CirContainingClass?,
valueParameters: List<CirValueParameter>,
hasStableParameterNames: Boolean,
extensionReceiver: CirExtensionReceiver?,
returnType: CirType,
kind: CallableMemberDescriptor.Kind,
modifiers: CirFunctionModifiers
): CirFunction = CirFunctionImpl(
annotations = annotations,
name = name,
typeParameters = typeParameters,
visibility = visibility,
modality = modality,
containingClass = containingClass,
valueParameters = valueParameters,
hasStableParameterNames = hasStableParameterNames,
extensionReceiver = extensionReceiver,
returnType = returnType,
kind = kind,
modifiers = modifiers
)
}
}
data class CirFunctionImpl(
override val annotations: List<CirAnnotation>,
override val name: CirName,
override val typeParameters: List<CirTypeParameter>,
override val visibility: Visibility,
override val modality: Modality,
override val containingClass: CirContainingClass?,
override var valueParameters: List<CirValueParameter>,
override var hasStableParameterNames: Boolean,
override val extensionReceiver: CirExtensionReceiver?,
override val returnType: CirType,
override val kind: CallableMemberDescriptor.Kind,
override val modifiers: CirFunctionModifiers
) : CirFunction
@@ -8,19 +8,17 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir.factory
import kotlinx.metadata.Flag
import kotlinx.metadata.KmFunction
import kotlinx.metadata.klib.annotations
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.descriptors.commonizer.cir.*
import org.jetbrains.kotlin.descriptors.commonizer.cir.impl.CirFunctionImpl
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirContainingClass
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirFunction
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirName
import org.jetbrains.kotlin.descriptors.commonizer.metadata.decodeCallableKind
import org.jetbrains.kotlin.descriptors.commonizer.metadata.decodeModality
import org.jetbrains.kotlin.descriptors.commonizer.metadata.decodeVisibility
import org.jetbrains.kotlin.descriptors.commonizer.utils.compactMap
object CirFunctionFactory {
fun create(name: CirName, source: KmFunction, containingClass: CirContainingClass?, typeResolver: CirTypeResolver): CirFunction {
return create(
fun create(name: CirName, source: KmFunction, containingClass: CirContainingClass?, typeResolver: CirTypeResolver): CirFunction =
CirFunction.create(
annotations = CirAnnotationFactory.createAnnotations(source.flags, typeResolver, source::annotations),
name = name,
typeParameters = source.typeParameters.compactMap { CirTypeParameterFactory.create(it, typeResolver) },
@@ -34,36 +32,4 @@ object CirFunctionFactory {
kind = decodeCallableKind(source.flags),
modifiers = CirFunctionModifiersFactory.create(source),
)
}
@Suppress("NOTHING_TO_INLINE")
inline fun create(
annotations: List<CirAnnotation>,
name: CirName,
typeParameters: List<CirTypeParameter>,
visibility: Visibility,
modality: Modality,
containingClass: CirContainingClass?,
valueParameters: List<CirValueParameter>,
hasStableParameterNames: Boolean,
extensionReceiver: CirExtensionReceiver?,
returnType: CirType,
kind: CallableMemberDescriptor.Kind,
modifiers: CirFunctionModifiers
): CirFunction {
return CirFunctionImpl(
annotations = annotations,
name = name,
typeParameters = typeParameters,
visibility = visibility,
modality = modality,
containingClass = containingClass,
valueParameters = valueParameters,
hasStableParameterNames = hasStableParameterNames,
extensionReceiver = extensionReceiver,
returnType = returnType,
kind = kind,
modifiers = modifiers
)
}
}
@@ -1,26 +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.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.descriptors.commonizer.cir.*
data class CirFunctionImpl(
override val annotations: List<CirAnnotation>,
override val name: CirName,
override val typeParameters: List<CirTypeParameter>,
override val visibility: Visibility,
override val modality: Modality,
override val containingClass: CirContainingClass?,
override var valueParameters: List<CirValueParameter>,
override var hasStableParameterNames: Boolean,
override val extensionReceiver: CirExtensionReceiver?,
override val returnType: CirType,
override val kind: CallableMemberDescriptor.Kind,
override val modifiers: CirFunctionModifiers
) : CirFunction
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.descriptors.commonizer.core
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirFunction
import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirFunctionFactory
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.CirKnownClassifiers
class FunctionCommonizer(classifiers: CirKnownClassifiers) : AbstractFunctionOrPropertyCommonizer<CirFunction>(classifiers) {
@@ -18,7 +17,7 @@ class FunctionCommonizer(classifiers: CirKnownClassifiers) : AbstractFunctionOrP
val valueParameters = valueParameters.result
valueParameters.patchCallables()
return CirFunctionFactory.create(
return CirFunction.create(
annotations = annotations.result,
name = name,
typeParameters = typeParameters.result,