From 406a3888c7355d26101d9033cb159ca58424158f Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Fri, 27 Apr 2018 16:56:21 +0200 Subject: [PATCH] Minor: split getModuleInfo into separate files --- .../idea/caches/project/getModuleInfo.kt | 57 ---------------- .../project/moduleInfosFromIdeaModel.kt | 68 +++++++++++++++++++ 2 files changed, 68 insertions(+), 57 deletions(-) create mode 100644 idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/moduleInfosFromIdeaModel.kt diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/getModuleInfo.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/getModuleInfo.kt index 0551df2d446..58f269a5374 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/getModuleInfo.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/getModuleInfo.kt @@ -6,11 +6,8 @@ package org.jetbrains.kotlin.idea.caches.project import com.intellij.ide.scratch.ScratchFileService -import com.intellij.openapi.module.Module import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.project.Project -import com.intellij.openapi.projectRoots.ProjectJdkTable -import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.roots.* import com.intellij.openapi.util.Key import com.intellij.openapi.vfs.VirtualFile @@ -29,7 +26,6 @@ import org.jetbrains.kotlin.idea.util.isInSourceContentWithoutInjected import org.jetbrains.kotlin.idea.util.isKotlinBinary import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getParentOfType -import org.jetbrains.kotlin.resolve.TargetPlatform import org.jetbrains.kotlin.script.getScriptDefinition import org.jetbrains.kotlin.utils.addIfNotNull import org.jetbrains.kotlin.utils.sure @@ -63,55 +59,6 @@ fun getLibrarySourcesModuleInfos(project: Project, virtualFile: VirtualFile) = virtualFile ) -fun collectAllModuleInfosFromIdeaModel(project: Project, platform: TargetPlatform): List { - val ideaModules = ModuleManager.getInstance(project).modules.toList() - val modulesSourcesInfos = ideaModules.flatMap(Module::correspondingModuleInfos) - - //TODO: (module refactoring) include libraries that are not among dependencies of any module - val ideaLibraries = ideaModules.flatMap { - ModuleRootManager.getInstance(it).orderEntries.filterIsInstance().map { - it.library - } - }.filterNotNull().toSet() - - val librariesInfos = ideaLibraries.map { LibraryInfo(project, it) } - - val sdksFromModulesDependencies = ideaModules.flatMap { - ModuleRootManager.getInstance(it).orderEntries.filterIsInstance().map { - it.jdk - } - } - - val sdksInfos = (sdksFromModulesDependencies + getAllProjectSdks()).filterNotNull().toSet().map { - SdkInfo( - project, - it - ) - } - - return mergePlatformModules(modulesSourcesInfos, platform) + librariesInfos + sdksInfos -} - -private fun mergePlatformModules( - allModules: List, - platform: TargetPlatform -): List { - if (platform == TargetPlatform.Common) return allModules - - val platformModules = - allModules.flatMap { module -> - if (module is ModuleSourceInfo && module.platform == platform && module.expectedBy.isNotEmpty()) - listOf(module to module.expectedBy) - else emptyList() - }.map { (module, expectedBys) -> - PlatformModuleInfo(module, expectedBys) - } - - val rest = allModules - platformModules.flatMap { it.containedModules } - return rest + platformModules -} - - fun getScriptRelatedModuleInfo(project: Project, virtualFile: VirtualFile): ModuleSourceInfo? { val projectFileIndex = ProjectFileIndex.SERVICE.getInstance(project) @@ -128,10 +75,6 @@ fun getScriptRelatedModuleInfo(project: Project, virtualFile: VirtualFile): Modu return null } -internal fun getAllProjectSdks(): Collection { - return ProjectJdkTable.getInstance().allJdks.toList() -} - private typealias VirtualFileProcessor = (Project, VirtualFile, Boolean, Boolean) -> T private sealed class ModuleInfoCollector( diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/moduleInfosFromIdeaModel.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/moduleInfosFromIdeaModel.kt new file mode 100644 index 00000000000..9d3a1993c4c --- /dev/null +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/moduleInfosFromIdeaModel.kt @@ -0,0 +1,68 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.caches.project + +import com.intellij.openapi.module.Module +import com.intellij.openapi.module.ModuleManager +import com.intellij.openapi.project.Project +import com.intellij.openapi.projectRoots.ProjectJdkTable +import com.intellij.openapi.projectRoots.Sdk +import com.intellij.openapi.roots.JdkOrderEntry +import com.intellij.openapi.roots.LibraryOrderEntry +import com.intellij.openapi.roots.ModuleRootManager +import org.jetbrains.kotlin.resolve.TargetPlatform + +fun collectAllModuleInfosFromIdeaModel(project: Project, platform: TargetPlatform): List { + val ideaModules = ModuleManager.getInstance(project).modules.toList() + val modulesSourcesInfos = ideaModules.flatMap(Module::correspondingModuleInfos) + + //TODO: (module refactoring) include libraries that are not among dependencies of any module + val ideaLibraries = ideaModules.flatMap { + ModuleRootManager.getInstance(it).orderEntries.filterIsInstance().map { + it.library + } + }.filterNotNull().toSet() + + val librariesInfos = ideaLibraries.map { LibraryInfo(project, it) } + + val sdksFromModulesDependencies = ideaModules.flatMap { + ModuleRootManager.getInstance(it).orderEntries.filterIsInstance().map { + it.jdk + } + } + + val sdksInfos = (sdksFromModulesDependencies + getAllProjectSdks()).filterNotNull().toSet().map { + SdkInfo( + project, + it + ) + } + + return mergePlatformModules(modulesSourcesInfos, platform) + librariesInfos + sdksInfos +} + +private fun mergePlatformModules( + allModules: List, + platform: TargetPlatform +): List { + if (platform == TargetPlatform.Common) return allModules + + val platformModules = + allModules.flatMap { module -> + if (module is ModuleSourceInfo && module.platform == platform && module.expectedBy.isNotEmpty()) + listOf(module to module.expectedBy) + else emptyList() + }.map { (module, expectedBys) -> + PlatformModuleInfo(module, expectedBys) + } + + val rest = allModules - platformModules.flatMap { it.containedModules } + return rest + platformModules +} + +internal fun getAllProjectSdks(): Collection { + return ProjectJdkTable.getInstance().allJdks.toList() +} \ No newline at end of file