Add compatibility with templates from script-runtime...

and add script-runtime to the compilation classpath by default
This commit is contained in:
Ilya Chernikov
2018-09-03 17:19:04 +02:00
parent 6716c512d3
commit 6c60e38260
2 changed files with 16 additions and 0 deletions
@@ -14,6 +14,11 @@ private const val ERROR_MSG_PREFIX = "Unable to construct script definition: "
private const val ILLEGAL_CONFIG_ANN_ARG =
"Illegal argument compilationConfiguration of the KotlinScript annotation: expecting an object or default-constructed class derived from ScriptCompilationConfiguration"
private const val SCRIPT_RUNTIME_TEMPLATES_PACKAGE = "kotlin.script.templates.standard"
@KotlinScript
private abstract class DummyScriptTemplate
fun createCompilationConfigurationFromTemplate(
baseClassType: KotlinType,
hostConfiguration: ScriptingHostConfiguration,
@@ -33,6 +38,16 @@ fun createCompilationConfigurationFromTemplate(
val loadedBaseClassType = if (baseClass == baseClassType.fromClass) baseClassType else KotlinType(baseClass)
val mainAnnotation = baseClass.findAnnotation<KotlinScript>()
?: run {
// transitions to the new scripting API:
// substituting annotations for standard templates from script-runtime
when (baseClass.qualifiedName) {
"$SCRIPT_RUNTIME_TEMPLATES_PACKAGE.SimpleScriptTemplate",
"$SCRIPT_RUNTIME_TEMPLATES_PACKAGE.ScriptTemplateWithArgs",
"$SCRIPT_RUNTIME_TEMPLATES_PACKAGE.ScriptTemplateWithBindings" -> DummyScriptTemplate::class
else -> null
}?.findAnnotation<KotlinScript>()
}
?: throw IllegalArgumentException("${ERROR_MSG_PREFIX}Expecting KotlinScript annotation on the $baseClass")
fun scriptConfigInstance(kclass: KClass<out ScriptCompilationConfiguration>): ScriptCompilationConfiguration = try {
@@ -134,6 +134,7 @@ class KJvmCompilerImpl(val hostConfiguration: ScriptingHostConfiguration) : KJvm
}
// TODO: implement logic similar to compiler's -no-stdlib (and -no-reflect?)
addRoot("kotlin.stdlib", KotlinJars.stdlib)
KotlinJars.scriptRuntimeOrNull?.let { addRoot("kotlin.script.runtime", it) }
put(CommonConfigurationKeys.MODULE_NAME, "kotlin-script") // TODO" take meaningful and valid name from somewhere
languageVersionSettings = LanguageVersionSettingsImpl(