diff --git a/libraries/scripting/common/src/kotlin/script/experimental/host/configurationFromTemplate.kt b/libraries/scripting/common/src/kotlin/script/experimental/host/configurationFromTemplate.kt index 2c3c6a0ba24..1c260e434f3 100644 --- a/libraries/scripting/common/src/kotlin/script/experimental/host/configurationFromTemplate.kt +++ b/libraries/scripting/common/src/kotlin/script/experimental/host/configurationFromTemplate.kt @@ -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() + ?: 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() + } ?: throw IllegalArgumentException("${ERROR_MSG_PREFIX}Expecting KotlinScript annotation on the $baseClass") fun scriptConfigInstance(kclass: KClass): ScriptCompilationConfiguration = try { diff --git a/libraries/scripting/jvm-host/src/kotlin/script/experimental/jvmhost/impl/KJVMCompilerImpl.kt b/libraries/scripting/jvm-host/src/kotlin/script/experimental/jvmhost/impl/KJVMCompilerImpl.kt index 19b737409d9..c51f8271667 100644 --- a/libraries/scripting/jvm-host/src/kotlin/script/experimental/jvmhost/impl/KJVMCompilerImpl.kt +++ b/libraries/scripting/jvm-host/src/kotlin/script/experimental/jvmhost/impl/KJVMCompilerImpl.kt @@ -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(