Skip to content

Commit e3aae57

Browse files
committed
Add support for Kotlin DSL settings/init scripts
Additionally, clean up the ScriptDefinition construction by getting rid of the legacy 'KotlinScriptDefinition' type.
1 parent 0d8f245 commit e3aae57

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

server/src/main/kotlin/org/javacs/kt/Compiler.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider
4242
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
4343
import org.jetbrains.kotlin.scripting.definitions.StandardScriptDefinition
4444
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
45-
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
4645
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
4746
import org.jetbrains.kotlin.scripting.extensions.ScriptExtraImportsProviderExtension
4847
import org.jetbrains.kotlin.types.TypeUtils
@@ -88,15 +87,16 @@ private class CompilationEnvironment(
8887
put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, LoggingMessageCollector)
8988
add(ComponentRegistrar.PLUGIN_COMPONENT_REGISTRARS, ScriptingCompilerConfigurationComponentRegistrar())
9089
addJvmClasspathRoots(classPath.map { it.toFile() })
90+
9191
// Setup script templates
92-
var scriptDefinitions: List<ScriptDefinition> = listOf()
92+
var scriptDefinitions: List<ScriptDefinition> = listOf(ScriptDefinition.getDefault(defaultJvmScriptingHostConfiguration))
9393

9494
if (classPath.any { GRADLE_DSL_DEPENDENCY_PATTERN.matches(it.fileName.toString()) }) {
9595
LOG.info("Configuring Kotlin DSL script templates...")
9696

9797
val scriptTemplates = listOf(
98-
// "org.gradle.kotlin.dsl.KotlinInitScript",
99-
// "org.gradle.kotlin.dsl.KotlinSettingsScript",
98+
"org.gradle.kotlin.dsl.KotlinInitScript",
99+
"org.gradle.kotlin.dsl.KotlinSettingsScript",
100100
"org.gradle.kotlin.dsl.KotlinBuildScript"
101101
)
102102

@@ -107,15 +107,13 @@ private class CompilationEnvironment(
107107
val scriptHostConfig = ScriptingHostConfiguration(defaultJvmScriptingHostConfiguration) {
108108
configurationDependencies(JvmDependency(fileClassPath))
109109
}
110-
scriptDefinitions = scriptTemplates
111-
.map { object : ScriptDefinition.FromLegacy(scriptHostConfig, KotlinScriptDefinition(scriptClassLoader.loadClass(it).kotlin)) {
112-
override val isDefault = true
113-
} }
110+
scriptDefinitions = scriptTemplates.map { ScriptDefinition.FromLegacyTemplate(scriptHostConfig, scriptClassLoader.loadClass(it).kotlin) }
114111
} catch (e: Exception) {
115112
LOG.error("Error while loading script template classes")
116113
LOG.printStackTrace(e)
117114
}
118115
}
116+
119117
addAll(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinitions)
120118
},
121119
configFiles = EnvironmentConfigFiles.JVM_CONFIG_FILES
@@ -255,7 +253,9 @@ class Compiler(classPath: Set<Path>, buildScriptClassPath: Set<Path> = emptySet(
255253
compileFiles(listOf(file), sourcePath, kind)
256254

257255
fun compileFiles(files: Collection<KtFile>, sourcePath: Collection<KtFile>, kind: CompilationKind = CompilationKind.DEFAULT): Pair<BindingContext, ComponentProvider> {
258-
files.forEach { LOG.info("$it -> ScriptDefinition: ${it.findScriptDefinition()?.legacyDefinition?.template?.simpleName}, provider: ${(ScriptDefinitionProvider.getInstance(buildScriptCompileEnvironment?.environment?.project!!) as CliScriptDefinitionProvider).getDefaultDefinition()?.legacyDefinition?.template?.simpleName}") }
256+
if (kind == CompilationKind.BUILD_SCRIPT) {
257+
files.forEach { LOG.info("$it -> ScriptDefinition: ${it.findScriptDefinition()?.legacyDefinition?.template?.simpleName}") }
258+
}
259259
compileLock.withLock {
260260
val (container, trace) = compileEnvironmentFor(kind).createContainer(sourcePath)
261261
val topDownAnalyzer = container.get<LazyTopDownAnalyzer>()

0 commit comments

Comments
 (0)