diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt index 5acb440fea9..c1617da516d 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt @@ -369,8 +369,9 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { targetClass.getMethodOrNull("getUseDisambiguitionClassifierAsSourcesetNamePreffix")?.invoke(gradleTarget) as? Boolean ?: true val disambiguationClassifier = if (useDisambiguationClassifier) getDisambiguationClassifier(gradleTarget) as? String - else - null + else { + targetClass.getMethodOrNull("getOverrideDisambiguitionClassifierOnIdeImport")?.invoke(gradleTarget) as? String + } 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 c1f769a09e7..406671b2125 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 @@ -29,6 +29,7 @@ interface KotlinTarget : Named, HasAttributes { val targetName: String val disambiguationClassifier: String? get() = targetName val useDisambiguitionClassifierAsSourcesetNamePreffix: Boolean + val overrideDisambiguitionClassifierOnIdeImport: String? 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 52bfe15b023..b04ecb60d53 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 @@ -24,6 +24,8 @@ abstract class KotlinOnlyTargetPreset, T : KotlinCompila // This function is used in IDE import in order to indicate that sourceSetName=disambiguitionClassifier+compilationName protected open fun useDisambiguitionClassifierAsSourcesetNamePreffix() = true + protected open fun overrideDisambiguitionClassifierOnIdeImport(): String? = null + abstract protected fun instantiateTarget(name: String): R override fun createTarget(name: String): R { @@ -31,6 +33,7 @@ abstract class KotlinOnlyTargetPreset, T : KotlinCompila targetName = name disambiguationClassifier = provideTargetDisambiguationClassifier(this@apply) useDisambiguitionClassifierAsSourcesetNamePreffix = useDisambiguitionClassifierAsSourcesetNamePreffix() + overrideDisambiguitionClassifierOnIdeImport = overrideDisambiguitionClassifierOnIdeImport() 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 ea7cfc3fb51..20477eca30b 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 @@ -46,6 +46,9 @@ abstract class AbstractKotlinTarget( override var useDisambiguitionClassifierAsSourcesetNamePreffix: Boolean = true internal set + override var overrideDisambiguitionClassifierOnIdeImport: String? = null + 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 434e9075bef..3ed200c184f 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 @@ -33,6 +33,16 @@ open class KotlinJsTargetPreset( override fun useDisambiguitionClassifierAsSourcesetNamePreffix() = false + override fun overrideDisambiguitionClassifierOnIdeImport(): String? = if (isMpp) { + irPreset?.let { + name.removeJsCompilerSuffix(KotlinJsCompilerType.LEGACY) + .removeJsCompilerSuffix(KotlinJsCompilerType.IR) + .removeJsCompilerSuffix(KotlinJsCompilerType.BOTH) + } + } else { + null + } + override fun instantiateTarget(name: String): KotlinJsTarget { return project.objects.newInstance( KotlinJsTarget::class.java,