diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt index b45894581dc..61ea58c83d0 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt @@ -14,7 +14,6 @@ import com.intellij.psi.search.DelegatingGlobalSearchScope import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.NonClasspathDirectoriesScope import com.intellij.util.containers.SLRUCache -import org.jetbrains.kotlin.idea.caches.resolve.getAllProjectSdks import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesManager import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope import org.jetbrains.kotlin.name.Name 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 c44b29b7b0e..cb7ef495533 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 @@ -5,7 +5,11 @@ 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.* import com.intellij.openapi.util.Key import com.intellij.openapi.vfs.VirtualFile @@ -55,6 +59,39 @@ fun getLibrarySourcesModuleInfos(project: Project, virtualFile: VirtualFile) = virtualFile ) +fun collectAllModuleInfosFromIdeaModel(project: Project): 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 modulesSourcesInfos + librariesInfos + sdksInfos +} + +internal fun getAllProjectSdks(): Collection { + return ProjectJdkTable.getInstance().allJdks.toList() +} + private typealias VirtualFileProcessor = (Project, VirtualFile, Boolean) -> T private sealed class ModuleInfoCollector( diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt index c8006af9c59..000bd9f5f25 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt @@ -17,14 +17,7 @@ package org.jetbrains.kotlin.idea.caches.resolve import com.intellij.openapi.components.ServiceManager -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.analyzer.ModuleContent import org.jetbrains.kotlin.analyzer.ResolverForProject import org.jetbrains.kotlin.analyzer.ResolverForProjectImpl @@ -33,7 +26,10 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.caches.resolve.IdePlatformSupport import org.jetbrains.kotlin.context.GlobalContextImpl import org.jetbrains.kotlin.context.withProject -import org.jetbrains.kotlin.idea.caches.project.* +import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo +import org.jetbrains.kotlin.idea.caches.project.SdkInfo +import org.jetbrains.kotlin.idea.caches.project.getModuleInfo +import org.jetbrains.kotlin.idea.caches.project.getNullableModuleInfo import org.jetbrains.kotlin.idea.compiler.IDELanguageSettingsProvider import org.jetbrains.kotlin.idea.project.IdeaEnvironment import org.jetbrains.kotlin.load.java.structure.JavaClass @@ -107,45 +103,11 @@ fun createModuleResolverProvider( ) } -fun collectAllModuleInfosFromIdeaModel(project: Project): 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 modulesSourcesInfos + librariesInfos + sdksInfos -} - private fun createBuiltIns(settings: PlatformAnalysisSettings, sdkContext: GlobalContextImpl): KotlinBuiltIns { val supportInstance = IdePlatformSupport.platformSupport[settings.platform] ?: return DefaultBuiltIns.Instance return supportInstance.createBuiltIns(settings, sdkContext) } -fun getAllProjectSdks(): Collection { - return ProjectJdkTable.getInstance().allJdks.toList() -} - - class ModuleResolverProvider( val resolverForProject: ResolverForProject, val builtIns: KotlinBuiltIns, diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt index 50faffbec53..816632f863a 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt @@ -27,10 +27,7 @@ import org.jetbrains.kotlin.analyzer.EmptyResolverForProject import org.jetbrains.kotlin.analyzer.ResolverForModule import org.jetbrains.kotlin.context.GlobalContextImpl import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo -import org.jetbrains.kotlin.idea.caches.project.NotUnderContentRootModuleInfo -import org.jetbrains.kotlin.idea.caches.project.getModuleInfo -import org.jetbrains.kotlin.idea.caches.project.getModuleInfos +import org.jetbrains.kotlin.idea.caches.project.* import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.CompositeBindingContext