From 464445c260dd45540a8f0ec8facc6282dbe60274 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Thu, 28 Jul 2016 19:48:56 +0300 Subject: [PATCH] KotlinCacheServiceImpl: Add all sdks from project sdk table when building facadeForSdk As of now facadeForSdk should contain all sdks that we can possibly reference while resolving including those that scripts depend on More granular approach may be beneficial in the future --- .../idea/caches/resolve/KotlinCacheServiceImpl.kt | 1 - .../idea/caches/resolve/ModuleDependencyMapper.kt | 12 +++++++++--- .../kotlin/idea/caches/resolve/ScriptModuleInfos.kt | 3 +-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt index 8c94cf7c240..93e64fc9e61 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt @@ -117,7 +117,6 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService { "sdk $sdk", platform, sdk, - allModules = sdk?.let { SdkInfo(project, it) }.singletonOrEmptyList(), moduleFilter = { it is SdkInfo }, dependencies = listOf( LibraryModificationTracker.getInstance(project), 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 9af3e5932ea..40c83ed471e 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 @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.idea.caches.resolve 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 @@ -98,18 +99,23 @@ private fun collectAllModuleInfosFromIdeaModel(project: Project): List().map { it.jdk } - }.filterNotNull().toSet() + } - val sdksInfos = ideaSdks.map { SdkInfo(project, it) } + val sdksInfos = (sdksFromModulesDependencies + getAllProjectSdks()).filterNotNull().toSet().map { SdkInfo(project, it) } val collectAllModuleInfos = modulesSourcesInfos + librariesInfos + sdksInfos return collectAllModuleInfos } +fun getAllProjectSdks(): Collection { + return ProjectJdkTable.getInstance().allJdks.toList() +} + + interface ModuleResolverProvider { val resolverForProject: ResolverForProject val builtIns: KotlinBuiltIns diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ScriptModuleInfos.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ScriptModuleInfos.kt index 33156138224..b4aae4f1957 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ScriptModuleInfos.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ScriptModuleInfos.kt @@ -66,8 +66,7 @@ private fun sdkDependencies(scriptDependencies: KotlinScriptExternalDependencies = findJdk(scriptDependencies, project)?.let { SdkInfo(project, it) }.singletonOrEmptyList() fun findJdk(dependencies: KotlinScriptExternalDependencies?, project: Project): Sdk? { - val jdkTable = ProjectJdkTable.getInstance() - val allJdks = jdkTable.allJdks + val allJdks = getAllProjectSdks() // workaround for mismatched gradle wrapper and plugin version val javaHome = try { dependencies?.javaHome } catch (e: Throwable) { null }