Fixed resolution of dependencies on js libraries compiled in both mode

#KT-39213 Fixed
This commit is contained in:
Andrey Uskov
2020-06-01 23:51:38 +03:00
committed by Ilya Goncharov
parent e41b5fc1c6
commit 44f16eac2e
5 changed files with 20 additions and 2 deletions
@@ -369,8 +369,9 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
targetClass.getMethodOrNull("getUseDisambiguitionClassifierAsSourcesetNamePreffix")?.invoke(gradleTarget) as? Boolean ?: true targetClass.getMethodOrNull("getUseDisambiguitionClassifierAsSourcesetNamePreffix")?.invoke(gradleTarget) as? Boolean ?: true
val disambiguationClassifier = if (useDisambiguationClassifier) val disambiguationClassifier = if (useDisambiguationClassifier)
getDisambiguationClassifier(gradleTarget) as? String getDisambiguationClassifier(gradleTarget) as? String
else else {
null targetClass.getMethodOrNull("getOverrideDisambiguitionClassifierOnIdeImport")?.invoke(gradleTarget) as? String
}
val getPreset = targetClass.getMethodOrNull("getPreset") val getPreset = targetClass.getMethodOrNull("getPreset")
val targetPresetName: String? val targetPresetName: String?
targetPresetName = try { targetPresetName = try {
@@ -29,6 +29,7 @@ interface KotlinTarget : Named, HasAttributes {
val targetName: String val targetName: String
val disambiguationClassifier: String? get() = targetName val disambiguationClassifier: String? get() = targetName
val useDisambiguitionClassifierAsSourcesetNamePreffix: Boolean val useDisambiguitionClassifierAsSourcesetNamePreffix: Boolean
val overrideDisambiguitionClassifierOnIdeImport: String?
val platformType: KotlinPlatformType val platformType: KotlinPlatformType
@@ -24,6 +24,8 @@ abstract class KotlinOnlyTargetPreset<R : KotlinOnlyTarget<T>, T : KotlinCompila
// This function is used in IDE import in order to indicate that sourceSetName=disambiguitionClassifier+compilationName // This function is used in IDE import in order to indicate that sourceSetName=disambiguitionClassifier+compilationName
protected open fun useDisambiguitionClassifierAsSourcesetNamePreffix() = true protected open fun useDisambiguitionClassifierAsSourcesetNamePreffix() = true
protected open fun overrideDisambiguitionClassifierOnIdeImport(): String? = null
abstract protected fun instantiateTarget(name: String): R abstract protected fun instantiateTarget(name: String): R
override fun createTarget(name: String): R { override fun createTarget(name: String): R {
@@ -31,6 +33,7 @@ abstract class KotlinOnlyTargetPreset<R : KotlinOnlyTarget<T>, T : KotlinCompila
targetName = name targetName = name
disambiguationClassifier = provideTargetDisambiguationClassifier(this@apply) disambiguationClassifier = provideTargetDisambiguationClassifier(this@apply)
useDisambiguitionClassifierAsSourcesetNamePreffix = useDisambiguitionClassifierAsSourcesetNamePreffix() useDisambiguitionClassifierAsSourcesetNamePreffix = useDisambiguitionClassifierAsSourcesetNamePreffix()
overrideDisambiguitionClassifierOnIdeImport = overrideDisambiguitionClassifierOnIdeImport()
preset = this@KotlinOnlyTargetPreset preset = this@KotlinOnlyTargetPreset
val compilationFactory = createCompilationFactory(this) val compilationFactory = createCompilationFactory(this)
@@ -46,6 +46,9 @@ abstract class AbstractKotlinTarget(
override var useDisambiguitionClassifierAsSourcesetNamePreffix: Boolean = true override var useDisambiguitionClassifierAsSourcesetNamePreffix: Boolean = true
internal set internal set
override var overrideDisambiguitionClassifierOnIdeImport: String? = null
internal set
override val apiElementsConfigurationName: String override val apiElementsConfigurationName: String
get() = disambiguateName("apiElements") get() = disambiguateName("apiElements")
@@ -33,6 +33,16 @@ open class KotlinJsTargetPreset(
override fun useDisambiguitionClassifierAsSourcesetNamePreffix() = false 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 { override fun instantiateTarget(name: String): KotlinJsTarget {
return project.objects.newInstance( return project.objects.newInstance(
KotlinJsTarget::class.java, KotlinJsTarget::class.java,