Support -Xuse-experimental in the new MPP languageSettings { ... } DSL
Add the corresponding Gradle plugin DSL, consistency checks, and logic for propagating these settings to the compiler during build. Issue #KT-26840 In Progress
This commit is contained in:
+34
-11
@@ -311,18 +311,29 @@ class NewMultiplatformIT : BaseGradleIT() {
|
||||
|
||||
gradleBuildScript().appendText(
|
||||
"\n" + """
|
||||
kotlin.sourceSets.jvm6Main.languageSettings {
|
||||
languageVersion = '1.3'
|
||||
apiVersion = '1.3'
|
||||
enableLanguageFeature('InlineClasses')
|
||||
progressiveMode = true
|
||||
kotlin.sourceSets.all {
|
||||
it.languageSettings {
|
||||
languageVersion = '1.3'
|
||||
apiVersion = '1.3'
|
||||
enableLanguageFeature('InlineClasses')
|
||||
useExperimentalAnnotation('kotlin.ExperimentalUnsignedTypes')
|
||||
useExperimentalAnnotation('kotlin.contracts.ExperimentalContracts')
|
||||
progressiveMode = true
|
||||
}
|
||||
}
|
||||
""".trimIndent()
|
||||
)
|
||||
|
||||
build("compileKotlinJvm6") {
|
||||
assertSuccessful()
|
||||
assertContains("-language-version 1.3", "-api-version 1.3", "-XXLanguage:+InlineClasses", " -progressive")
|
||||
listOf("compileKotlinJvm6", "compileKotlinNodeJs", "compileKotlin${nativeHostTargetName.capitalize()}").forEach {
|
||||
build(it) {
|
||||
assertSuccessful()
|
||||
assertTasksExecuted(":$it")
|
||||
assertContains(
|
||||
"-language-version 1.3", "-api-version 1.3", "-XXLanguage:+InlineClasses",
|
||||
" -progressive", "-Xuse-experimental=kotlin.ExperimentalUnsignedTypes",
|
||||
"-Xuse-experimental=kotlin.contracts.ExperimentalContracts"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -351,8 +362,20 @@ class NewMultiplatformIT : BaseGradleIT() {
|
||||
}
|
||||
}
|
||||
|
||||
testMonotonousCheck("languageSettings.languageVersion = '1.4'", SourceSetConsistencyChecks.languageVersionCheckHint)
|
||||
testMonotonousCheck("languageSettings.enableLanguageFeature('InlineClasses')", SourceSetConsistencyChecks.unstableFeaturesHint)
|
||||
testMonotonousCheck(
|
||||
"languageSettings.languageVersion = '1.4'",
|
||||
SourceSetConsistencyChecks.languageVersionCheckHint
|
||||
)
|
||||
|
||||
testMonotonousCheck(
|
||||
"languageSettings.enableLanguageFeature('InlineClasses')",
|
||||
SourceSetConsistencyChecks.unstableFeaturesHint
|
||||
)
|
||||
|
||||
testMonotonousCheck(
|
||||
"languageSettings.useExperimentalAnnotation('kotlin.ExperimentalUnsignedTypes')",
|
||||
SourceSetConsistencyChecks.experimentalAnnotationsInUseHint
|
||||
)
|
||||
|
||||
// check that enabling a bugfix feature and progressive mode or advancing API level
|
||||
// don't require doing the same for dependent source sets:
|
||||
@@ -951,4 +974,4 @@ class NewMultiplatformIT : BaseGradleIT() {
|
||||
assertFileExists("foo/2.txt")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+7
@@ -38,13 +38,20 @@ kotlin {
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
commonMain {
|
||||
dependencies {
|
||||
api 'org.jetbrains.kotlin:kotlin-stdlib-common'
|
||||
}
|
||||
}
|
||||
jvm6Main {
|
||||
dependencies {
|
||||
api 'org.jetbrains.kotlin:kotlin-stdlib'
|
||||
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.23.4'
|
||||
}
|
||||
}
|
||||
nodeJsMain {
|
||||
dependencies {
|
||||
api 'org.jetbrains.kotlin:kotlin-stdlib-js'
|
||||
implementation 'org.jetbrains.kotlinx:kotlinx-html-js:0.6.11'
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user