From a923e0d1302d0db52e94f7a978fd2f244007b5d3 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Thu, 28 Nov 2019 16:55:56 +0300 Subject: [PATCH] Only allow version triples for klib metadata and ir versions --- .../src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt | 1 - .../kotlin/backend/common/serialization/KlibIrVersion.kt | 9 +++++++-- .../library/metadata/KlibMetadataMetadataVersion.kt | 9 +++++++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt index 274855382c5..c3eddb74766 100644 --- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt +++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt @@ -317,7 +317,6 @@ class K2JsIrCompiler : CLICompiler() { } override fun createMetadataVersion(versionArray: IntArray): BinaryVersion { - // TODO: Support metadata versions for klibs return KlibMetadataVersion(*versionArray) } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KlibIrVersion.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KlibIrVersion.kt index 518599d2909..a826f131299 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KlibIrVersion.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KlibIrVersion.kt @@ -4,7 +4,7 @@ import org.jetbrains.kotlin.library.KLIB_PROPERTY_IR_VERSION import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion -class KlibIrVersion(vararg numbers: Int) : BinaryVersion(*numbers) { +class KlibIrVersion(major: Int, minor: Int, patch: Int) : BinaryVersion(major, minor, patch) { override fun isCompatible(): Boolean = isCompatibleTo(INSTANCE) @@ -18,10 +18,15 @@ class KlibIrVersion(vararg numbers: Int) : BinaryVersion(*numbers) { } } +fun KlibIrVersion(vararg values: Int): KlibIrVersion { + if (values.size != 3) error("Ir version should be in major.minor.patch format: $values") + return KlibIrVersion(values[0], values[1], values[2]) +} + val KotlinLibrary.metadataVersion: KlibIrVersion get() { val versionString = manifestProperties.getProperty(KLIB_PROPERTY_IR_VERSION) val versionIntArray = BinaryVersion.parseVersionArray(versionString) - ?: error("Could not parse metadata version: $versionString") + ?: error("Could not parse ir version: $versionString") return KlibIrVersion(*versionIntArray) } \ No newline at end of file diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataMetadataVersion.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataMetadataVersion.kt index 81649203f59..fb608e15e7d 100644 --- a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataMetadataVersion.kt +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataMetadataVersion.kt @@ -9,7 +9,7 @@ import org.jetbrains.kotlin.library.KLIB_PROPERTY_METADATA_VERSION import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion -class KlibMetadataVersion(vararg numbers: Int) : BinaryVersion(*numbers) { +class KlibMetadataVersion(major: Int, minor: Int, patch: Int) : BinaryVersion(major, minor, patch) { override fun isCompatible(): Boolean = isCompatibleTo(INSTANCE) @@ -22,10 +22,15 @@ class KlibMetadataVersion(vararg numbers: Int) : BinaryVersion(*numbers) { } } +fun KlibMetadataVersion(vararg values: Int): KlibMetadataVersion { + if (values.size != 3) error("Metadata version should be in major.minor.patch format: $values") + return KlibMetadataVersion(values[0], values[1], values[2]) +} + val KotlinLibrary.metadataVersion: KlibMetadataVersion get() { val versionString = manifestProperties.getProperty(KLIB_PROPERTY_METADATA_VERSION) val versionIntArray = BinaryVersion.parseVersionArray(versionString) - ?: error("Could not parse ir version: $versionString") + ?: error("Could not parse metadata version: $versionString") return KlibMetadataVersion(*versionIntArray) } \ No newline at end of file