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
This commit is contained in:
Pavel V. Talanov
2016-07-28 19:48:56 +03:00
committed by Ilya Chernikov
parent 45ed340444
commit 464445c260
3 changed files with 10 additions and 6 deletions
@@ -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),
@@ -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<IdeaModul
val librariesInfos = ideaLibraries.map { LibraryInfo(project, it) }
val ideaSdks = ideaModules.flatMap {
val sdksFromModulesDependencies = ideaModules.flatMap {
ModuleRootManager.getInstance(it).orderEntries.filterIsInstance<JdkOrderEntry>().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<Sdk> {
return ProjectJdkTable.getInstance().allJdks.toList()
}
interface ModuleResolverProvider {
val resolverForProject: ResolverForProject<IdeaModuleInfo>
val builtIns: KotlinBuiltIns
@@ -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 }