Mpp resolve: ignore module dependencies on libraries of other platforms

These are not read by the compiler

Untested: test infrastructure needed

 #KT-20406 Fixed
This commit is contained in:
Pavel V. Talanov
2018-05-10 15:08:54 +02:00
parent 24e477c378
commit f6b094781f
@@ -103,7 +103,11 @@ private fun OrderEntry.acceptAsDependency(forProduction: Boolean): Boolean {
|| scope.isForProductionCompile
}
private fun ideaModelDependencies(module: Module, forProduction: Boolean): List<IdeaModuleInfo> {
private fun ideaModelDependencies(
module: Module,
forProduction: Boolean,
platform: TargetPlatform
): List<IdeaModuleInfo> {
//NOTE: lib dependencies can be processed several times during recursive traversal
val result = LinkedHashSet<IdeaModuleInfo>()
val dependencyEnumerator = ModuleRootManager.getInstance(module).orderEntries().compileOnly().recursively().exportedOnly()
@@ -116,7 +120,7 @@ private fun ideaModelDependencies(module: Module, forProduction: Boolean): List<
}
true
}
return result.toList()
return result.filterNot { it is LibraryInfo && it.platform != platform }
}
fun Module.findImplementedModuleNames(modelsProvider: IdeModifiableModelsProvider): List<String> {
@@ -158,7 +162,7 @@ sealed class ModuleSourceInfoWithExpectedBy(private val forProduction: Boolean)
override fun dependencies(): List<IdeaModuleInfo> = module.cached(createCachedValueProvider {
CachedValueProvider.Result(
ideaModelDependencies(module, forProduction),
ideaModelDependencies(module, forProduction, platform),
ProjectRootModificationTracker.getInstance(module.project)
)
})