Add LANGUAGE_VERSION test directive.
This commit is contained in:
+13
@@ -62,6 +62,19 @@ class LanguageVersionSettingsBuilder {
|
|||||||
val languageVersion = maxOf(LanguageVersion.LATEST_STABLE, LanguageVersion.fromVersionString(apiVersion.versionString)!!)
|
val languageVersion = maxOf(LanguageVersion.LATEST_STABLE, LanguageVersion.fromVersionString(apiVersion.versionString)!!)
|
||||||
this.languageVersion = languageVersion
|
this.languageVersion = languageVersion
|
||||||
}
|
}
|
||||||
|
val languageVersionDirective = directives.singleOrZeroValue(LanguageSettingsDirectives.LANGUAGE_VERSION)
|
||||||
|
if (languageVersionDirective != null) {
|
||||||
|
languageVersion = languageVersionDirective
|
||||||
|
if (languageVersion < LanguageVersion.fromVersionString(this.apiVersion.versionString)!!) {
|
||||||
|
error(
|
||||||
|
"""
|
||||||
|
Language version must be larger than or equal to the API version.
|
||||||
|
Language version: '$languageVersion'.
|
||||||
|
API version: '$apiVersion'.
|
||||||
|
""".trimIndent()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
when {
|
when {
|
||||||
useK2 && this.languageVersion < LanguageVersion.KOTLIN_2_0 -> this.languageVersion = LanguageVersion.KOTLIN_2_0
|
useK2 && this.languageVersion < LanguageVersion.KOTLIN_2_0 -> this.languageVersion = LanguageVersion.KOTLIN_2_0
|
||||||
!useK2 && this.languageVersion > LanguageVersion.KOTLIN_1_9 -> this.languageVersion = LanguageVersion.KOTLIN_1_9
|
!useK2 && this.languageVersion > LanguageVersion.KOTLIN_1_9 -> this.languageVersion = LanguageVersion.KOTLIN_1_9
|
||||||
|
|||||||
+12
-3
@@ -5,9 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.test.directives
|
package org.jetbrains.kotlin.test.directives
|
||||||
|
|
||||||
import org.jetbrains.kotlin.config.ApiVersion
|
import org.jetbrains.kotlin.config.*
|
||||||
import org.jetbrains.kotlin.config.ExplicitApiMode
|
|
||||||
import org.jetbrains.kotlin.config.JvmDefaultMode
|
|
||||||
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
|
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
|
||||||
|
|
||||||
object LanguageSettingsDirectives : SimpleDirectivesContainer() {
|
object LanguageSettingsDirectives : SimpleDirectivesContainer() {
|
||||||
@@ -22,6 +20,12 @@ object LanguageSettingsDirectives : SimpleDirectivesContainer() {
|
|||||||
description = "Version of Kotlin API",
|
description = "Version of Kotlin API",
|
||||||
parser = this::parseApiVersion
|
parser = this::parseApiVersion
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val LANGUAGE_VERSION by valueDirective<LanguageVersion>(
|
||||||
|
description = "Kotlin language version",
|
||||||
|
parser = this::parseLanguageVersion
|
||||||
|
)
|
||||||
|
|
||||||
// --------------------- Analysis Flags ---------------------
|
// --------------------- Analysis Flags ---------------------
|
||||||
|
|
||||||
val OPT_IN by stringDirective(
|
val OPT_IN by stringDirective(
|
||||||
@@ -89,4 +93,9 @@ object LanguageSettingsDirectives : SimpleDirectivesContainer() {
|
|||||||
"LATEST_STABLE" -> ApiVersion.LATEST_STABLE
|
"LATEST_STABLE" -> ApiVersion.LATEST_STABLE
|
||||||
else -> ApiVersion.parse(versionString) ?: error("Unknown API version: $versionString")
|
else -> ApiVersion.parse(versionString) ?: error("Unknown API version: $versionString")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun parseLanguageVersion(versionString: String): LanguageVersion = when (versionString) {
|
||||||
|
"LATEST_STABLE" -> LanguageVersion.LATEST_STABLE
|
||||||
|
else -> LanguageVersion.fromVersionString(versionString) ?: error("Unknown language version: $versionString")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user