Fix configurations chaining in the script compiler

This commit is contained in:
Ilya Chernikov
2018-07-06 14:29:35 +02:00
parent 92d4d986c8
commit 5d597eb382
@@ -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}",