Fix classloaders order on script evaluation
the dependencies one should be a parent for the modules one, to avoid incompatibility problems. Also fixes main-kts tests
This commit is contained in:
+4
-5
@@ -104,11 +104,10 @@ fun KJvmCompiledScript<*>.getOrCreateActualClassloader(evaluationConfiguration:
|
|||||||
val module = compiledModule
|
val module = compiledModule
|
||||||
?: throw IllegalStateException("Illegal call sequence, actualClassloader should be set before calling function on the class without module")
|
?: throw IllegalStateException("Illegal call sequence, actualClassloader should be set before calling function on the class without module")
|
||||||
val baseClassLoader = evaluationConfiguration[ScriptEvaluationConfiguration.jvm.baseClassLoader]
|
val baseClassLoader = evaluationConfiguration[ScriptEvaluationConfiguration.jvm.baseClassLoader]
|
||||||
val moduleClassLoader = module.createClassLoader(baseClassLoader)
|
|
||||||
val classLoaderWithDeps =
|
val classLoaderWithDeps =
|
||||||
if (evaluationConfiguration[ScriptEvaluationConfiguration.jvm.loadDependencies] == false) moduleClassLoader
|
if (evaluationConfiguration[ScriptEvaluationConfiguration.jvm.loadDependencies] == false) baseClassLoader
|
||||||
else makeClassLoaderFromDependencies(moduleClassLoader)
|
else makeClassLoaderFromDependencies(baseClassLoader)
|
||||||
return classLoaderWithDeps
|
return module.createClassLoader(classLoaderWithDeps)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getConfigurationWithClassloader(
|
fun getConfigurationWithClassloader(
|
||||||
@@ -130,7 +129,7 @@ fun getConfigurationWithClassloader(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun CompiledScript<*>.makeClassLoaderFromDependencies(baseClassLoader: ClassLoader): ClassLoader {
|
private fun CompiledScript<*>.makeClassLoaderFromDependencies(baseClassLoader: ClassLoader?): ClassLoader? {
|
||||||
val processedScripts = mutableSetOf<CompiledScript<*>>()
|
val processedScripts = mutableSetOf<CompiledScript<*>>()
|
||||||
fun seq(res: Sequence<CompiledScript<*>>, script: CompiledScript<*>): Sequence<CompiledScript<*>> {
|
fun seq(res: Sequence<CompiledScript<*>>, script: CompiledScript<*>): Sequence<CompiledScript<*>> {
|
||||||
if (processedScripts.contains(script)) return res
|
if (processedScripts.contains(script)) return res
|
||||||
|
|||||||
Reference in New Issue
Block a user