From 358943c7cb016e316f85ad69b40c8d315d1d595c Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Wed, 23 Nov 2022 12:48:35 +0000 Subject: [PATCH] [Gradle, JS] Fix warning in case when js target declared twice ^KT-55099 fixed --- .../kotlin/gradle/Kotlin2JsGradlePluginIT.kt | 16 ++++++++++++++ .../kotlin/gradle/testbase/BuildOptions.kt | 9 ++++++-- .../kotlin-js-compiler-warn/build.gradle.kts | 22 +++++++++++++++++++ .../kotlin-js-compiler-warn/settings.gradle | 5 +++++ ...linTargetContainerWithJsPresetFunctions.kt | 8 ++++--- 5 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-compiler-warn/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-compiler-warn/settings.gradle diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt index b5eb38fac8a..b890761b634 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt @@ -1147,6 +1147,22 @@ abstract class AbstractKotlin2JsGradlePluginIT(protected val irBackend: Boolean) } } + @DisplayName("kotlin/js compiler warning") + @GradleTest + fun testKotlinJsCompilerWarn(gradleVersion: GradleVersion) { + project( + "kotlin-js-compiler-warn", + gradleVersion, + buildOptions = defaultBuildOptions.copy(jsOptions = defaultJsOptions.copy(compileNoWarn = false, jsCompilerType = null)) + ) { + buildGradleKts.modify(::transformBuildScriptWithPluginsDsl) + + build("assemble") { + assertOutputDoesNotContain("This project currently uses the Kotlin/JS Legacy") + } + } + } + @DisplayName("dependencies are resolved to metadata") @GradleTest fun testResolveJsProjectDependencyToMetadata(gradleVersion: GradleVersion) { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/BuildOptions.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/BuildOptions.kt index 490d504c963..2afa41f4c90 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/BuildOptions.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/BuildOptions.kt @@ -50,6 +50,7 @@ data class BuildOptions( val jsCompilerType: KotlinJsCompilerType? = null, val incrementalJs: Boolean? = null, val incrementalJsKlib: Boolean? = null, + val compileNoWarn: Boolean = true ) fun toArguments( @@ -113,9 +114,13 @@ data class BuildOptions( jsOptions.incrementalJsKlib?.let { arguments.add("-Pkotlin.incremental.js.klib=$it") } jsOptions.useIrBackend?.let { arguments.add("-Pkotlin.js.useIrBackend=$it") } jsOptions.jsCompilerType?.let { arguments.add("-Pkotlin.js.compiler=$it") } + // because we have legacy compiler tests, we need nowarn for compiler testing + if (jsOptions.compileNoWarn) { + arguments.add("-Pkotlin.js.compiler.nowarn=true") + } + } else { + arguments.add("-Pkotlin.js.compiler.nowarn=true") } - // because we have legacy compiler tests, we need nowarn for compiler testing - arguments.add("-Pkotlin.js.compiler.nowarn=true") if (androidVersion != null) { arguments.add("-Pandroid_tools_version=${androidVersion}") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-compiler-warn/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-compiler-warn/build.gradle.kts new file mode 100644 index 00000000000..394c00dc30f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-compiler-warn/build.gradle.kts @@ -0,0 +1,22 @@ +import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType.BOTH as BOTH_TYPE + +plugins { + kotlin("multiplatform") +} + +repositories { + mavenLocal() + mavenCentral() +} + +kotlin { + js(BOTH) + js(BOTH_TYPE) { + useCommonJs() + browser { + } + } + js { + + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-compiler-warn/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-compiler-warn/settings.gradle new file mode 100644 index 00000000000..bb57e5ac101 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-compiler-warn/settings.gradle @@ -0,0 +1,5 @@ +rootProject.name = "kotlin-js-browser" + +include("base") +include("lib") +include("app") \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJsPresetFunctions.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJsPresetFunctions.kt index 21352334551..a47de08177c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJsPresetFunctions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithJsPresetFunctions.kt @@ -85,8 +85,10 @@ private fun KotlinTargetContainerWithJsPresetFunctions.jsInternal( ): KotlinJsTargetDsl { val existingTarget = getExistingTarget(name, compiler) - val compilerOrDefault = compiler - ?: existingTarget?.calculateJsCompilerType() + val kotlinJsCompilerType = (compiler + ?: existingTarget?.calculateJsCompilerType()) + + val compilerOrDefault = kotlinJsCompilerType ?: defaultJsCompilerType val targetName = getTargetName(name, compilerOrDefault) @@ -111,7 +113,7 @@ private fun KotlinTargetContainerWithJsPresetFunctions.jsInternal( ) as KotlinTargetPreset, configure ).also { target -> - warnAboutDeprecatedCompiler(target.project, compiler ?: compilerTypeFromProperties) + warnAboutDeprecatedCompiler(target.project, kotlinJsCompilerType ?: compilerTypeFromProperties) } }