From 0f63cfecbd5de6c43851f7f4a904850348d270b9 Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Wed, 28 Dec 2022 17:58:16 +0100 Subject: [PATCH] Introduce KlibMetadataHeaderFlags This class lists possible flags for KlibMetadataProtoBuf.Header, and helps avoid using magic constants in the source code. --- .../metadata/KlibMetadataSerializer.kt | 3 ++- .../src/KlibMetadataProtoBuf.proto | 2 +- .../metadata/KlibDeserializedContainerSource.kt | 2 +- .../library/metadata/KlibMetadataHeaderFlags.kt | 13 +++++++++++++ 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataHeaderFlags.kt diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataSerializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataSerializer.kt index 8ead1105bb0..1f04bd0cdff 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataSerializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataSerializer.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.backend.common.serialization.isSerializableExpectCla import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl +import org.jetbrains.kotlin.library.metadata.KlibMetadataHeaderFlags import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion @@ -255,7 +256,7 @@ fun serializeKlibHeader( header.moduleName = moduleDescriptor.name.asString() if (languageVersionSettings.isPreRelease()) { - header.flags = 1 + header.flags = KlibMetadataHeaderFlags.PRE_RELEASE } fragmentNames.forEach { diff --git a/compiler/util-klib-metadata/src/KlibMetadataProtoBuf.proto b/compiler/util-klib-metadata/src/KlibMetadataProtoBuf.proto index 6b072755f98..b40d8c0898a 100644 --- a/compiler/util-klib-metadata/src/KlibMetadataProtoBuf.proto +++ b/compiler/util-klib-metadata/src/KlibMetadataProtoBuf.proto @@ -25,7 +25,7 @@ option optimize_for = LITE_RUNTIME; message Header { required string module_name = 1; /* - 0x1 = preRelease + Possible values are listed in KlibMetadataHeaderFlags class. */ optional int32 flags = 2; optional org.jetbrains.kotlin.metadata.StringTable strings = 4; diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibDeserializedContainerSource.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibDeserializedContainerSource.kt index fb4da7f56ab..ffec6d52329 100644 --- a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibDeserializedContainerSource.kt +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibDeserializedContainerSource.kt @@ -20,7 +20,7 @@ class KlibDeserializedContainerSource private constructor( constructor(header: Header, configuration: DeserializationConfiguration, packageFqName: FqName) : this( configuration.reportErrorsOnPreReleaseDependencies && - (header.flags and 1) != 0, + (header.flags and KlibMetadataHeaderFlags.PRE_RELEASE) != 0, "Package '$packageFqName'" ) diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataHeaderFlags.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataHeaderFlags.kt new file mode 100644 index 00000000000..48a73156ce9 --- /dev/null +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataHeaderFlags.kt @@ -0,0 +1,13 @@ +/* + * Copyright 2010-2022 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.library.metadata + +/** + * Possible values for [KlibMetadataProtoBuf.Header] flags field. + */ +object KlibMetadataHeaderFlags { + const val PRE_RELEASE = 0x1 +}