[Gradle, JS] Fix warning in case when js target declared twice

^KT-55099 fixed
This commit is contained in:
Ilya Goncharov
2022-11-23 12:48:35 +00:00
committed by Space Team
parent 774bed875a
commit 358943c7cb
5 changed files with 55 additions and 5 deletions
@@ -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) {
@@ -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}")
@@ -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 {
}
}
@@ -0,0 +1,5 @@
rootProject.name = "kotlin-js-browser"
include("base")
include("lib")
include("app")
@@ -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<KotlinJsTargetDsl>,
configure
).also { target ->
warnAboutDeprecatedCompiler(target.project, compiler ?: compilerTypeFromProperties)
warnAboutDeprecatedCompiler(target.project, kotlinJsCompilerType ?: compilerTypeFromProperties)
}
}