From bf145ddee8d90b1dba51d8baff190dbc530b77c7 Mon Sep 17 00:00:00 2001 From: Ivan Kochurkin Date: Tue, 17 Jan 2023 23:27:43 +0100 Subject: [PATCH] Extract common buildKotlinMetadataLibrary Use it in FirMetadataSerializer and K2MetadataKlibSerializer --- .../cli/metadata/FirMetadataSerializer.kt | 32 +++------------ .../cli/metadata/K2MetadataKlibSerializer.kt | 31 ++------------ .../kotlin/cli/metadata/MetadataUtils.kt | 41 +++++++++++++++++++ 3 files changed, 50 insertions(+), 54 deletions(-) create mode 100644 compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataUtils.kt diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/FirMetadataSerializer.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/FirMetadataSerializer.kt index fa1046ffc9c..043c2eb31fc 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/FirMetadataSerializer.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/FirMetadataSerializer.kt @@ -14,7 +14,10 @@ import org.jetbrains.kotlin.cli.common.fir.FirDiagnosticsCompilerResultsReporter import org.jetbrains.kotlin.cli.jvm.compiler.* import org.jetbrains.kotlin.cli.jvm.compiler.pipeline.collectSources import org.jetbrains.kotlin.cli.jvm.compiler.pipeline.createContextForIncrementalCompilation -import org.jetbrains.kotlin.config.* +import org.jetbrains.kotlin.config.CommonConfigurationKeys +import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.config.JVMConfigurationKeys +import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory import org.jetbrains.kotlin.fir.FirModuleDataImpl import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers @@ -32,14 +35,9 @@ import org.jetbrains.kotlin.fir.serialization.serializeSingleFirFile import org.jetbrains.kotlin.fir.session.FirCommonSessionFactory import org.jetbrains.kotlin.fir.session.IncrementalCompilationContext import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope -import org.jetbrains.kotlin.library.KotlinAbiVersion -import org.jetbrains.kotlin.library.KotlinLibraryVersioning import org.jetbrains.kotlin.library.SerializedMetadata -import org.jetbrains.kotlin.library.impl.BuiltInsPlatform -import org.jetbrains.kotlin.library.impl.buildKotlinLibrary import org.jetbrains.kotlin.library.metadata.KlibMetadataHeaderFlags import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf -import org.jetbrains.kotlin.library.metadata.KlibMetadataVersion import org.jetbrains.kotlin.modules.TargetId import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.CommonPlatforms @@ -195,27 +193,7 @@ internal class FirMetadataSerializer( val serializedMetadata = SerializedMetadata(module, fragmentParts, fragmentNames) - val versions = KotlinLibraryVersioning( - abiVersion = KotlinAbiVersion.CURRENT, - libraryVersion = null, - compilerVersion = KotlinCompilerVersion.getVersion(), - metadataVersion = KlibMetadataVersion.INSTANCE.toString(), - irVersion = null - ) - - buildKotlinLibrary( - emptyList(), - serializedMetadata, - null, - versions, - destDir.absolutePath, - configuration[CommonConfigurationKeys.MODULE_NAME]!!, - nopack = true, - perFile = false, - manifestProperties = null, - dataFlowGraph = null, - builtInsPlatform = BuiltInsPlatform.COMMON - ) + buildKotlinMetadataLibrary(configuration, serializedMetadata, destDir) } } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataKlibSerializer.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataKlibSerializer.kt index 6d2b398fcf9..f9a2366ba72 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataKlibSerializer.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataKlibSerializer.kt @@ -15,19 +15,16 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot import org.jetbrains.kotlin.cli.jvm.config.JvmContentRoot import org.jetbrains.kotlin.cli.jvm.config.K2MetadataConfigurationKeys -import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.CompilerConfiguration -import org.jetbrains.kotlin.config.KotlinCompilerVersion import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.PackageFragmentProvider import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.incremental.components.LookupTracker -import org.jetbrains.kotlin.library.* -import org.jetbrains.kotlin.library.impl.BuiltInsPlatform -import org.jetbrains.kotlin.library.impl.buildKotlinLibrary +import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.library.metadata.* import org.jetbrains.kotlin.library.metadata.impl.KlibMetadataModuleDescriptorFactoryImpl +import org.jetbrains.kotlin.library.resolveSingleFileKlib import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.CommonPlatforms import org.jetbrains.kotlin.platform.TargetPlatform @@ -55,7 +52,7 @@ internal class K2MetadataKlibSerializer( val project = environment.project val module = analysisResult.moduleDescriptor - val serializedMetadata: SerializedMetadata = KlibMetadataMonolithicSerializer( + val serializedMetadata = KlibMetadataMonolithicSerializer( configuration.languageVersionSettings, metadataVersion, project, @@ -64,27 +61,7 @@ internal class K2MetadataKlibSerializer( includeOnlyModuleContent = true ).serializeModule(module) - val versions = KotlinLibraryVersioning( - abiVersion = KotlinAbiVersion.CURRENT, - libraryVersion = null, - compilerVersion = KotlinCompilerVersion.getVersion(), - metadataVersion = KlibMetadataVersion.INSTANCE.toString(), - irVersion = null - ) - - buildKotlinLibrary( - emptyList(), - serializedMetadata, - null, - versions, - destDir.absolutePath, - configuration[CommonConfigurationKeys.MODULE_NAME]!!, - nopack = true, - perFile = false, - manifestProperties = null, - dataFlowGraph = null, - builtInsPlatform = BuiltInsPlatform.COMMON - ) + buildKotlinMetadataLibrary(configuration, serializedMetadata, destDir) } } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataUtils.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataUtils.kt new file mode 100644 index 00000000000..6dbc9232dc0 --- /dev/null +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataUtils.kt @@ -0,0 +1,41 @@ +/* + * Copyright 2010-2023 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.cli.metadata + +import org.jetbrains.kotlin.config.CommonConfigurationKeys +import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.config.KotlinCompilerVersion +import org.jetbrains.kotlin.library.KotlinAbiVersion +import org.jetbrains.kotlin.library.KotlinLibraryVersioning +import org.jetbrains.kotlin.library.SerializedMetadata +import org.jetbrains.kotlin.library.impl.BuiltInsPlatform +import org.jetbrains.kotlin.library.impl.buildKotlinLibrary +import org.jetbrains.kotlin.library.metadata.KlibMetadataVersion +import java.io.File + +fun buildKotlinMetadataLibrary(configuration: CompilerConfiguration, serializedMetadata: SerializedMetadata, destDir: File) { + val versions = KotlinLibraryVersioning( + abiVersion = KotlinAbiVersion.CURRENT, + libraryVersion = null, + compilerVersion = KotlinCompilerVersion.getVersion(), + metadataVersion = KlibMetadataVersion.INSTANCE.toString(), + irVersion = null + ) + + buildKotlinLibrary( + emptyList(), + serializedMetadata, + null, + versions, + destDir.absolutePath, + configuration[CommonConfigurationKeys.MODULE_NAME]!!, + nopack = true, + perFile = false, + manifestProperties = null, + dataFlowGraph = null, + builtInsPlatform = BuiltInsPlatform.COMMON + ) +} \ No newline at end of file