diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt index b33c15740fa..1d764349c29 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt @@ -354,7 +354,12 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { val getDisambiguationClassifier = targetClass.getMethodOrNull("getDisambiguationClassifier") ?: return null val platformId = (getPlatformType.invoke(gradleTarget) as? Named)?.name ?: return null val platform = KotlinPlatform.byId(platformId) ?: return null - val disambiguationClassifier = getDisambiguationClassifier(gradleTarget) as? String + val useDisambiguationClassifier = + targetClass.getMethodOrNull("getUseDisambiguitionClassifierAsSourcesetNamePreffix")?.invoke(gradleTarget) as? Boolean ?: true + val disambiguationClassifier = if (useDisambiguationClassifier) + getDisambiguationClassifier(gradleTarget) as? String + else + null val getPreset = targetClass.getMethodOrNull("getPreset") val targetPresetName: String? targetPresetName = try { diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt index a306319e95d..c1f769a09e7 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt @@ -28,6 +28,7 @@ interface KotlinTargetComponent : SoftwareComponent { interface KotlinTarget : Named, HasAttributes { val targetName: String val disambiguationClassifier: String? get() = targetName + val useDisambiguitionClassifierAsSourcesetNamePreffix: Boolean val platformType: KotlinPlatformType diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt index a600bdbd24e..52bfe15b023 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargetPresets.kt @@ -21,12 +21,16 @@ abstract class KotlinOnlyTargetPreset, T : KotlinCompila protected open fun provideTargetDisambiguationClassifier(target: KotlinOnlyTarget): String? = target.targetName + // This function is used in IDE import in order to indicate that sourceSetName=disambiguitionClassifier+compilationName + protected open fun useDisambiguitionClassifierAsSourcesetNamePreffix() = true + abstract protected fun instantiateTarget(name: String): R override fun createTarget(name: String): R { val result = instantiateTarget(name).apply { targetName = name disambiguationClassifier = provideTargetDisambiguationClassifier(this@apply) + useDisambiguitionClassifierAsSourcesetNamePreffix = useDisambiguitionClassifierAsSourcesetNamePreffix() preset = this@KotlinOnlyTargetPreset val compilationFactory = createCompilationFactory(this) 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 bcdf009b2b0..588d2dd5cf6 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 @@ -44,6 +44,9 @@ abstract class AbstractKotlinTarget( override val defaultConfigurationName: String get() = disambiguateName("default") + override var useDisambiguitionClassifierAsSourcesetNamePreffix: Boolean = true + internal set + override val apiElementsConfigurationName: String get() = disambiguateName("apiElements") 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 f4473a97fb5..4800deff5e0 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 @@ -88,6 +88,9 @@ class KotlinJsSingleTargetPreset( project, kotlinPluginVersion ) { + + override fun useDisambiguitionClassifierAsSourcesetNamePreffix() = 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? = irPreset?.let {