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 2bed64b6cb6..5ff7c4151f9 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 @@ -20,8 +20,11 @@ import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Devtool import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode import org.jetbrains.kotlin.gradle.tasks.registerTask +import org.slf4j.LoggerFactory import javax.inject.Inject +private val log = LoggerFactory.getLogger("org.jetbrains.kotlin.gradle.targets.js.ir") + open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : KotlinJsIrSubTarget(target, "browser"), KotlinJsBrowserDsl { @@ -56,7 +59,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : @ExperimentalDceDsl override fun dceTask(body: KotlinJsDce.() -> Unit) { - TODO("Not yet implemented") + log.warn("dceTask configuration is useless with IR compiler. Use @JsExport on declarations instead.") } override fun configureMain(compilation: KotlinJsIrCompilation) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt index 1638f820f5c..96d66f6ce01 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.dsl.* +import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinBrowserJsIr import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest @@ -43,14 +44,17 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : override val testTaskDescription: String get() = "Run all ${target.name} tests inside browser using karma and webpack" + private val irBrowser: KotlinBrowserJsIr? + get() = target.irTarget?.browser + override fun produceKotlinLibrary() { super.produceKotlinLibrary() - target.irTarget?.browser?.produceKotlinLibrary() + irBrowser?.produceKotlinLibrary() } override fun produceExecutable() { super.produceExecutable() - target.irTarget?.browser?.produceExecutable() + irBrowser?.produceExecutable() } override fun configureDefaultTestFramework(testTask: KotlinJsTest) { @@ -61,20 +65,29 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : override fun runTask(body: KotlinWebpack.() -> Unit) { commonRunConfigurations.add(body) + irBrowser?.runTask(body) } @ExperimentalDistributionDsl override fun distribution(body: Distribution.() -> Unit) { distribution.body() + target.irTarget?.browser?.distribution(body) } override fun webpackTask(body: KotlinWebpack.() -> Unit) { commonWebpackConfigurations.add(body) + irBrowser?.webpackTask(body) } @ExperimentalDceDsl override fun dceTask(body: KotlinJsDce.() -> Unit) { dceConfigurations.add(body) + irBrowser?.dceTask(body) + } + + override fun testTask(body: KotlinJsTest.() -> Unit) { + super.testTask(body) + irBrowser?.testTask(body) } override fun configureMain(compilation: KotlinJsCompilation) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinNodeJs.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinNodeJs.kt index b067ada6bcf..d38793f0b31 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinNodeJs.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinNodeJs.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.targets.js.subtargets import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl +import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinNodeJsIr import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsExec import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest import javax.inject.Inject @@ -20,18 +21,27 @@ open class KotlinNodeJs @Inject constructor(target: KotlinJsTarget) : private val runTaskName = disambiguateCamelCased("run") + private val irNodejs: KotlinNodeJsIr? + get() = target.irTarget?.nodejs + override fun produceKotlinLibrary() { super.produceKotlinLibrary() - target.irTarget?.nodejs?.produceKotlinLibrary() + irNodejs?.produceKotlinLibrary() } override fun produceExecutable() { super.produceExecutable() - target.irTarget?.nodejs?.produceExecutable() + irNodejs?.produceExecutable() } override fun runTask(body: NodeJsExec.() -> Unit) { (project.tasks.getByName(runTaskName) as NodeJsExec).body() + irNodejs?.runTask(body) + } + + override fun testTask(body: KotlinJsTest.() -> Unit) { + super.testTask(body) + irNodejs?.testTask(body) } override fun configureDefaultTestFramework(testTask: KotlinJsTest) {