From 6a02e257a0368483b2190d76cf0b47c4f6346955 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Mon, 6 Apr 2020 19:23:49 +0300 Subject: [PATCH] [Gradle, JS] Make ir binaries as live data #KT-38058 fixed --- .../targets/js/ir/KotlinJsBinaryContainer.kt | 5 ++-- .../targets/js/ir/KotlinJsIrSubTarget.kt | 4 ++-- .../gradle/targets/js/ir/KotlinNodeJsIr.kt | 23 +++++++++++-------- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsBinaryContainer.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsBinaryContainer.kt index b25fc54e13f..462fafe1a5e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsBinaryContainer.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsBinaryContainer.kt @@ -85,12 +85,11 @@ constructor( } ) - internal fun getIrBinary( + internal fun getIrBinaries( type: KotlinJsBinaryType - ): JsIrBinary = + ): DomainObjectSet = matching { it.type == type } .withType(JsIrBinary::class.java) - .single() private fun createBinaries( compilation: KotlinJsCompilation, diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt index 67606d1a7b9..63738db12f3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt @@ -96,9 +96,9 @@ abstract class KotlinJsIrSubTarget( testJs.group = LifecycleBasePlugin.VERIFICATION_GROUP testJs.description = testTaskDescription - val testExecutableTask = compilation.binaries.getIrBinary( + val testExecutableTask = compilation.binaries.getIrBinaries( KotlinJsBinaryType.DEVELOPMENT - ).linkTask + ).single().linkTask testJs.inputFileProperty.set( testExecutableTask.map { it.outputFileProperty.get() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinNodeJsIr.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinNodeJsIr.kt index 1ae175bdfa2..c02837df8d9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinNodeJsIr.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinNodeJsIr.kt @@ -31,21 +31,24 @@ open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) : override fun configureRun( compilation: KotlinJsIrCompilation ) { - val developmentExecutable = compilation.binaries.getIrBinary(KotlinJsBinaryType.DEVELOPMENT) + compilation.binaries.getIrBinaries(KotlinJsBinaryType.DEVELOPMENT) + .all { developmentExecutable -> + val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased(RUN_TASK_NAME)) { + group = taskGroupName + inputFileProperty.set(developmentExecutable.linkTask.map { it.outputFileProperty.get() }) + } - val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased(RUN_TASK_NAME)) { - group = taskGroupName - inputFileProperty.set(developmentExecutable.linkTask.map { it.outputFileProperty.get() }) - } - target.runTask.dependsOn(runTaskHolder) + target.runTask.dependsOn(runTaskHolder) + } } override fun configureBuild( compilation: KotlinJsIrCompilation ) { - val productionExecutable = compilation.binaries.getIrBinary(KotlinJsBinaryType.PRODUCTION) - - val assembleTask = project.tasks.getByName(LifecycleBasePlugin.ASSEMBLE_TASK_NAME) - assembleTask.dependsOn(productionExecutable.linkTask) + compilation.binaries.getIrBinaries(KotlinJsBinaryType.PRODUCTION) + .all { productionExecutable -> + val assembleTask = project.tasks.getByName(LifecycleBasePlugin.ASSEMBLE_TASK_NAME) + assembleTask.dependsOn(productionExecutable.linkTask) + } } } \ No newline at end of file