@@ -38,13 +38,16 @@ import org.jetbrains.kotlin.resolve.scopes.LexicalScope
38
38
import org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar
39
39
import org.jetbrains.kotlin.scripting.compiler.plugin.definitions.CliScriptDefinitionProvider
40
40
import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys
41
+ import org.jetbrains.kotlin.scripting.definitions.ScriptCompilationConfigurationFromDefinition
41
42
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider
42
43
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
43
44
import org.jetbrains.kotlin.scripting.definitions.StandardScriptDefinition
44
45
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
45
46
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition // Legacy
46
47
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
48
+ import org.jetbrains.kotlin.scripting.definitions.getEnvironment
47
49
import org.jetbrains.kotlin.scripting.extensions.ScriptExtraImportsProviderExtension
50
+ import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate
48
51
import org.jetbrains.kotlin.types.TypeUtils
49
52
import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices
50
53
import org.jetbrains.kotlin.util.KotlinFrontEndException
@@ -56,6 +59,12 @@ import java.nio.file.Paths
56
59
import java.net.URLClassLoader
57
60
import java.util.concurrent.locks.ReentrantLock
58
61
import kotlin.concurrent.withLock
62
+ import kotlin.script.dependencies.Environment
63
+ import kotlin.script.dependencies.ScriptContents
64
+ import kotlin.script.experimental.dependencies.ScriptDependencies
65
+ import kotlin.script.experimental.api.ScriptCompilationConfiguration
66
+ import kotlin.script.experimental.dependencies.DependenciesResolver
67
+ import kotlin.script.experimental.dependencies.DependenciesResolver.ResolveResult
59
68
import kotlin.script.experimental.host.ScriptingHostConfiguration
60
69
import kotlin.script.experimental.host.configurationDependencies
61
70
import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration
@@ -89,7 +98,7 @@ private class CompilationEnvironment(
89
98
add(ComponentRegistrar .PLUGIN_COMPONENT_REGISTRARS , ScriptingCompilerConfigurationComponentRegistrar ())
90
99
addJvmClasspathRoots(classPath.map { it.toFile() })
91
100
92
- // Setup script templates
101
+ // Setup script templates (e.g. used by Gradle's Kotlin DSL)
93
102
var scriptDefinitions: List <ScriptDefinition > = listOf (ScriptDefinition .getDefault(defaultJvmScriptingHostConfiguration))
94
103
95
104
if (classPath.any { GRADLE_DSL_DEPENDENCY_PATTERN .matches(it.fileName.toString()) }) {
@@ -108,7 +117,21 @@ private class CompilationEnvironment(
108
117
val scriptHostConfig = ScriptingHostConfiguration (defaultJvmScriptingHostConfiguration) {
109
118
configurationDependencies(JvmDependency (fileClassPath))
110
119
}
111
- scriptDefinitions = scriptTemplates.map { ScriptDefinition .FromLegacyTemplate (scriptHostConfig, scriptClassLoader.loadClass(it).kotlin) }
120
+ // TODO: KotlinScriptDefinition will soon be deprecated, use
121
+ // ScriptDefinition.compilationConfiguration and its defaultImports instead
122
+ // of KotlinScriptDefinition.dependencyResolver
123
+ // TODO: Use ScriptDefinition.FromLegacyTemplate directly if possible
124
+ scriptDefinitions = scriptTemplates.map { ScriptDefinition .FromLegacyTemplate (scriptHostConfig, scriptClassLoader.loadClass(it).kotlin, fileClassPath) }
125
+ // scriptDefinitions = scriptTemplates.map { ScriptDefinition.FromLegacy(scriptHostConfig, object : KotlinScriptDefinitionFromAnnotatedTemplate(
126
+ // scriptClassLoader.loadClass(it).kotlin,
127
+ // scriptHostConfig[ScriptingHostConfiguration.getEnvironment]?.invoke()
128
+ // ) {
129
+ // override val dependencyResolver: DependenciesResolver = object : DependenciesResolver {
130
+ // override fun resolve(scriptContents: ScriptContents, environment: Environment) = ResolveResult.Success(ScriptDependencies(
131
+ // imports = listOf("org.gradle.kotlin.api.*")
132
+ // ))
133
+ // }
134
+ // }) }
112
135
} catch (e: Exception ) {
113
136
LOG .error(" Error while loading script template classes" )
114
137
LOG .printStackTrace(e)
0 commit comments