Add script configuration dependencies to script classpath
It was missing during configuration refinement thought new scripting API and during loading script configuration on Gradle project import Do not pass additional classpath to configuration classpath: this may only affects Gradle with New scripting API (because it isn't used from other places) In additional classpath kotlin-compiler and kotlin-stdlib was passed and there is no needs for this during loading Script Definitions through new scripting API ^KT-34626 Fixed
This commit is contained in:
-9
@@ -12,7 +12,6 @@ import java.io.File
|
||||
import kotlin.script.dependencies.ScriptContents
|
||||
import kotlin.script.experimental.dependencies.DependenciesResolver
|
||||
import kotlin.script.experimental.dependencies.DependenciesResolver.ResolveResult.Failure
|
||||
import kotlin.script.experimental.dependencies.ScriptDependencies
|
||||
import kotlin.script.experimental.dependencies.ScriptReport
|
||||
|
||||
class ScriptContentLoader(private val project: Project) {
|
||||
@@ -54,14 +53,6 @@ class ScriptContentLoader(private val project: Project) {
|
||||
(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)
|
||||
}
|
||||
|
||||
fun Throwable.asResolveFailure(scriptDef: KotlinScriptDefinition): Failure {
|
||||
val prefix = "${scriptDef.dependencyResolver::class.simpleName} threw exception ${this::class.simpleName}:\n "
|
||||
return Failure(ScriptReport(prefix + (message ?: "<no message>"), ScriptReport.Severity.FATAL))
|
||||
|
||||
+21
-2
@@ -229,7 +229,10 @@ fun refineScriptCompilationConfiguration(
|
||||
.onSuccess {
|
||||
it.refineBeforeCompiling(script, collectedData)
|
||||
}.onSuccess {
|
||||
ScriptCompilationConfigurationWrapper.FromCompilationConfiguration(ktFileSource, it).asSuccess()
|
||||
ScriptCompilationConfigurationWrapper.FromCompilationConfiguration(
|
||||
ktFileSource,
|
||||
it.adjustByDefinition(definition)
|
||||
).asSuccess()
|
||||
}
|
||||
} else {
|
||||
val file = script.getVirtualFile(definition)
|
||||
@@ -260,12 +263,28 @@ fun refineScriptCompilationConfiguration(
|
||||
else
|
||||
ScriptCompilationConfigurationWrapper.FromLegacy(
|
||||
ktFileSource,
|
||||
result.dependencies?.adjustByDefinition(definition.legacyDefinition),
|
||||
result.dependencies?.adjustByDefinition(definition),
|
||||
definition
|
||||
).asSuccess(result.reports.mapToDiagnostics())
|
||||
}
|
||||
}
|
||||
|
||||
fun ScriptDependencies.adjustByDefinition(definition: ScriptDefinition): ScriptDependencies {
|
||||
val additionalClasspath = additionalClasspath(definition)
|
||||
if (additionalClasspath.isEmpty()) return this
|
||||
|
||||
return copy(classpath = additionalClasspath + classpath)
|
||||
}
|
||||
|
||||
fun ScriptCompilationConfiguration.adjustByDefinition(definition: ScriptDefinition): ScriptCompilationConfiguration {
|
||||
return this.withUpdatedClasspath(additionalClasspath(definition))
|
||||
}
|
||||
|
||||
private fun additionalClasspath(definition: ScriptDefinition): List<File> {
|
||||
return (definition.asLegacyOrNull<KotlinScriptDefinitionFromAnnotatedTemplate>()?.templateClasspath
|
||||
?: definition.hostConfiguration[ScriptingHostConfiguration.configurationDependencies].toClassPathOrEmpty())
|
||||
}
|
||||
|
||||
internal fun makeScriptContents(
|
||||
file: VirtualFile,
|
||||
legacyDefinition: KotlinScriptDefinition,
|
||||
|
||||
Reference in New Issue
Block a user