diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargets.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargets.kt index 588d2dd5cf6..2beef26cf44 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargets.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargets.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ package org.jetbrains.kotlin.gradle.plugin.mpp @@ -180,8 +180,7 @@ abstract class AbstractKotlinTarget( return result } - // TODO[Ilya Goncharov] fix internal on public when we remove legacy js - internal fun createUsageContexts( + internal open fun createUsageContexts( producingCompilation: KotlinCompilation<*> ): Set { // Here, the Java Usage values are used intentionally as Gradle needs this for 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 a9e5c3b723c..bf4658a3047 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 @@ -80,6 +80,16 @@ constructor( } } + override fun createUsageContexts(producingCompilation: KotlinCompilation<*>): Set { + return super.createUsageContexts(producingCompilation) + + DefaultKotlinUsageContext( + compilation = compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME), + usage = project.usageByName("java-api-jars"), + dependencyConfigurationName = apiElementsConfigurationName, + overrideConfigurationArtifacts = emptySet() + ) + } + override fun createKotlinVariant( componentName: String, compilation: KotlinCompilation<*>, @@ -99,6 +109,10 @@ constructor( .get() var irTarget: KotlinJsIrTarget? = null + internal set + + open var isMpp: Boolean? = null + internal set val testTaskName get() = testRuns.getByName(KotlinTargetWithTests.DEFAULT_TEST_RUN_NAME).testTaskName val testTask: TaskProvider diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetPreset.kt index 4800deff5e0..f2656c01fcf 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetPreset.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -25,6 +25,9 @@ open class KotlinJsTargetPreset( var irPreset: KotlinJsIrTargetPreset? = null internal set + open val isMpp: Boolean + get() = true + override val platformType: KotlinPlatformType get() = KotlinPlatformType.js @@ -40,6 +43,7 @@ open class KotlinJsTargetPreset( KotlinJsCompilerType.IR.lowerName ) ) + this.isMpp = this@KotlinJsTargetPreset.isMpp project.whenEvaluated { if (!isBrowserConfigured && !isNodejsConfigured) { @@ -88,6 +92,8 @@ class KotlinJsSingleTargetPreset( project, kotlinPluginVersion ) { + override val isMpp: Boolean + get() = false override fun useDisambiguitionClassifierAsSourcesetNamePreffix() = false 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 560e14358ac..4eb707820db 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 @@ -36,6 +36,9 @@ constructor( override lateinit var testRuns: NamedDomainObjectContainer internal set + open var isMpp: Boolean? = null + internal set + override var moduleName: String? = null set(value) { check(!isBrowserConfigured && !isNodejsConfigured) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTargetPreset.kt index 02445096ecd..c5e5be08664 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTargetPreset.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -21,11 +21,15 @@ open class KotlinJsIrTargetPreset( ) { internal var mixedMode: Boolean? = null + open val isMpp: Boolean + get() = true + override val platformType: KotlinPlatformType get() = KotlinPlatformType.js override fun instantiateTarget(name: String): KotlinJsIrTarget { return project.objects.newInstance(KotlinJsIrTarget::class.java, project, platformType, mixedMode).apply { + this.isMpp = this@KotlinJsIrTargetPreset.isMpp if (!mixedMode) { project.whenEvaluated { if (!isBrowserConfigured && !isNodejsConfigured) { @@ -74,6 +78,9 @@ class KotlinJsIrSingleTargetPreset( project, kotlinPluginVersion ) { + override val isMpp: Boolean + get() = false + // In a Kotlin/JS single-platform project, we don't need any disambiguation suffixes or prefixes in the names: override fun provideTargetDisambiguationClassifier(target: KotlinOnlyTarget): String? { return if (mixedMode!!) {