Gradle: set default values of languageVersion and apiVersion to null
Before the change, Gradle always explicitly set language and api
version to the latest version, preventing the compiler
from inferencing the arguments.
#KT-18047 fixed
This commit is contained in:
+1
-1
@@ -29,7 +29,7 @@ open class DefaultValues(val defaultValue: String, val possibleValues: List<Stri
|
||||
object StringNullDefault : DefaultValues("null")
|
||||
|
||||
object LanguageVersions : DefaultValues(
|
||||
"\"" + LanguageVersion.LATEST_STABLE.versionString + "\"",
|
||||
"null",
|
||||
LanguageVersion.values().map { "\"${it.description}\"" }
|
||||
)
|
||||
|
||||
|
||||
+49
@@ -492,4 +492,53 @@ class KotlinGradleIT: BaseGradleIT() {
|
||||
assertSuccessful()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testLanguageVersionApiVersionExplicit() {
|
||||
val project = Project("kotlinProject", "3.3")
|
||||
project.setupWorkingDir()
|
||||
|
||||
val buildGradle = File(project.projectDir, "build.gradle")
|
||||
val buildGradleContentCopy = buildGradle.readText()
|
||||
|
||||
fun updateBuildGradle(langVersion: String, apiVersion: String) {
|
||||
buildGradle.writeText(
|
||||
"""
|
||||
$buildGradleContentCopy
|
||||
|
||||
compileKotlin {
|
||||
kotlinOptions {
|
||||
languageVersion = '$langVersion'
|
||||
apiVersion = '$apiVersion'
|
||||
}
|
||||
}
|
||||
""".trimIndent())
|
||||
}
|
||||
|
||||
assert(buildGradleContentCopy.indexOf("languageVersion") < 0) { "build.gradle should not contain 'languageVersion'" }
|
||||
assert(buildGradleContentCopy.indexOf("apiVersion") < 0) { "build.gradle should not contain 'apiVersion'" }
|
||||
|
||||
// check the arguments are not passed by default (they are inferred by the compiler)
|
||||
project.build("clean", "compileKotlin") {
|
||||
assertSuccessful()
|
||||
assertNotContains("-language-version")
|
||||
assertNotContains("-api-version")
|
||||
assertNoWarnings()
|
||||
}
|
||||
|
||||
// check the arguments are always passed if specified explicitly
|
||||
updateBuildGradle("1.0", "1.0")
|
||||
project.build("clean", "compileKotlin") {
|
||||
assertSuccessful()
|
||||
assertContains("-language-version 1.0")
|
||||
assertContains("-api-version 1.0")
|
||||
}
|
||||
|
||||
updateBuildGradle("1.1", "1.1")
|
||||
project.build("clean", "compileKotlin") {
|
||||
assertSuccessful()
|
||||
assertContains("-language-version 1.1")
|
||||
assertContains("-api-version 1.1")
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -7,16 +7,16 @@ interface KotlinCommonOptions {
|
||||
/**
|
||||
* Allow to use declarations only from the specified version of bundled libraries
|
||||
* Possible values: "1.0", "1.1", "1.2 (EXPERIMENTAL)"
|
||||
* Default value: "1.1"
|
||||
* Default value: null
|
||||
*/
|
||||
var apiVersion: kotlin.String
|
||||
var apiVersion: kotlin.String?
|
||||
|
||||
/**
|
||||
* Provide source compatibility with specified language version
|
||||
* Possible values: "1.0", "1.1", "1.2 (EXPERIMENTAL)"
|
||||
* Default value: "1.1"
|
||||
* Default value: null
|
||||
*/
|
||||
var languageVersion: kotlin.String
|
||||
var languageVersion: kotlin.String?
|
||||
|
||||
/**
|
||||
* Generate no warnings
|
||||
|
||||
+8
-8
@@ -4,14 +4,14 @@ package org.jetbrains.kotlin.gradle.dsl
|
||||
|
||||
internal abstract class KotlinJsOptionsBase : org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions {
|
||||
|
||||
private var apiVersionField: kotlin.String? = null
|
||||
override var apiVersion: kotlin.String
|
||||
get() = apiVersionField ?: "1.1"
|
||||
private var apiVersionField: kotlin.String?? = null
|
||||
override var apiVersion: kotlin.String?
|
||||
get() = apiVersionField ?: null
|
||||
set(value) { apiVersionField = value }
|
||||
|
||||
private var languageVersionField: kotlin.String? = null
|
||||
override var languageVersion: kotlin.String
|
||||
get() = languageVersionField ?: "1.1"
|
||||
private var languageVersionField: kotlin.String?? = null
|
||||
override var languageVersion: kotlin.String?
|
||||
get() = languageVersionField ?: null
|
||||
set(value) { languageVersionField = value }
|
||||
|
||||
private var suppressWarningsField: kotlin.Boolean? = null
|
||||
@@ -87,8 +87,8 @@ internal abstract class KotlinJsOptionsBase : org.jetbrains.kotlin.gradle.dsl.Ko
|
||||
}
|
||||
|
||||
internal fun org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments.fillDefaultValues() {
|
||||
apiVersion = "1.1"
|
||||
languageVersion = "1.1"
|
||||
apiVersion = null
|
||||
languageVersion = null
|
||||
suppressWarnings = false
|
||||
verbose = false
|
||||
friendModulesDisabled = false
|
||||
|
||||
+8
-8
@@ -4,14 +4,14 @@ package org.jetbrains.kotlin.gradle.dsl
|
||||
|
||||
internal abstract class KotlinJvmOptionsBase : org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions {
|
||||
|
||||
private var apiVersionField: kotlin.String? = null
|
||||
override var apiVersion: kotlin.String
|
||||
get() = apiVersionField ?: "1.1"
|
||||
private var apiVersionField: kotlin.String?? = null
|
||||
override var apiVersion: kotlin.String?
|
||||
get() = apiVersionField ?: null
|
||||
set(value) { apiVersionField = value }
|
||||
|
||||
private var languageVersionField: kotlin.String? = null
|
||||
override var languageVersion: kotlin.String
|
||||
get() = languageVersionField ?: "1.1"
|
||||
private var languageVersionField: kotlin.String?? = null
|
||||
override var languageVersion: kotlin.String?
|
||||
get() = languageVersionField ?: null
|
||||
set(value) { languageVersionField = value }
|
||||
|
||||
private var suppressWarningsField: kotlin.Boolean? = null
|
||||
@@ -75,8 +75,8 @@ internal abstract class KotlinJvmOptionsBase : org.jetbrains.kotlin.gradle.dsl.K
|
||||
}
|
||||
|
||||
internal fun org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments.fillDefaultValues() {
|
||||
apiVersion = "1.1"
|
||||
languageVersion = "1.1"
|
||||
apiVersion = null
|
||||
languageVersion = null
|
||||
suppressWarnings = false
|
||||
verbose = false
|
||||
includeRuntime = false
|
||||
|
||||
Reference in New Issue
Block a user