diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt index 0b5fed0cbe8..4f72a5dbee1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt @@ -35,6 +35,10 @@ interface KotlinJsIrTargetDsl { } } + fun produceKotlinLibrary() + + fun produceExecutable() + val testRuns: NamedDomainObjectContainer } @@ -81,10 +85,6 @@ interface KotlinJsIrSubTargetDsl { } } - fun produceKotlinLibrary() - - fun produceExecutable() - val testRuns: NamedDomainObjectContainer } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt index baccbb73218..2314f84140f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt @@ -33,13 +33,6 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : override val testTaskDescription: String get() = "Run all ${target.name} tests inside browser using karma and webpack" - override fun configure() { - super.configure() - browserProducingConfiguredHandlers.forEach { handler -> - handler(this) - } - } - override fun configureDefaultTestFramework(it: KotlinJsIrTest) { it.useKarma { useChromeHeadless() @@ -224,14 +217,6 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : } } - fun whenProducingConfigured(body: KotlinBrowserJsIr.() -> Unit) { - if (producingConfigured) { - this.body() - } else { - browserProducingConfiguredHandlers += body - } - } - companion object { const val PRODUCTION = "production" const val DEVELOPMENT = "development" 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 b328773fbe0..86f4d8f06bb 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 @@ -34,12 +34,7 @@ abstract class KotlinJsIrSubTarget( final override lateinit var testRuns: NamedDomainObjectContainer private set - protected val producingConfigured: Boolean = false - - protected val browserProducingConfiguredHandlers: MutableList Unit> = mutableListOf() - protected val nodejsProducingConfiguredHandlers: MutableList Unit> = mutableListOf() - - protected open fun configure() { + internal fun configure() { NpmResolverPlugin.apply(project) configureBuildVariants() @@ -56,19 +51,17 @@ abstract class KotlinJsIrSubTarget( } } - override fun produceKotlinLibrary() { + internal fun produceKotlinLibrary() { produceByFlags() } - override fun produceExecutable() { + internal fun produceExecutable() { produceByFlags() configureMain() } private fun produceByFlags(vararg flags: String) { - configure() - target.compilations .matching { it.name == KotlinCompilation.TEST_COMPILATION_NAME } .all { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt index de59b9591d0..656a6e22219 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt @@ -42,10 +42,9 @@ open class KotlinJsIrTarget @Inject constructor(project: Project, platformType: private val browserLazyDelegate = lazy { project.objects.newInstance(KotlinBrowserJsIr::class.java, this).also { + it.configure() browserConfiguredHandlers.forEach { handler -> - it.whenProducingConfigured { - handler(this) - } + handler(it) } browserConfiguredHandlers.clear() } @@ -63,10 +62,9 @@ open class KotlinJsIrTarget @Inject constructor(project: Project, platformType: private val nodejsLazyDelegate = lazy { project.objects.newInstance(KotlinNodeJsIr::class.java, this).also { + it.configure() nodejsConfiguredHandlers.forEach { handler -> - it.whenProducingConfigured { - handler(this) - } + handler(it) } nodejsConfiguredHandlers.clear() @@ -83,6 +81,26 @@ open class KotlinJsIrTarget @Inject constructor(project: Project, platformType: body(nodejs) } + override fun produceKotlinLibrary() { + whenBrowserConfigured { + (this as KotlinJsIrSubTarget).produceKotlinLibrary() + } + + whenNodejsConfigured { + (this as KotlinJsIrSubTarget).produceKotlinLibrary() + } + } + + override fun produceExecutable() { + whenBrowserConfigured { + (this as KotlinJsIrSubTarget).produceExecutable() + } + + whenNodejsConfigured { + (this as KotlinJsIrSubTarget).produceExecutable() + } + } + fun whenBrowserConfigured(body: KotlinJsIrBrowserDsl.() -> Unit) { if (browserLazyDelegate.isInitialized()) { browser(body) 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 d880c4fcc6c..f58602f63d4 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 @@ -17,13 +17,6 @@ open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) : private val runTaskName = disambiguateCamelCased("run") - override fun configure() { - super.configure() - nodejsProducingConfiguredHandlers.forEach { handler -> - handler(this) - } - } - override fun runTask(body: NodeJsExec.() -> Unit) { (project.tasks.getByName(runTaskName) as NodeJsExec).body() } @@ -47,12 +40,4 @@ open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) : override fun configureBuildVariants() { } - - fun whenProducingConfigured(body: KotlinNodeJsIr.() -> Unit) { - if (producingConfigured) { - this.body() - } else { - nodejsProducingConfiguredHandlers += body - } - } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt index 0c2b7a8cb07..7aabe232ab8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt @@ -45,7 +45,7 @@ abstract class KotlinJsSubTarget( configureMain() } - internal open fun configure() { + internal fun configure() { NpmResolverPlugin.apply(project) configureTests()