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