Use correct classpath for Ide Scripting Console files during highlighting

KT-25606
This commit is contained in:
Natalia Selezneva
2018-08-31 12:31:39 +03:00
parent 2fccf6875f
commit 3979ad7a1d
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.idea.core.script
import com.intellij.execution.console.IdeConsoleRootType
import com.intellij.ide.projectView.impl.ProjectRootsUtil.isInTestSource
import com.intellij.ide.scratch.ScratchFileService
import com.intellij.openapi.application.ApplicationManager
@@ -38,8 +39,9 @@ import org.jetbrains.kotlin.idea.caches.project.getScriptRelatedModuleInfo
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil.isInContent
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.script.*
import org.jetbrains.kotlin.scripting.compiler.plugin.KotlinScriptDefinitionAdapterFromNewAPIBase
import org.jetbrains.kotlin.script.util.scriptCompilationClasspathFromContextOrStlib
import org.jetbrains.kotlin.scripting.compiler.plugin.KotlinScriptDefinitionAdapterFromNewAPI
import org.jetbrains.kotlin.scripting.compiler.plugin.KotlinScriptDefinitionAdapterFromNewAPIBase
import org.jetbrains.kotlin.utils.PathUtil
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
import org.jetbrains.kotlin.utils.addToStdlib.flattenTo
@@ -49,12 +51,12 @@ import kotlin.concurrent.write
import kotlin.script.dependencies.Environment
import kotlin.script.dependencies.ScriptContents
import kotlin.script.experimental.api.KotlinType
import kotlin.script.experimental.host.ScriptingHostConfiguration
import kotlin.script.experimental.host.configurationDependencies
import kotlin.script.experimental.host.createScriptCompilationConfigurationFromAnnotatedBaseClass
import kotlin.script.experimental.dependencies.DependenciesResolver
import kotlin.script.experimental.dependencies.ScriptDependencies
import kotlin.script.experimental.dependencies.asSuccess
import kotlin.script.experimental.host.ScriptingHostConfiguration
import kotlin.script.experimental.host.configurationDependencies
import kotlin.script.experimental.host.createScriptCompilationConfigurationFromAnnotatedBaseClass
import kotlin.script.experimental.jvm.JvmDependency
import kotlin.script.experimental.jvm.defaultJvmScriptingEnvironment
import kotlin.script.experimental.location.ScriptExpectedLocation
@@ -271,17 +273,15 @@ class BundledKotlinScriptDependenciesResolver(private val project: Project) : De
val virtualFile = scriptContents.file?.let { VfsUtil.findFileByIoFile(it, true) }
val javaHome = getScriptSDK(project, virtualFile)
val dependencies = ScriptDependencies(
javaHome = javaHome?.let(::File),
classpath = with(PathUtil.kotlinPathsForIdeaPlugin) {
listOf(
reflectPath,
stdlibPath,
scriptRuntimePath
)
}
)
return dependencies.asSuccess()
var classpath = with(PathUtil.kotlinPathsForIdeaPlugin) {
listOf(reflectPath, stdlibPath, scriptRuntimePath)
}
if (ScratchFileService.getInstance().getRootType(virtualFile) is IdeConsoleRootType) {
classpath = scriptCompilationClasspathFromContextOrStlib(wholeClasspath = true) + classpath
}
return ScriptDependencies(javaHome = javaHome?.let(::File), classpath = classpath).asSuccess()
}
private fun getScriptSDK(project: Project, virtualFile: VirtualFile?): String? {
@@ -294,8 +294,8 @@ class BundledKotlinScriptDependenciesResolver(private val project: Project) : De
}
val jdk = ProjectRootManager.getInstance(project).projectSdk
?: ProjectJdkTable.getInstance().allJdks.firstOrNull { sdk -> sdk.sdkType is JavaSdk }
?: PathUtilEx.getAnyJdk(project)
?: ProjectJdkTable.getInstance().allJdks.firstOrNull { sdk -> sdk.sdkType is JavaSdk }
?: PathUtilEx.getAnyJdk(project)
return jdk?.homePath
}
}
}