Plumbing KlibMetadataVersion and KlibIrVersion values to klib manifest

This commit is contained in:
Alexander Gorshenev
2019-11-28 03:14:25 +03:00
committed by alexander-gorshenev
parent bf12f7eee0
commit b0f077ff4b
22 changed files with 128 additions and 136 deletions
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.konan
import java.io.Serializable
interface KonanVersion : Serializable {
interface CompilerVersion : Serializable {
val meta: MetaVersion
val major: Int
val minor: Int
@@ -20,12 +20,12 @@ interface KonanVersion : Serializable {
// major.minor.patch-meta-build where patch, meta and build are optional.
private val versionPattern = "(\\d+)\\.(\\d+)(?:\\.(\\d+))?(?:-(\\p{Alpha}\\p{Alnum}*))?(?:-(\\d+))?".toRegex()
fun fromString(version: String): KonanVersion {
fun fromString(version: String): CompilerVersion {
val (major, minor, maintenance, metaString, build) =
versionPattern.matchEntire(version)?.destructured
?: throw IllegalArgumentException("Cannot parse Kotlin/Native version: $version")
return KonanVersionImpl(
return CompilerVersionImpl(
MetaVersion.findAppropriate(metaString),
major.toInt(),
minor.toInt(),
@@ -36,15 +36,15 @@ interface KonanVersion : Serializable {
}
}
fun String.parseKonanVersion() = KonanVersion.fromString(this)
fun String.parseCompilerVersion() = CompilerVersion.fromString(this)
data class KonanVersionImpl(
data class CompilerVersionImpl(
override val meta: MetaVersion = MetaVersion.DEV,
override val major: Int,
override val minor: Int,
override val maintenance: Int,
override val build: Int = -1
) : KonanVersion {
) : CompilerVersion {
override fun toString(showMeta: Boolean, showBuild: Boolean) = buildString {
append(major)