From f6b094781fe7c2c4f7d5235d5682e8b4e56e5d4b Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Thu, 10 May 2018 15:08:54 +0200 Subject: [PATCH] Mpp resolve: ignore module dependencies on libraries of other platforms These are not read by the compiler Untested: test infrastructure needed #KT-20406 Fixed --- .../kotlin/idea/caches/project/IdeaModuleInfos.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/IdeaModuleInfos.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/IdeaModuleInfos.kt index 282c74d4d0f..4b9aaf0fbfc 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/IdeaModuleInfos.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/IdeaModuleInfos.kt @@ -103,7 +103,11 @@ private fun OrderEntry.acceptAsDependency(forProduction: Boolean): Boolean { || scope.isForProductionCompile } -private fun ideaModelDependencies(module: Module, forProduction: Boolean): List { +private fun ideaModelDependencies( + module: Module, + forProduction: Boolean, + platform: TargetPlatform +): List { //NOTE: lib dependencies can be processed several times during recursive traversal val result = LinkedHashSet() 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 { @@ -158,7 +162,7 @@ sealed class ModuleSourceInfoWithExpectedBy(private val forProduction: Boolean) override fun dependencies(): List = module.cached(createCachedValueProvider { CachedValueProvider.Result( - ideaModelDependencies(module, forProduction), + ideaModelDependencies(module, forProduction, platform), ProjectRootModificationTracker.getInstance(module.project) ) })