Fix creating of the script definition from legacy template
adding classpath needed to load template and related class to the appropriate host configuration fixes tests
This commit is contained in:
+4
-4
@@ -240,14 +240,14 @@ fun loadDefinitionsFromTemplates(
|
|||||||
// TODO: drop class loading here - it should be handled downstream
|
// TODO: drop class loading here - it should be handled downstream
|
||||||
// as a compatibility measure, the asm based reading of annotations should be implemented to filter classes before classloading
|
// as a compatibility measure, the asm based reading of annotations should be implemented to filter classes before classloading
|
||||||
val template = loader.loadClass(templateClassName).kotlin
|
val template = loader.loadClass(templateClassName).kotlin
|
||||||
|
val hostConfiguration = ScriptingHostConfiguration(baseHostConfiguration) {
|
||||||
|
configurationDependencies(JvmDependency(classpath))
|
||||||
|
}
|
||||||
when {
|
when {
|
||||||
template.annotations.firstIsInstanceOrNull<kotlin.script.templates.ScriptTemplateDefinition>() != null -> {
|
template.annotations.firstIsInstanceOrNull<kotlin.script.templates.ScriptTemplateDefinition>() != null -> {
|
||||||
ScriptDefinition.FromLegacyTemplate(baseHostConfiguration, template, templateClasspath)
|
ScriptDefinition.FromLegacyTemplate(hostConfiguration, template, templateClasspath)
|
||||||
}
|
}
|
||||||
template.annotations.firstIsInstanceOrNull<kotlin.script.experimental.annotations.KotlinScript>() != null -> {
|
template.annotations.firstIsInstanceOrNull<kotlin.script.experimental.annotations.KotlinScript>() != null -> {
|
||||||
val hostConfiguration = ScriptingHostConfiguration(baseHostConfiguration) {
|
|
||||||
configurationDependencies(JvmDependency(classpath))
|
|
||||||
}
|
|
||||||
ScriptDefinition.FromTemplate(hostConfiguration, template, ScriptDefinition::class)
|
ScriptDefinition.FromTemplate(hostConfiguration, template, ScriptDefinition::class)
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
|
|||||||
+1
-1
@@ -104,7 +104,7 @@ class JvmGetScriptingClass : GetScriptingClass, Serializable {
|
|||||||
return try {
|
return try {
|
||||||
(classLoader ?: ClassLoader.getSystemClassLoader()).loadClass(classType.typeName).kotlin
|
(classLoader ?: ClassLoader.getSystemClassLoader()).loadClass(classType.typeName).kotlin
|
||||||
} catch (e: Throwable) {
|
} catch (e: Throwable) {
|
||||||
throw IllegalArgumentException("unable to load class $classType", e)
|
throw IllegalArgumentException("unable to load class ${classType.typeName}", e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+8
-1
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
|||||||
import org.jetbrains.kotlin.cli.common.repl.*
|
import org.jetbrains.kotlin.cli.common.repl.*
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
|
import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.JvmTarget
|
import org.jetbrains.kotlin.config.JvmTarget
|
||||||
@@ -28,6 +29,9 @@ import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
|||||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
||||||
import org.jetbrains.kotlin.scripting.repl.messages.ConsoleDiagnosticMessageHolder
|
import org.jetbrains.kotlin.scripting.repl.messages.ConsoleDiagnosticMessageHolder
|
||||||
import kotlin.concurrent.write
|
import kotlin.concurrent.write
|
||||||
|
import kotlin.script.experimental.host.ScriptingHostConfiguration
|
||||||
|
import kotlin.script.experimental.host.configurationDependencies
|
||||||
|
import kotlin.script.experimental.jvm.JvmDependency
|
||||||
import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration
|
import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration
|
||||||
|
|
||||||
const val KOTLIN_REPL_JVM_TARGET_PROPERTY = "kotlin.repl.jvm.target"
|
const val KOTLIN_REPL_JVM_TARGET_PROPERTY = "kotlin.repl.jvm.target"
|
||||||
@@ -41,7 +45,10 @@ open class GenericReplChecker(
|
|||||||
|
|
||||||
internal val environment = run {
|
internal val environment = run {
|
||||||
compilerConfiguration.apply {
|
compilerConfiguration.apply {
|
||||||
add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, ScriptDefinition.FromLegacy(defaultJvmScriptingHostConfiguration, scriptDefinition))
|
val hostConfiguration = ScriptingHostConfiguration(defaultJvmScriptingHostConfiguration) {
|
||||||
|
configurationDependencies(JvmDependency(jvmClasspathRoots))
|
||||||
|
}
|
||||||
|
add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, ScriptDefinition.FromLegacy(hostConfiguration, scriptDefinition))
|
||||||
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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user