From 7d48a7934f47c643ade6e2ff93e6461a57cc553a Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Tue, 22 Aug 2023 17:49:30 +0200 Subject: [PATCH] [Gradle] Fix tryK2 was not applied to Kotlin/JS gradle plugin ^KT-61193 Fixed --- .../kotlin/gradle/experimental/TryK2IT.kt | 44 +++++++++++++++++++ .../gradle/targets/js/KotlinJsPlugin.kt | 4 ++ 2 files changed, 48 insertions(+) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/experimental/TryK2IT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/experimental/TryK2IT.kt index 135d63cdae5..e749e4ec981 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/experimental/TryK2IT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/experimental/TryK2IT.kt @@ -259,6 +259,50 @@ class TryK2IT : KGPBaseTest() { } } + @DisplayName("JS: language version default is changed to 2.0") + @JsGradlePluginTests + @GradleTest + fun jsLanguageVersionK2(gradleVersion: GradleVersion) { + project( + "kotlin-js-nodejs-project", + gradleVersion, + buildOptions = defaultBuildOptions.copy(logLevel = LogLevel.DEBUG) + ) { + enableTryK2() + + build(":compileKotlinJs") { + assertTasksExecuted(":compileKotlinJs") + + assertCompilerArgument(":compileKotlinJs", "-language-version 2.0") + } + } + } + + @DisplayName("JS: tryK2 report is produced") + @JsGradlePluginTests + @GradleTest + fun jsTryReport(gradleVersion: GradleVersion) { + project( + "kotlin-js-nodejs-project", + gradleVersion, + ) { + enableTryK2() + + build("build") { + assertOutputContains( + """ + |##### 'kotlin.experimental.tryK2' results ##### + |:compileKotlinJs: 2.0 language version + |:compileProductionExecutableKotlinJs: 2.0 language version + |:compileTestKotlinJs: 2.0 language version + |:compileTestDevelopmentExecutableKotlinJs: 2.0 language version + |##### 100% (4/4) tasks have been compiled with Kotlin 2.0 ##### + """.trimMargin().normalizeLineEndings() + ) + } + } + } + private fun TestProject.enableTryK2() = gradleProperties.appendText( """ | diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsPlugin.kt index 85892b9ee38..daaaea5e1e2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsPlugin.kt @@ -92,5 +92,9 @@ open class KotlinJsPlugin: Plugin { // Also create predefined source sets kotlinExtension.sourceSets.maybeCreate(MAIN_COMPILATION_NAME) kotlinExtension.sourceSets.maybeCreate(TEST_COMPILATION_NAME) + + kotlinExtension.registerTargetObserver { target -> + target?.compilerOptions?.configureExperimentalTryK2(project) + } } }