diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilation.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilation.kt index 0bf72f47d16..8f3adfaaba9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilation.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilation.kt @@ -25,7 +25,8 @@ import javax.inject.Inject open class KotlinJsCompilation @Inject internal constructor( compilation: KotlinCompilationImpl -) : AbstractKotlinCompilationToRunnableFiles(compilation) { +) : AbstractKotlinCompilationToRunnableFiles(compilation), + HasBinaries { @Suppress("UNCHECKED_CAST") final override val compilerOptions: HasCompilerOptions @@ -39,7 +40,7 @@ open class KotlinJsCompilation @Inject internal constructor( configure.execute(compilerOptions.options) } - val binaries: KotlinJsBinaryContainer = + override val binaries: KotlinJsBinaryContainer = compilation.target.project.objects.newInstance( KotlinJsBinaryContainer::class.java, compilation.target, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt index ad54188999d..5f86b4781d1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt @@ -10,6 +10,7 @@ import org.gradle.api.GradleException import org.gradle.api.NamedDomainObjectContainer import org.jetbrains.kotlin.gradle.dsl.KotlinJsDce import org.jetbrains.kotlin.gradle.plugin.KotlinTarget +import org.jetbrains.kotlin.gradle.plugin.mpp.HasBinaries import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlatformTestRun import org.jetbrains.kotlin.gradle.targets.js.KotlinJsReportAggregatingTestRun import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer @@ -33,7 +34,10 @@ interface KotlinJsSubTargetContainerDsl : KotlinTarget { fun whenBrowserConfigured(body: KotlinJsBrowserDsl.() -> Unit) } -interface KotlinJsTargetDsl : KotlinTarget, KotlinTargetWithNodeJsDsl { +interface KotlinJsTargetDsl : + KotlinTarget, + KotlinTargetWithNodeJsDsl, + HasBinaries{ var moduleName: String? fun browser() = browser { } @@ -55,8 +59,6 @@ interface KotlinJsTargetDsl : KotlinTarget, KotlinTargetWithNodeJsDsl { fun generateTypeScriptDefinitions() - val binaries: KotlinJsBinaryContainer - @Deprecated( message = "produceExecutable() was changed on binaries.executable()", replaceWith = ReplaceWith("binaries.executable()"), @@ -70,6 +72,8 @@ interface KotlinJsTargetDsl : KotlinTarget, KotlinTargetWithNodeJsDsl { // Need to compatibility when users use KotlinJsCompilation specific in build script override val compilations: NamedDomainObjectContainer + + override val binaries: KotlinJsBinaryContainer } interface KotlinTargetWithNodeJsDsl { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinWasmTargetDsl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinWasmTargetDsl.kt index baa3917c685..766f0c7508a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinWasmTargetDsl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinWasmTargetDsl.kt @@ -6,11 +6,15 @@ package org.jetbrains.kotlin.gradle.targets.js.dsl import org.gradle.api.Action +import org.gradle.api.NamedDomainObjectContainer import org.jetbrains.kotlin.gradle.plugin.KotlinTarget +import org.jetbrains.kotlin.gradle.plugin.mpp.HasBinaries import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetType import org.jetbrains.kotlin.gradle.targets.js.binaryen.BinaryenExec +import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer +import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation -interface KotlinWasmTargetDsl : KotlinTarget { +interface KotlinWasmTargetDsl : KotlinTarget, HasBinaries { val wasmTargetType: KotlinWasmTargetType? fun applyBinaryen() = applyBinaryen { } @@ -20,4 +24,8 @@ interface KotlinWasmTargetDsl : KotlinTarget { fn.execute(this) } } + + override val compilations: NamedDomainObjectContainer + + override val binaries: KotlinJsBinaryContainer } \ No newline at end of file