[tooling-core] Add KotlinToolingVersionOrNull factory function
This commit is contained in:
committed by
Space
parent
7605494f2b
commit
d7bfa02bb3
+1
@@ -35,6 +35,7 @@ public final class org/jetbrains/kotlin/tooling/core/KotlinToolingVersionKt {
|
||||
public static final fun KotlinToolingVersion (Ljava/lang/String;)Lorg/jetbrains/kotlin/tooling/core/KotlinToolingVersion;
|
||||
public static final fun KotlinToolingVersion (Lkotlin/KotlinVersion;Ljava/lang/String;)Lorg/jetbrains/kotlin/tooling/core/KotlinToolingVersion;
|
||||
public static synthetic fun KotlinToolingVersion$default (Lkotlin/KotlinVersion;Ljava/lang/String;ILjava/lang/Object;)Lorg/jetbrains/kotlin/tooling/core/KotlinToolingVersion;
|
||||
public static final fun KotlinToolingVersionOrNull (Ljava/lang/String;)Lorg/jetbrains/kotlin/tooling/core/KotlinToolingVersion;
|
||||
public static final fun compareTo (Ljava/lang/String;Lorg/jetbrains/kotlin/tooling/core/KotlinToolingVersion;)I
|
||||
public static final fun compareTo (Lorg/jetbrains/kotlin/tooling/core/KotlinToolingVersion;Ljava/lang/String;)I
|
||||
public static final fun getBuildNumber (Lorg/jetbrains/kotlin/tooling/core/KotlinToolingVersion;)Ljava/lang/Integer;
|
||||
|
||||
+19
-16
@@ -3,34 +3,37 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@file:Suppress("FunctionName")
|
||||
|
||||
package org.jetbrains.kotlin.tooling.core
|
||||
|
||||
import java.io.Serializable
|
||||
import java.util.*
|
||||
|
||||
fun KotlinToolingVersion(kotlinVersionString: String): KotlinToolingVersion {
|
||||
fun throwInvalid(): Nothing {
|
||||
throw IllegalArgumentException("Invalid Kotlin version: $kotlinVersionString")
|
||||
}
|
||||
|
||||
val baseVersion = kotlinVersionString.split("-", limit = 2)[0]
|
||||
val classifier = kotlinVersionString.split("-", limit = 2).getOrNull(1)
|
||||
|
||||
val baseVersionSplit = baseVersion.split(".")
|
||||
if (!(baseVersionSplit.size == 2 || baseVersionSplit.size == 3)) throwInvalid()
|
||||
|
||||
return KotlinToolingVersion(
|
||||
major = baseVersionSplit[0].toIntOrNull() ?: throwInvalid(),
|
||||
minor = baseVersionSplit[1].toIntOrNull() ?: throwInvalid(),
|
||||
patch = baseVersionSplit.getOrNull(2)?.let { it.toIntOrNull() ?: throwInvalid() } ?: 0,
|
||||
classifier = classifier
|
||||
)
|
||||
return KotlinToolingVersionOrNull(kotlinVersionString)
|
||||
?: throw IllegalArgumentException("Invalid Kotlin version: $kotlinVersionString")
|
||||
}
|
||||
|
||||
fun KotlinToolingVersion(kotlinVersion: KotlinVersion, classifier: String? = null): KotlinToolingVersion {
|
||||
return KotlinToolingVersion(kotlinVersion.major, kotlinVersion.minor, kotlinVersion.patch, classifier)
|
||||
}
|
||||
|
||||
fun KotlinToolingVersionOrNull(kotlinVersionString: String): KotlinToolingVersion? {
|
||||
val baseVersion = kotlinVersionString.split("-", limit = 2)[0]
|
||||
val classifier = kotlinVersionString.split("-", limit = 2).getOrNull(1)
|
||||
|
||||
val baseVersionSplit = baseVersion.split(".")
|
||||
if (!(baseVersionSplit.size == 2 || baseVersionSplit.size == 3)) return null
|
||||
|
||||
return KotlinToolingVersion(
|
||||
major = baseVersionSplit[0].toIntOrNull() ?: return null,
|
||||
minor = baseVersionSplit[1].toIntOrNull() ?: return null,
|
||||
patch = baseVersionSplit.getOrNull(2)?.let { it.toIntOrNull() ?: return null } ?: 0,
|
||||
classifier = classifier
|
||||
)
|
||||
}
|
||||
|
||||
class KotlinToolingVersion(
|
||||
val major: Int,
|
||||
val minor: Int,
|
||||
|
||||
+9
-4
@@ -6,10 +6,7 @@
|
||||
package org.jetbrains.kotlin.tooling.core
|
||||
|
||||
import org.junit.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFailsWith
|
||||
import kotlin.test.assertFalse
|
||||
import kotlin.test.assertTrue
|
||||
import kotlin.test.*
|
||||
|
||||
class KotlinToolingVersionTest {
|
||||
|
||||
@@ -311,4 +308,12 @@ class KotlinToolingVersionTest {
|
||||
KotlinToolingVersion("1.7.0-snapshot").isSnapshot
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun illegalVersionString() {
|
||||
assertFailsWith<IllegalArgumentException> { KotlinToolingVersion("x") }
|
||||
assertFailsWith<IllegalArgumentException> { KotlinToolingVersion("1.6.20.1") }
|
||||
assertNull(KotlinToolingVersionOrNull("x"))
|
||||
assertNull(KotlinToolingVersionOrNull("1.6.20.1"))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user