diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinAbiVersion.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinAbiVersion.kt index 5fc7b9fa7a9..7dc237fe253 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinAbiVersion.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinAbiVersion.kt @@ -16,14 +16,23 @@ package org.jetbrains.kotlin.library -fun String.parseKonanAbiVersion(): KotlinAbiVersion { - return KotlinAbiVersion(this.toInt()) +fun String.parseKotlinAbiVersion(): KotlinAbiVersion { + val values = this.split(".").map { it.toInt() } + + return when (values.size) { + 3 -> KotlinAbiVersion(values[0], values[1], values[2]) + 1 -> KotlinAbiVersion(values[0]) + else -> error("Could not parse abi version: $this") + } } -data class KotlinAbiVersion(val version: Int) { +// We still enumerate klib abi_version with a single number, +// but we don't break if in the future we switch to triples. +data class KotlinAbiVersion(val major: Int, val minor: Int, val patch: Int) { + constructor(single: Int) : this(0, single, 0) companion object { val CURRENT = KotlinAbiVersion(26) } - override fun toString() = "$version" -} + override fun toString() = if (major == 0 && patch == 0) "$minor" else "$major.$minor.$patch" +} \ No newline at end of file diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibraryVersioning.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibraryVersioning.kt index a3d792d4d12..0da8ee40e44 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibraryVersioning.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibraryVersioning.kt @@ -19,7 +19,7 @@ fun Properties.writeKonanLibraryVersioning(versions: KotlinLibraryVersioning) { } fun Properties.readKonanLibraryVersioning(): KotlinLibraryVersioning { - val abiVersion = this.getProperty(KLIB_PROPERTY_ABI_VERSION)?.parseKonanAbiVersion() + val abiVersion = this.getProperty(KLIB_PROPERTY_ABI_VERSION)?.parseKotlinAbiVersion() val libraryVersion = this.getProperty(KLIB_PROPERTY_LIBRARY_VERSION) val compilerVersion = this.getProperty(KLIB_PROPERTY_COMPILER_VERSION) val metadataVersion = this.getProperty(KLIB_PROPERTY_METADATA_VERSION)