Fix the way how script SDK is found in IDE

This commit is contained in:
Natalia Selezneva
2018-03-29 10:48:00 +03:00
parent 8d9f539c79
commit 429e0afe2a
4 changed files with 146 additions and 12 deletions
@@ -369,7 +369,7 @@ private class LibrarySourceScope(project: Project, private val library: Library)
}
//TODO: (module refactoring) android sdk has modified scope
private class SdkScope(project: Project, private val sdk: Sdk) :
private class SdkScope(project: Project, val sdk: Sdk) :
LibraryScopeBase(project, sdk.rootProvider.getFiles(OrderRootType.CLASSES), arrayOf<VirtualFile>()) {
override fun equals(other: Any?) = other is SdkScope && sdk == other.sdk
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesManager
import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.script.KotlinScriptDefinition
import java.io.File
import kotlin.script.experimental.dependencies.ScriptDependencies
class ScriptModuleSearchScope(val scriptFile: VirtualFile, baseScope: GlobalSearchScope) : DelegatingGlobalSearchScope(baseScope) {
@@ -61,8 +62,9 @@ fun findJdk(dependencies: ScriptDependencies?, project: Project): Sdk? {
null
}
return allJdks.find { javaHome != null && it.homePath == javaHome } ?: ProjectRootManager.getInstance(project).projectSdk
?: allJdks.firstOrNull()
return allJdks.find { javaHome != null && File(it.homePath).canonicalPath == javaHome }
?: ProjectRootManager.getInstance(project).projectSdk
?: allJdks.firstOrNull()
}
sealed class ScriptDependenciesInfo(val project: Project) : IdeaModuleInfo, BinaryModuleInfo {