Use correct classpath for Ide Scripting Console files during highlighting
KT-25606
This commit is contained in:
+18
-18
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.core.script
|
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.projectView.impl.ProjectRootsUtil.isInTestSource
|
||||||
import com.intellij.ide.scratch.ScratchFileService
|
import com.intellij.ide.scratch.ScratchFileService
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
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.idea.util.ProjectRootsUtil.isInContent
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.script.*
|
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.KotlinScriptDefinitionAdapterFromNewAPI
|
||||||
|
import org.jetbrains.kotlin.scripting.compiler.plugin.KotlinScriptDefinitionAdapterFromNewAPIBase
|
||||||
import org.jetbrains.kotlin.utils.PathUtil
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.flattenTo
|
import org.jetbrains.kotlin.utils.addToStdlib.flattenTo
|
||||||
@@ -49,12 +51,12 @@ import kotlin.concurrent.write
|
|||||||
import kotlin.script.dependencies.Environment
|
import kotlin.script.dependencies.Environment
|
||||||
import kotlin.script.dependencies.ScriptContents
|
import kotlin.script.dependencies.ScriptContents
|
||||||
import kotlin.script.experimental.api.KotlinType
|
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.DependenciesResolver
|
||||||
import kotlin.script.experimental.dependencies.ScriptDependencies
|
import kotlin.script.experimental.dependencies.ScriptDependencies
|
||||||
import kotlin.script.experimental.dependencies.asSuccess
|
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.JvmDependency
|
||||||
import kotlin.script.experimental.jvm.defaultJvmScriptingEnvironment
|
import kotlin.script.experimental.jvm.defaultJvmScriptingEnvironment
|
||||||
import kotlin.script.experimental.location.ScriptExpectedLocation
|
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 virtualFile = scriptContents.file?.let { VfsUtil.findFileByIoFile(it, true) }
|
||||||
|
|
||||||
val javaHome = getScriptSDK(project, virtualFile)
|
val javaHome = getScriptSDK(project, virtualFile)
|
||||||
val dependencies = ScriptDependencies(
|
|
||||||
javaHome = javaHome?.let(::File),
|
var classpath = with(PathUtil.kotlinPathsForIdeaPlugin) {
|
||||||
classpath = with(PathUtil.kotlinPathsForIdeaPlugin) {
|
listOf(reflectPath, stdlibPath, scriptRuntimePath)
|
||||||
listOf(
|
}
|
||||||
reflectPath,
|
if (ScratchFileService.getInstance().getRootType(virtualFile) is IdeConsoleRootType) {
|
||||||
stdlibPath,
|
classpath = scriptCompilationClasspathFromContextOrStlib(wholeClasspath = true) + classpath
|
||||||
scriptRuntimePath
|
}
|
||||||
)
|
|
||||||
}
|
return ScriptDependencies(javaHome = javaHome?.let(::File), classpath = classpath).asSuccess()
|
||||||
)
|
|
||||||
return dependencies.asSuccess()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getScriptSDK(project: Project, virtualFile: VirtualFile?): String? {
|
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
|
val jdk = ProjectRootManager.getInstance(project).projectSdk
|
||||||
?: ProjectJdkTable.getInstance().allJdks.firstOrNull { sdk -> sdk.sdkType is JavaSdk }
|
?: ProjectJdkTable.getInstance().allJdks.firstOrNull { sdk -> sdk.sdkType is JavaSdk }
|
||||||
?: PathUtilEx.getAnyJdk(project)
|
?: PathUtilEx.getAnyJdk(project)
|
||||||
return jdk?.homePath
|
return jdk?.homePath
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user