From f6aaf9bf4a53e5801a91b531cdfcdeb6ab6273a8 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Tue, 11 Oct 2022 14:34:42 +0200 Subject: [PATCH] [Gradle, JS] generate typescript only if necessary --- .../kotlin/gradle/targets/js/ir/JsBinaries.kt | 2 ++ .../gradle/targets/js/ir/KotlinJsIrTarget.kt | 29 ++++++++----------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/JsBinaries.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/JsBinaries.kt index e4a07a71026..bab18ea1c0a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/JsBinaries.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/JsBinaries.kt @@ -36,6 +36,8 @@ sealed class JsIrBinary( val linkTaskName: String = linkTaskName() + var generateTs: Boolean = false + val linkTask: TaskProvider get() = target.project.tasks .withType(KotlinJsIrLink::class.java) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt index 2aea632e187..101b07626bf 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt @@ -26,7 +26,6 @@ import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.binaryen.BinaryenExec import org.jetbrains.kotlin.gradle.targets.js.dsl.* import org.jetbrains.kotlin.gradle.targets.js.internal.RewriteSourceMapFilterReader -import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject import org.jetbrains.kotlin.gradle.targets.js.typescript.TypeScriptValidationTask import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask @@ -161,11 +160,10 @@ constructor( it.finalizedBy(syncTask) - if (tsValidationTask != null) { + if (binary.generateTs) { it.finalizedBy(tsValidationTask) } } - } } } @@ -201,21 +199,17 @@ constructor( } } - private fun registerTypeScriptCheckTask(binary: JsIrBinary): TaskProvider? { + private fun registerTypeScriptCheckTask(binary: JsIrBinary): TaskProvider { val linkTask = binary.linkTask val compilation = binary.compilation - return if (compilation.name == KotlinCompilation.TEST_COMPILATION_NAME) { - null - } else { - project.registerTask(binary.validateGeneratedTsTaskName, listOf(compilation)) { - it.inputDir.set(linkTask.flatMap { it.destinationDirectory }) - it.validationStrategy.set( - when (binary.mode) { - KotlinJsBinaryMode.DEVELOPMENT -> propertiesProvider.jsIrGeneratedTypeScriptValidationDevStrategy - KotlinJsBinaryMode.PRODUCTION -> propertiesProvider.jsIrGeneratedTypeScriptValidationProdStrategy - } - ) - } + return project.registerTask(binary.validateGeneratedTsTaskName, listOf(compilation)) { + it.inputDir.set(linkTask.flatMap { it.destinationDirectory }) + it.validationStrategy.set( + when (binary.mode) { + KotlinJsBinaryMode.DEVELOPMENT -> propertiesProvider.jsIrGeneratedTypeScriptValidationDevStrategy + KotlinJsBinaryMode.PRODUCTION -> propertiesProvider.jsIrGeneratedTypeScriptValidationProdStrategy + } + ) } } @@ -388,9 +382,10 @@ constructor( override fun generateTypeScriptDefinitions() { compilations .all { - binaries + it.binaries .withType(JsIrBinary::class.java) .all { + it.generateTs = true it.linkTask.configure { linkTask -> linkTask.compilerOptions.freeCompilerArgs.add(GENERATE_D_TS) }