Fix default host configuration property - make it not shared:

Shared instance is incorrect here and causes clashes when many
definitions are loaded in the same process.
Also make the diagnostics in case of clashes more verbose.
This commit is contained in:
Ilya Chernikov
2018-10-08 17:39:19 +02:00
parent ac69fa14d5
commit 7fbfad814e
@@ -25,9 +25,10 @@ val JvmScriptingHostConfigurationKeys.javaHome by PropertiesCollection.key<File>
val ScriptingHostConfigurationKeys.jvm
get() = JvmScriptingHostConfigurationBuilder()
val defaultJvmScriptingHostConfiguration = ScriptingHostConfiguration {
getScriptingClass(JvmGetScriptingClass())
}
val defaultJvmScriptingHostConfiguration
get() = ScriptingHostConfiguration {
getScriptingClass(JvmGetScriptingClass())
}
class JvmGetScriptingClass : GetScriptingClass {
@@ -52,7 +53,9 @@ class JvmGetScriptingClass : GetScriptingClass {
if (dependencies == null) {
dependencies = newDeps
} else {
if (newDeps != dependencies) throw IllegalArgumentException("scripting configuration dependencies changed")
if (newDeps != dependencies) throw IllegalArgumentException(
"scripting configuration dependencies changed:\nold: ${dependencies?.joinToString { (it as? JvmDependency)?.classpath.toString() }}\nnew: ${newDeps?.joinToString { (it as? JvmDependency)?.classpath.toString() }}"
)
}
if (!baseClassLoaderIsInitialized) {