diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/facade.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/facade.kt index 0460cb18461..424c1ddf4ff 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/facade.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/facade.kt @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.descriptors.commonizer.core.CommonizationVisitor import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.* import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.CirNode.Companion.dimension import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.CirTreeMerger.CirTreeMergeResult -import org.jetbrains.kotlin.descriptors.commonizer.metadata.MetadataBuilder +import org.jetbrains.kotlin.descriptors.commonizer.metadata.CirTreeSerializer import org.jetbrains.kotlin.library.SerializedMetadata import org.jetbrains.kotlin.storage.LockBasedStorageManager import org.jetbrains.kotlin.storage.StorageManager @@ -59,7 +59,7 @@ private fun serializeTarget(mergeResult: CirTreeMergeResult, targetIndex: Int, p val mergedTree = mergeResult.root val target = mergedTree.getTarget(targetIndex) - MetadataBuilder.build(mergedTree, targetIndex, parameters.statsCollector) { metadataModule -> + CirTreeSerializer.serializeSingleTarget(mergedTree, targetIndex, parameters.statsCollector) { metadataModule -> val libraryName = metadataModule.name val serializedMetadata = with(metadataModule.write(KLIB_FRAGMENT_WRITE_STRATEGY)) { SerializedMetadata(header, fragments, fragmentNames) diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/metadataBuilder.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/CirTreeSerializer.kt similarity index 90% rename from native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/metadataBuilder.kt rename to native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/CirTreeSerializer.kt index 9b707ff9a72..ec0235f52b6 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/metadataBuilder.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/CirTreeSerializer.kt @@ -17,32 +17,32 @@ import org.jetbrains.kotlin.descriptors.commonizer.stats.StatsCollector.StatsKey import org.jetbrains.kotlin.descriptors.commonizer.utils.DEFAULT_CONSTRUCTOR_NAME import org.jetbrains.kotlin.utils.addToStdlib.cast import org.jetbrains.kotlin.descriptors.commonizer.utils.firstNonNull -import org.jetbrains.kotlin.descriptors.commonizer.metadata.MetadataBuildingVisitorContext.Path +import org.jetbrains.kotlin.descriptors.commonizer.metadata.CirTreeSerializationContext.Path -internal object MetadataBuilder { - fun build( +object CirTreeSerializer { + fun serializeSingleTarget( node: CirRootNode, targetIndex: Int, statsCollector: StatsCollector?, moduleConsumer: (KlibModuleMetadata) -> Unit ) { node.accept( - MetadataBuildingVisitor(statsCollector, moduleConsumer), - MetadataBuildingVisitorContext.rootContext(node, targetIndex) + CirTreeSerializationVisitor(statsCollector, moduleConsumer), + CirTreeSerializationContext.rootContext(node, targetIndex) ) } } @Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE") -private class MetadataBuildingVisitor( +private class CirTreeSerializationVisitor( private val statsCollector: StatsCollector?, private val moduleConsumer: (KlibModuleMetadata) -> Unit -) : CirNodeVisitor { +) : CirNodeVisitor { private val classConsumer = ClassConsumer() override fun visitRootNode( node: CirRootNode, - rootContext: MetadataBuildingVisitorContext + rootContext: CirTreeSerializationContext ) { node.modules.forEach { (moduleName, moduleNode) -> val moduleContext = rootContext.moduleContext(moduleName) @@ -56,7 +56,7 @@ private class MetadataBuildingVisitor( override fun visitModuleNode( node: CirModuleNode, - moduleContext: MetadataBuildingVisitorContext + moduleContext: CirTreeSerializationContext ): KlibModuleMetadata? { val cirModule = moduleContext.get(node) ?: return null @@ -73,7 +73,7 @@ private class MetadataBuildingVisitor( override fun visitPackageNode( node: CirPackageNode, - packageContext: MetadataBuildingVisitorContext + packageContext: CirTreeSerializationContext ): KmModuleFragment? { val cirPackage = packageContext.get(node) ?: return null @@ -127,21 +127,21 @@ private class MetadataBuildingVisitor( override fun visitPropertyNode( node: CirPropertyNode, - propertyContext: MetadataBuildingVisitorContext + propertyContext: CirTreeSerializationContext ): KmProperty? { return propertyContext.get(node)?.buildProperty(propertyContext) } override fun visitFunctionNode( node: CirFunctionNode, - functionContext: MetadataBuildingVisitorContext + functionContext: CirTreeSerializationContext ): KmFunction? { return functionContext.get(node)?.buildFunction(functionContext) } override fun visitClassNode( node: CirClassNode, - classContext: MetadataBuildingVisitorContext + classContext: CirTreeSerializationContext ): KmClass? { val cirClass = classContext.get(node) ?: return null val classTypeParametersCount = cirClass.typeParameters.size @@ -181,14 +181,14 @@ private class MetadataBuildingVisitor( override fun visitClassConstructorNode( node: CirClassConstructorNode, - constructorContext: MetadataBuildingVisitorContext + constructorContext: CirTreeSerializationContext ): KmConstructor? { return constructorContext.get(node)?.buildClassConstructor(constructorContext) } override fun visitTypeAliasNode( node: CirTypeAliasNode, - typeAliasContext: MetadataBuildingVisitorContext + typeAliasContext: CirTreeSerializationContext ): Any? { val cirClassifier = typeAliasContext.get(node) ?: return null @@ -204,14 +204,14 @@ private class MetadataBuildingVisitor( companion object { private fun StatsCollector.logModule( - moduleContext: MetadataBuildingVisitorContext + moduleContext: CirTreeSerializationContext ) = logDeclaration(moduleContext.targetIndex) { StatsKey(moduleContext.currentPath.toString(), DeclarationType.MODULE) } private fun StatsCollector.logClass( clazz: KmClass, - classContext: MetadataBuildingVisitorContext + classContext: CirTreeSerializationContext ) = logDeclaration(classContext.targetIndex) { val declarationType = when { Flag.Class.IS_ENUM_CLASS(clazz.flags) -> DeclarationType.ENUM_CLASS @@ -231,13 +231,13 @@ private class MetadataBuildingVisitor( } private fun StatsCollector.logTypeAlias( - typeAliasContext: MetadataBuildingVisitorContext + typeAliasContext: CirTreeSerializationContext ) = logDeclaration(typeAliasContext.targetIndex) { StatsKey(typeAliasContext.currentPath.toString(), DeclarationType.TYPE_ALIAS) } private fun StatsCollector.logProperty( - propertyContext: MetadataBuildingVisitorContext, + propertyContext: CirTreeSerializationContext, propertyKey: PropertyApproximationKey, propertyNode: CirPropertyNode ) = logDeclaration(propertyContext.targetIndex) { @@ -258,7 +258,7 @@ private class MetadataBuildingVisitor( private fun StatsCollector.logFunction( function: KmFunction, - functionContext: MetadataBuildingVisitorContext, + functionContext: CirTreeSerializationContext, functionKey: FunctionApproximationKey ) = logDeclaration(functionContext.targetIndex) { val declarationType = when { @@ -277,7 +277,7 @@ private class MetadataBuildingVisitor( private fun StatsCollector.logClassConstructor( constructor: KmConstructor, - constructorContext: MetadataBuildingVisitorContext, + constructorContext: CirTreeSerializationContext, constructorKey: ConstructorApproximationKey ) = logDeclaration(constructorContext.targetIndex) { StatsKey( @@ -291,7 +291,7 @@ private class MetadataBuildingVisitor( } } -internal data class MetadataBuildingVisitorContext( +internal data class CirTreeSerializationContext( val targetIndex: Int, val target: CommonizerTarget, val isCommon: Boolean, @@ -327,10 +327,10 @@ internal data class MetadataBuildingVisitorContext( } } - fun moduleContext(moduleName: CirName): MetadataBuildingVisitorContext { + fun moduleContext(moduleName: CirName): CirTreeSerializationContext { check(currentPath is Path.Empty) - return MetadataBuildingVisitorContext( + return CirTreeSerializationContext( targetIndex = targetIndex, target = target, isCommon = isCommon, @@ -339,10 +339,10 @@ internal data class MetadataBuildingVisitorContext( ) } - fun packageContext(packageName: CirPackageName): MetadataBuildingVisitorContext { + fun packageContext(packageName: CirPackageName): CirTreeSerializationContext { check(currentPath is Path.Module) - return MetadataBuildingVisitorContext( + return CirTreeSerializationContext( targetIndex = targetIndex, target = target, isCommon = isCommon, @@ -354,7 +354,7 @@ internal data class MetadataBuildingVisitorContext( fun classifierContext( classifierName: CirName, outerClassTypeParametersCount: Int = 0 - ): MetadataBuildingVisitorContext { + ): CirTreeSerializationContext { val newPath = when (currentPath) { is Path.Package -> { check(outerClassTypeParametersCount == 0) @@ -367,7 +367,7 @@ internal data class MetadataBuildingVisitorContext( else -> error("Illegal state") } - return MetadataBuildingVisitorContext( + return CirTreeSerializationContext( targetIndex = targetIndex, target = target, isCommon = isCommon, @@ -379,7 +379,7 @@ internal data class MetadataBuildingVisitorContext( fun callableMemberContext( memberName: CirName, ownerClassTypeParametersCount: Int = 0 - ): MetadataBuildingVisitorContext { + ): CirTreeSerializationContext { val newPath = when (currentPath) { is Path.Package -> { check(ownerClassTypeParametersCount == 0) @@ -392,7 +392,7 @@ internal data class MetadataBuildingVisitorContext( else -> error("Illegal state") } - return MetadataBuildingVisitorContext( + return CirTreeSerializationContext( targetIndex = targetIndex, target = target, isCommon = isCommon, @@ -414,8 +414,8 @@ internal data class MetadataBuildingVisitorContext( } companion object { - fun rootContext(rootNode: CirRootNode, targetIndex: Int): MetadataBuildingVisitorContext = - MetadataBuildingVisitorContext( + fun rootContext(rootNode: CirRootNode, targetIndex: Int): CirTreeSerializationContext = + CirTreeSerializationContext( targetIndex = targetIndex, target = rootNode.getTarget(targetIndex), isCommon = rootNode.indexOfCommon == targetIndex, diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/entityBuilders.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/entityBuilders.kt index 9bc108b4fb5..dbfbe62093b 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/entityBuilders.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/metadata/entityBuilders.kt @@ -70,7 +70,7 @@ internal fun addEmptyFragments(fragments: MutableCollection) { } internal fun CirClass.buildClass( - context: MetadataBuildingVisitorContext, + context: CirTreeSerializationContext, className: ClassName, directNestedClasses: Collection, nestedConstructors: Collection, @@ -125,7 +125,7 @@ internal fun linkSealedClassesWithSubclasses(packageName: CirPackageName, classC } internal fun CirClassConstructor.buildClassConstructor( - context: MetadataBuildingVisitorContext + context: CirTreeSerializationContext ): KmConstructor = KmConstructor( flags = classConstructorFlags() ).also { constructor -> @@ -135,7 +135,7 @@ internal fun CirClassConstructor.buildClassConstructor( } internal fun CirTypeAlias.buildTypeAlias( - context: MetadataBuildingVisitorContext + context: CirTreeSerializationContext ): KmTypeAlias = KmTypeAlias( flags = typeAliasFlags(), name = name.name @@ -147,7 +147,7 @@ internal fun CirTypeAlias.buildTypeAlias( } internal fun CirProperty.buildProperty( - context: MetadataBuildingVisitorContext, + context: CirTreeSerializationContext, ): KmProperty = KmProperty( flags = propertyFlags(isExpect = context.isCommon && !isLiftedUp), name = name.name, @@ -179,7 +179,7 @@ internal fun CirProperty.buildProperty( } internal fun CirFunction.buildFunction( - context: MetadataBuildingVisitorContext, + context: CirTreeSerializationContext, ): KmFunction = KmFunction( flags = functionFlags(isExpect = context.isCommon && kind != CallableMemberDescriptor.Kind.SYNTHESIZED), name = name.name @@ -239,7 +239,7 @@ private fun CirConstantValue<*>.buildAnnotationArgument(): KmAnnotationArgument< } private fun CirValueParameter.buildValueParameter( - context: MetadataBuildingVisitorContext + context: CirTreeSerializationContext ): KmValueParameter = KmValueParameter( flags = valueParameterFlags(), name = name.name @@ -252,7 +252,7 @@ private fun CirValueParameter.buildValueParameter( } private fun List.buildTypeParameters( - context: MetadataBuildingVisitorContext, + context: CirTreeSerializationContext, output: MutableList ) { mapIndexedTo(output) { index, cirTypeParameter -> @@ -269,7 +269,7 @@ private fun List.buildTypeParameters( } private fun CirType.buildType( - context: MetadataBuildingVisitorContext, + context: CirTreeSerializationContext, expansion: TypeAliasExpansion = FOR_TOP_LEVEL_TYPE ): KmType = when (this) { is CirClassType -> buildType(context, expansion) @@ -291,7 +291,7 @@ private fun CirTypeParameterType.buildType(): KmType = } private fun CirClassType.buildType( - context: MetadataBuildingVisitorContext, + context: CirTreeSerializationContext, expansion: TypeAliasExpansion ): KmType = KmType(typeFlags()).also { type -> type.classifier = KmClassifier.Class(classifierId.toString()) @@ -300,7 +300,7 @@ private fun CirClassType.buildType( } private fun CirTypeAliasType.buildType( - context: MetadataBuildingVisitorContext, + context: CirTreeSerializationContext, expansion: TypeAliasExpansion ): KmType = when (expansion) { ONLY_ABBREVIATIONS -> buildAbbreviationType(context, expansion) @@ -314,7 +314,7 @@ private fun CirTypeAliasType.buildType( } private fun CirTypeAliasType.buildAbbreviationType( - context: MetadataBuildingVisitorContext, + context: CirTreeSerializationContext, expansion: TypeAliasExpansion ): KmType { val abbreviationType = KmType(typeFlags()) @@ -325,7 +325,7 @@ private fun CirTypeAliasType.buildAbbreviationType( @Suppress("UnnecessaryVariable") private fun CirTypeAliasType.buildExpandedType( - context: MetadataBuildingVisitorContext, + context: CirTreeSerializationContext, expansion: TypeAliasExpansion ): KmType { val cirExpandedType = computeExpandedType(underlyingType) @@ -334,7 +334,7 @@ private fun CirTypeAliasType.buildExpandedType( } private fun CirTypeProjection.buildArgument( - context: MetadataBuildingVisitorContext, + context: CirTreeSerializationContext, expansion: TypeAliasExpansion ): KmTypeProjection { val effectiveExpansion = if (expansion == FOR_TOP_LEVEL_TYPE) FOR_NESTED_TYPE else expansion