[native] Support milestones in meta versions

Add milestones to MetaVersion to replace standalone parameter in
compiler version generator. This makes native version match Kotlin one.
This commit is contained in:
Pavel Punegov
2021-05-05 17:46:15 +03:00
parent c4ddf3530d
commit fa525a8359
3 changed files with 11 additions and 23 deletions
@@ -12,26 +12,24 @@ interface CompilerVersion : Serializable {
val major: Int
val minor: Int
val maintenance: Int
val milestone: Int
val build: Int
fun toString(showMeta: Boolean, showBuild: Boolean): String
companion object {
// major.minor.patch-meta-build where patch, meta and build are optional.
private val versionPattern = "(\\d+)\\.(\\d+)(?:\\.(\\d+))?(?:-M(\\p{Digit}))?(?:-(\\p{Alpha}\\p{Alnum}*))?(?:-(\\d+))?".toRegex()
private val versionPattern = "(\\d+)\\.(\\d+)(?:\\.(\\d+))?(?:-(\\p{Alpha}\\p{Alnum}*))?(?:-(\\d+))?".toRegex()
fun fromString(version: String): CompilerVersion {
val (major, minor, maintenance, milestone, metaString, build) =
versionPattern.matchEntire(version)?.destructured
?: throw IllegalArgumentException("Cannot parse Kotlin/Native version: $version")
val (major, minor, maintenance, metaString, build) =
versionPattern.matchEntire(version)?.destructured
?: throw IllegalArgumentException("Cannot parse Kotlin/Native version: $version")
return CompilerVersionImpl(
MetaVersion.findAppropriate(metaString),
major.toInt(),
minor.toInt(),
maintenance.toIntOrNull() ?: 0,
milestone.toIntOrNull() ?: -1,
build.toIntOrNull() ?: -1
)
}
@@ -45,7 +43,6 @@ data class CompilerVersionImpl(
override val major: Int,
override val minor: Int,
override val maintenance: Int,
override val milestone: Int = 0,
override val build: Int = -1
) : CompilerVersion {
@@ -55,10 +52,6 @@ data class CompilerVersionImpl(
append(minor)
append('.')
append(maintenance)
if (milestone != -1) {
append("-M")
append(milestone)
}
if (showMeta) {
append('-')
append(meta.metaString)
@@ -13,16 +13,15 @@ package org.jetbrains.kotlin.konan
enum class MetaVersion(val metaString: String) {
DEV("dev"),
EAP("eap"),
ALPHA("alpha"),
BETA("beta"),
RC1("rc1"),
RC2("rc2"),
M1("M1"),
M2("M2"),
RC("RC"),
RELEASE("release");
companion object {
fun findAppropriate(metaString: String): MetaVersion {
return MetaVersion.values().find { it.metaString.equals(metaString, ignoreCase = true) }
return values().find { it.metaString.equals(metaString, ignoreCase = true) }
?: if (metaString.isBlank()) RELEASE else error("Unknown meta version: $metaString")
}
}