From 23a45ae6896c4c9043eccb55f49df07083be1bd8 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Sun, 28 Sep 2014 13:42:10 +0400 Subject: [PATCH] Provide heuristic dependencies for LibraryInfo This is not and cannot be (with current IDEA model) accurate For now we use the following approximation: If a module dependends on library 'a' and among module's dependencies (including this module) there is a module that depends on library 'b' then we assume that library 'a' depends on library 'b' --- .../jet/plugin/caches/resolve/IdeaModuleInfos.kt | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/IdeaModuleInfos.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/IdeaModuleInfos.kt index ec46b88291a..fba26f93f64 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/IdeaModuleInfos.kt +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/IdeaModuleInfos.kt @@ -133,12 +133,15 @@ public data class LibraryInfo(val project: Project, val library: Library) : Idea override fun contentScope() = LibraryWithoutSourceScope(project, library) override fun dependencies(): List { - //TODO: (module refactoring) heuristic dependencies for libraries - val orderEntry = ModuleManager.getInstance(project).getModules().stream().flatMap { - ModuleRootManager.getInstance(it).getOrderEntries().stream() - }.firstOrNull { it is JdkOrderEntry } as? JdkOrderEntry - val sdk = orderEntry?.getJdk() - return if (sdk != null) listOf(SdkInfo(project, sdk), this) else listOf(this) + val result = LinkedHashSet() + result.add(this) + + val (libraries, sdks) = LibraryDependenciesCache(project).getLibrariesAndSdksUsedWith(library) + + sdks.mapTo(result) { SdkInfo(project, it) } + libraries.mapTo(result) { LibraryInfo(project, it) } + + return result.toList() } }