Fix configurations chaining in the script compiler
This commit is contained in:
+7
-6
@@ -35,7 +35,6 @@ import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
||||
import org.jetbrains.kotlin.script.util.KotlinJars
|
||||
import java.io.File
|
||||
import java.net.URLClassLoader
|
||||
import kotlin.reflect.KClass
|
||||
import kotlin.script.experimental.api.*
|
||||
import kotlin.script.experimental.dependencies.DependenciesResolver
|
||||
import kotlin.script.experimental.host.getMergedScriptText
|
||||
@@ -82,8 +81,10 @@ class KJVMCompilerImpl : KJVMCompilerProxy {
|
||||
ResultWithDiagnostics.Failure(*messageCollector.diagnostics.toTypedArray(), *diagnostics)
|
||||
|
||||
try {
|
||||
val scriptCompileConfiguration = configurator?.defaultConfiguration?.let { additionalConfiguration.cloneWithNewParent(it) }
|
||||
?: additionalConfiguration
|
||||
var environment: KotlinCoreEnvironment? = null
|
||||
var updatedScriptCompileConfiguration = additionalConfiguration
|
||||
var updatedScriptCompileConfiguration = scriptCompileConfiguration
|
||||
|
||||
fun updateClasspath(classpath: List<File>) {
|
||||
environment!!.updateClasspath(classpath.map(::JvmClasspathRoot))
|
||||
@@ -100,18 +101,18 @@ class KJVMCompilerImpl : KJVMCompilerProxy {
|
||||
val kotlinCompilerConfiguration = org.jetbrains.kotlin.config.CompilerConfiguration().apply {
|
||||
add(
|
||||
JVMConfigurationKeys.SCRIPT_DEFINITIONS,
|
||||
BridgeScriptDefinition(additionalConfiguration, configurator, ::updateClasspath)
|
||||
BridgeScriptDefinition(scriptCompileConfiguration, configurator, ::updateClasspath)
|
||||
)
|
||||
put<MessageCollector>(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
|
||||
put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true)
|
||||
|
||||
var isModularJava = false
|
||||
additionalConfiguration.getOrNull(JvmScriptCompileConfigurationProperties.javaHomeDir)?.let {
|
||||
scriptCompileConfiguration.getOrNull(JvmScriptCompileConfigurationProperties.javaHomeDir)?.let {
|
||||
put(JVMConfigurationKeys.JDK_HOME, it)
|
||||
isModularJava = CoreJrtFileSystem.isModularJdk(it)
|
||||
}
|
||||
|
||||
additionalConfiguration.getOrNull(ScriptCompileConfigurationProperties.dependencies)?.let {
|
||||
scriptCompileConfiguration.getOrNull(ScriptCompileConfigurationProperties.dependencies)?.let {
|
||||
addJvmClasspathRoots(
|
||||
it.flatMap {
|
||||
(it as JvmDependency).classpath
|
||||
@@ -143,7 +144,7 @@ class KJVMCompilerImpl : KJVMCompilerProxy {
|
||||
val analyzerWithCompilerReport = AnalyzerWithCompilerReport(messageCollector, environment.configuration.languageVersionSettings)
|
||||
|
||||
val psiFileFactory: PsiFileFactoryImpl = PsiFileFactory.getInstance(environment.project) as PsiFileFactoryImpl
|
||||
val scriptText = getMergedScriptText(script, additionalConfiguration)
|
||||
val scriptText = getMergedScriptText(script, scriptCompileConfiguration)
|
||||
val scriptFileName = "script" // TODO: extract from file/url if available
|
||||
val virtualFile = LightVirtualFile(
|
||||
"$scriptFileName${KotlinParserDefinition.STD_SCRIPT_EXT}",
|
||||
|
||||
Reference in New Issue
Block a user