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:
committed by
Ilya Chernikov
parent
45ed340444
commit
464445c260
-1
@@ -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),
|
||||
|
||||
+9
-3
@@ -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
|
||||
|
||||
+1
-2
@@ -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 }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user