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 || 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 //NOTE: lib dependencies can be processed several times during recursive traversal
val result = LinkedHashSet<IdeaModuleInfo>() val result = LinkedHashSet<IdeaModuleInfo>()
val dependencyEnumerator = ModuleRootManager.getInstance(module).orderEntries().compileOnly().recursively().exportedOnly() val dependencyEnumerator = ModuleRootManager.getInstance(module).orderEntries().compileOnly().recursively().exportedOnly()
@@ -116,7 +120,7 @@ private fun ideaModelDependencies(module: Module, forProduction: Boolean): List<
} }
true true
} }
return result.toList() return result.filterNot { it is LibraryInfo && it.platform != platform }
} }
fun Module.findImplementedModuleNames(modelsProvider: IdeModifiableModelsProvider): List<String> { 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 { override fun dependencies(): List<IdeaModuleInfo> = module.cached(createCachedValueProvider {
CachedValueProvider.Result( CachedValueProvider.Result(
ideaModelDependencies(module, forProduction), ideaModelDependencies(module, forProduction, platform),
ProjectRootModificationTracker.getInstance(module.project) ProjectRootModificationTracker.getInstance(module.project)
) )
}) })