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 StringNullDefault : DefaultValues("null")
|
||||||
|
|
||||||
object LanguageVersions : DefaultValues(
|
object LanguageVersions : DefaultValues(
|
||||||
"\"" + LanguageVersion.LATEST_STABLE.versionString + "\"",
|
"null",
|
||||||
LanguageVersion.values().map { "\"${it.description}\"" }
|
LanguageVersion.values().map { "\"${it.description}\"" }
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+49
@@ -492,4 +492,53 @@ class KotlinGradleIT: BaseGradleIT() {
|
|||||||
assertSuccessful()
|
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
|
* Allow to use declarations only from the specified version of bundled libraries
|
||||||
* Possible values: "1.0", "1.1", "1.2 (EXPERIMENTAL)"
|
* 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
|
* Provide source compatibility with specified language version
|
||||||
* Possible values: "1.0", "1.1", "1.2 (EXPERIMENTAL)"
|
* 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
|
* 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 {
|
internal abstract class KotlinJsOptionsBase : org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions {
|
||||||
|
|
||||||
private var apiVersionField: kotlin.String? = null
|
private var apiVersionField: kotlin.String?? = null
|
||||||
override var apiVersion: kotlin.String
|
override var apiVersion: kotlin.String?
|
||||||
get() = apiVersionField ?: "1.1"
|
get() = apiVersionField ?: null
|
||||||
set(value) { apiVersionField = value }
|
set(value) { apiVersionField = value }
|
||||||
|
|
||||||
private var languageVersionField: kotlin.String? = null
|
private var languageVersionField: kotlin.String?? = null
|
||||||
override var languageVersion: kotlin.String
|
override var languageVersion: kotlin.String?
|
||||||
get() = languageVersionField ?: "1.1"
|
get() = languageVersionField ?: null
|
||||||
set(value) { languageVersionField = value }
|
set(value) { languageVersionField = value }
|
||||||
|
|
||||||
private var suppressWarningsField: kotlin.Boolean? = null
|
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() {
|
internal fun org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments.fillDefaultValues() {
|
||||||
apiVersion = "1.1"
|
apiVersion = null
|
||||||
languageVersion = "1.1"
|
languageVersion = null
|
||||||
suppressWarnings = false
|
suppressWarnings = false
|
||||||
verbose = false
|
verbose = false
|
||||||
friendModulesDisabled = 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 {
|
internal abstract class KotlinJvmOptionsBase : org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions {
|
||||||
|
|
||||||
private var apiVersionField: kotlin.String? = null
|
private var apiVersionField: kotlin.String?? = null
|
||||||
override var apiVersion: kotlin.String
|
override var apiVersion: kotlin.String?
|
||||||
get() = apiVersionField ?: "1.1"
|
get() = apiVersionField ?: null
|
||||||
set(value) { apiVersionField = value }
|
set(value) { apiVersionField = value }
|
||||||
|
|
||||||
private var languageVersionField: kotlin.String? = null
|
private var languageVersionField: kotlin.String?? = null
|
||||||
override var languageVersion: kotlin.String
|
override var languageVersion: kotlin.String?
|
||||||
get() = languageVersionField ?: "1.1"
|
get() = languageVersionField ?: null
|
||||||
set(value) { languageVersionField = value }
|
set(value) { languageVersionField = value }
|
||||||
|
|
||||||
private var suppressWarningsField: kotlin.Boolean? = null
|
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() {
|
internal fun org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments.fillDefaultValues() {
|
||||||
apiVersion = "1.1"
|
apiVersion = null
|
||||||
languageVersion = "1.1"
|
languageVersion = null
|
||||||
suppressWarnings = false
|
suppressWarnings = false
|
||||||
verbose = false
|
verbose = false
|
||||||
includeRuntime = false
|
includeRuntime = false
|
||||||
|
|||||||
Reference in New Issue
Block a user