diff --git a/compiler/frontend.script/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionFromAnnotatedTemplate.kt b/compiler/frontend.script/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionFromAnnotatedTemplate.kt index ca3f08afd47..db4694529cd 100644 --- a/compiler/frontend.script/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionFromAnnotatedTemplate.kt +++ b/compiler/frontend.script/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionFromAnnotatedTemplate.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.NameUtils import org.jetbrains.kotlin.psi.KtScript import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull +import java.io.File import kotlin.reflect.KClass import kotlin.reflect.KFunction import kotlin.reflect.KParameter @@ -36,7 +37,8 @@ open class KotlinScriptDefinitionFromAnnotatedTemplate( template: KClass, providedResolver: DependenciesResolver? = null, providedScriptFilePattern: String? = null, - val environment: Map? = null + val environment: Map? = null, + val templateClasspath: List = emptyList() ) : KotlinScriptDefinition(template) { val scriptFilePattern by lazy { diff --git a/compiler/frontend.script/src/org/jetbrains/kotlin/script/ScriptContentLoader.kt b/compiler/frontend.script/src/org/jetbrains/kotlin/script/ScriptContentLoader.kt index 690e56dc307..dbfaaec0f9a 100644 --- a/compiler/frontend.script/src/org/jetbrains/kotlin/script/ScriptContentLoader.kt +++ b/compiler/frontend.script/src/org/jetbrains/kotlin/script/ScriptContentLoader.kt @@ -67,10 +67,18 @@ class ScriptContentLoader(private val project: Project) { getEnvironment(scriptDef) ) ServiceManager.getService(project, ScriptReportSink::class.java)?.attachReports(file, result.reports) - return result.dependencies + return result.dependencies?.adjustByDefinition(scriptDef) } fun getEnvironment(scriptDef: KotlinScriptDefinition) = (scriptDef as? KotlinScriptDefinitionFromAnnotatedTemplate)?.environment.orEmpty() } +fun ScriptDependencies.adjustByDefinition( + scriptDef: KotlinScriptDefinition +): ScriptDependencies { + val additionalClasspath = (scriptDef as? KotlinScriptDefinitionFromAnnotatedTemplate)?.templateClasspath ?: return this + if (additionalClasspath.isEmpty()) return this + return copy(classpath = additionalClasspath + classpath) +} + diff --git a/compiler/frontend.script/src/org/jetbrains/kotlin/script/scriptTemplateProviderExtensionPoint.kt b/compiler/frontend.script/src/org/jetbrains/kotlin/script/scriptTemplateProviderExtensionPoint.kt index 4e6c7984c5c..4473bbfec91 100644 --- a/compiler/frontend.script/src/org/jetbrains/kotlin/script/scriptTemplateProviderExtensionPoint.kt +++ b/compiler/frontend.script/src/org/jetbrains/kotlin/script/scriptTemplateProviderExtensionPoint.kt @@ -72,7 +72,10 @@ fun makeScriptDefsFromTemplatesProviders(providers: Iterable