@@ -36,11 +36,14 @@ import org.jetbrains.kotlin.resolve.extensions.ExtraImportsProviderExtension
36
36
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
37
37
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
38
38
import org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar
39
+ import org.jetbrains.kotlin.scripting.compiler.plugin.definitions.CliScriptDefinitionProvider
39
40
import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys
40
41
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider
41
42
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
42
43
import org.jetbrains.kotlin.scripting.definitions.StandardScriptDefinition
43
44
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
45
+ import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
46
+ import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
44
47
import org.jetbrains.kotlin.scripting.extensions.ScriptExtraImportsProviderExtension
45
48
import org.jetbrains.kotlin.types.TypeUtils
46
49
import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices
@@ -83,11 +86,9 @@ private class CompilationEnvironment(
83
86
configuration = KotlinCompilerConfiguration ().apply {
84
87
put(CommonConfigurationKeys .MODULE_NAME , JvmProtoBufUtil .DEFAULT_MODULE_NAME )
85
88
put(CLIConfigurationKeys .MESSAGE_COLLECTOR_KEY , LoggingMessageCollector )
86
- add(ComponentRegistrar .PLUGIN_COMPONENT_REGISTRARS , ScriptingCompilerConfigurationComponentRegistrar ())
87
89
addJvmClasspathRoots(classPath.map { it.toFile() })
88
-
89
90
// Setup script templates
90
- var scriptDefinitions: List <ScriptDefinition > = listOf (ScriptDefinition .getDefault(defaultJvmScriptingHostConfiguration) )
91
+ var scriptDefinitions: List <ScriptDefinition > = listOf ()
91
92
92
93
if (classPath.any { GRADLE_DSL_DEPENDENCY_PATTERN .matches(it.fileName.toString()) }) {
93
94
LOG .info(" Configuring Kotlin DSL script templates..." )
@@ -101,16 +102,22 @@ private class CompilationEnvironment(
101
102
try {
102
103
// Load template classes
103
104
val scriptClassLoader = URLClassLoader (classPath.map { it.toUri().toURL() }.toTypedArray())
105
+ val fileClassPath = classPath.map { it.toFile() }
104
106
val scriptHostConfig = ScriptingHostConfiguration (defaultJvmScriptingHostConfiguration) {
105
- configurationDependencies(JvmDependency (classPath.map { it.toFile() } ))
107
+ configurationDependencies(JvmDependency (fileClassPath ))
106
108
}
107
- scriptDefinitions = scriptTemplates.map { ScriptDefinition .FromTemplate (scriptHostConfig, scriptClassLoader.loadClass(it).kotlin) }
109
+ scriptDefinitions = scriptTemplates
110
+ .map { object : ScriptDefinition .FromLegacy (defaultJvmScriptingHostConfiguration, KotlinScriptDefinition (scriptClassLoader.loadClass(it).kotlin)) {
111
+ override val isDefault = true
112
+ } }
108
113
} catch (e: Exception ) {
109
114
LOG .error(" Error while loading script template classes" )
110
115
LOG .printStackTrace(e)
111
116
}
112
117
}
113
118
addAll(ScriptingConfigurationKeys .SCRIPT_DEFINITIONS , scriptDefinitions)
119
+ put(JVMConfigurationKeys .DISABLE_STANDARD_SCRIPT_DEFINITION , true )
120
+ add(ComponentRegistrar .PLUGIN_COMPONENT_REGISTRARS , ScriptingCompilerConfigurationComponentRegistrar ())
114
121
},
115
122
configFiles = EnvironmentConfigFiles .JVM_CONFIG_FILES
116
123
)
@@ -121,7 +128,7 @@ private class CompilationEnvironment(
121
128
}
122
129
123
130
parser = KtPsiFactory (project)
124
- scripts = ScriptDefinitionProvider .getInstance(project)!!
131
+ scripts = ScriptDefinitionProvider .getInstance(project)!! as CliScriptDefinitionProvider
125
132
}
126
133
127
134
fun updateConfiguration (config : CompilerConfiguration ) {
@@ -249,6 +256,7 @@ class Compiler(classPath: Set<Path>, buildScriptClassPath: Set<Path> = emptySet(
249
256
compileFiles(listOf (file), sourcePath, kind)
250
257
251
258
fun compileFiles (files : Collection <KtFile >, sourcePath : Collection <KtFile >, kind : CompilationKind = CompilationKind .DEFAULT ): Pair <BindingContext , ComponentProvider > {
259
+ files.forEach { LOG .info(" $it -> ScriptDefinition: ${it.findScriptDefinition()?.legacyDefinition?.template?.simpleName} " ) }
252
260
compileLock.withLock {
253
261
val (container, trace) = compileEnvironmentFor(kind).createContainer(sourcePath)
254
262
val topDownAnalyzer = container.get<LazyTopDownAnalyzer >()
0 commit comments