diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt index 3f0d4db26f1..fc0738c55f8 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt @@ -144,23 +144,27 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() { // processing case when one artifact could be produced by several (actualized!)source sets if (mppArtifacts.isNotEmpty() && resolverCtx.isResolveModulePerSourceSet) { val externalProject = resolverCtx.getExtraProject(gradleModule, ExternalProject::class.java) - val artifactToDependency = HashMap() + + //Note! Should not use MultiValuesMap as it contains Set of values, but we need comparision === instead of == + val artifactToDependency = HashMap>() externalProject?.sourceSets?.values?.forEach { sourceSet -> sourceSet.dependencies.forEach { dependency -> dependency.getDependencyArtifacts().map { toCanonicalPath(it.absolutePath) } - .filter { mppArtifacts.keys.contains(it) }.forEach { - artifactToDependency[it] = dependency + .filter { mppArtifacts.keys.contains(it) }.forEach {filePath -> + (artifactToDependency[filePath] ?: ArrayList().also { newCollection -> + artifactToDependency[filePath] = newCollection + }).add(dependency) } } } // create 'fake' dependency artifact files and put them into dependency substitution map mppArtifacts.forEach { (k, v) -> - artifactToDependency[k]?.apply { + artifactToDependency[k]?.forEach { externalDependency -> for ((index, module) in v.withIndex()) { val fakeArtifact = "$k-MPP-$index" configArtifacts[fakeArtifact] = module - this.addDependencyArtifactInternal(File(fakeArtifact)) + externalDependency.addDependencyArtifactInternal(File(fakeArtifact)) } } } diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/NewMultiplatformProjectImportingTest.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/NewMultiplatformProjectImportingTest.kt index 7e56f0ac288..da1ebe0dc47 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/NewMultiplatformProjectImportingTest.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/NewMultiplatformProjectImportingTest.kt @@ -586,7 +586,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin checkProjectStructure(false, false, false ) { module("project.javaModule.test") { moduleDependency("project.mppModule.jvmTest", DependencyScope.TEST, true) - moduleDependency("project.mppModule.jvmMain", DependencyScope.TEST, false) + moduleDependency("project.mppModule.jvmMain", DependencyScope.COMPILE, false) } } }