From 3c83a3bd3413f753235da2b16c05c4c342b33e6e Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Wed, 26 Feb 2020 17:26:03 +0300 Subject: [PATCH] [Gradle, JS] Error if used binaries.executable in both compiler type --- .../gradle/targets/js/KotlinJsTarget.kt | 11 ++++------ .../targets/js/ir/KotlinJsBinaryContainer.kt | 20 ++++++++++--------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt index f8c54d63717..cb1d1e23529 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt @@ -81,13 +81,10 @@ constructor( } override val binaries: KotlinJsBinaryContainer - get() { - irTarget?.let { throw IllegalStateException("Unfortunately you can't use binaries in 'both' mode") } - return compilations.withType(KotlinJsCompilation::class.java) - .named(MAIN_COMPILATION_NAME) - .map { it.binaries } - .get() - } + get() = compilations.withType(KotlinJsCompilation::class.java) + .named(MAIN_COMPILATION_NAME) + .map { it.binaries } + .get() var irTarget: KotlinJsIrTarget? = null 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 57273776c25..af2d2375aeb 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 @@ -15,7 +15,6 @@ import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType.DEVELOPMENT import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType.PRODUCTION -import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetContainerDsl import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinJsSubTarget import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import javax.inject.Inject @@ -38,22 +37,25 @@ constructor( fun executable( compilation: KotlinJsCompilation = defaultCompilation ) { - (target as KotlinJsSubTargetContainerDsl).whenBrowserConfigured { - if (target is KotlinJsIrTarget) { + if (target is KotlinJsIrTarget) { + target.whenBrowserConfigured { (this as KotlinJsIrSubTarget).produceExecutable() } - if (target is KotlinJsTarget) { - (this as KotlinJsSubTarget).produceExecutable() + target.whenNodejsConfigured { + (this as KotlinJsIrSubTarget).produceExecutable() } } - (target as KotlinJsSubTargetContainerDsl).whenNodejsConfigured { - if (target is KotlinJsIrTarget) { - (this as KotlinJsIrSubTarget).produceExecutable() + if (target is KotlinJsTarget) { + target.irTarget + ?.let { throw IllegalStateException("Unfortunately you can't use `executable()` with 'both' compiler type") } + + target.whenBrowserConfigured { + (this as KotlinJsSubTarget).produceExecutable() } - if (target is KotlinJsTarget) { + target.whenNodejsConfigured { (this as KotlinJsSubTarget).produceExecutable() } }