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 e617c738cd5..e4eda8903e0 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 @@ -337,13 +337,14 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() { } } } - val sourceSetGraph = GraphBuilder.directed().build() + val sourceSetGraph = GraphBuilder.directed().build() processSourceSets(gradleModule, mppModel, ideModule, resolverCtx) { dataNode, sourceSet -> - dataNode.data.productionModuleId?.let { - val productionModuleDataNode = ideModule.findChildModuleByInternalName(it) - if (productionModuleDataNode != null) { - addDependency(dataNode, productionModuleDataNode) - } + val productionSourceSet = dataNode.data.productionModuleId + ?.let { ideModule.findChildModuleByInternalName(it) } + ?.kotlinSourceSet + ?.kotlinModule + if (productionSourceSet != null) { + sourceSetGraph.putEdge(sourceSet, productionSourceSet!!) } for (targetSourceSetName in sourceSet.dependsOnSourceSets) { val targetSourceSet = mppModel.sourceSets[targetSourceSetName] ?: continue @@ -358,6 +359,16 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() { preprocessDependencies(sourceSet, ideProject), ideProject ) + if (productionSourceSet != null) { + buildDependencies( + resolverCtx, + sourceSetMap, + artifactsMap, + dataNode, + preprocessDependencies(productionSourceSet, ideProject), + ideProject + ) + } } } for (edge in Graphs.transitiveClosure(sourceSetGraph).edges()) { diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/dataNodeUtils.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/dataNodeUtils.kt index a6abf5fbd10..5922f96da36 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/dataNodeUtils.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/dataNodeUtils.kt @@ -14,4 +14,4 @@ fun DataNode<*>.findChildModuleById(id: String) = @Suppress("UNCHECKED_CAST") fun DataNode<*>.findChildModuleByInternalName(name: String) = - children.firstOrNull { (it.data as? ModuleData)?.internalName == name } \ No newline at end of file + children.firstOrNull { (it.data as? ModuleData)?.internalName == name } as? DataNode \ No newline at end of file