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)!!)
|
||||
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 {
|
||||
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
|
||||
|
||||
+12
-3
@@ -5,9 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.test.directives
|
||||
|
||||
import org.jetbrains.kotlin.config.ApiVersion
|
||||
import org.jetbrains.kotlin.config.ExplicitApiMode
|
||||
import org.jetbrains.kotlin.config.JvmDefaultMode
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
|
||||
|
||||
object LanguageSettingsDirectives : SimpleDirectivesContainer() {
|
||||
@@ -22,6 +20,12 @@ object LanguageSettingsDirectives : SimpleDirectivesContainer() {
|
||||
description = "Version of Kotlin API",
|
||||
parser = this::parseApiVersion
|
||||
)
|
||||
|
||||
val LANGUAGE_VERSION by valueDirective<LanguageVersion>(
|
||||
description = "Kotlin language version",
|
||||
parser = this::parseLanguageVersion
|
||||
)
|
||||
|
||||
// --------------------- Analysis Flags ---------------------
|
||||
|
||||
val OPT_IN by stringDirective(
|
||||
@@ -89,4 +93,9 @@ object LanguageSettingsDirectives : SimpleDirectivesContainer() {
|
||||
"LATEST_STABLE" -> ApiVersion.LATEST_STABLE
|
||||
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