Skip to content

Commit bd86167

Browse files
committed
WIP: Use ScriptDefinition.FromLegacy
1 parent d25bcd7 commit bd86167

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

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

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,14 @@ import org.jetbrains.kotlin.resolve.extensions.ExtraImportsProviderExtension
3636
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
3737
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
3838
import org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar
39+
import org.jetbrains.kotlin.scripting.compiler.plugin.definitions.CliScriptDefinitionProvider
3940
import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys
4041
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider
4142
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
4243
import org.jetbrains.kotlin.scripting.definitions.StandardScriptDefinition
4344
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
45+
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
46+
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
4447
import org.jetbrains.kotlin.scripting.extensions.ScriptExtraImportsProviderExtension
4548
import org.jetbrains.kotlin.types.TypeUtils
4649
import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices
@@ -83,11 +86,9 @@ private class CompilationEnvironment(
8386
configuration = KotlinCompilerConfiguration().apply {
8487
put(CommonConfigurationKeys.MODULE_NAME, JvmProtoBufUtil.DEFAULT_MODULE_NAME)
8588
put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, LoggingMessageCollector)
86-
add(ComponentRegistrar.PLUGIN_COMPONENT_REGISTRARS, ScriptingCompilerConfigurationComponentRegistrar())
8789
addJvmClasspathRoots(classPath.map { it.toFile() })
88-
8990
// Setup script templates
90-
var scriptDefinitions: List<ScriptDefinition> = listOf(ScriptDefinition.getDefault(defaultJvmScriptingHostConfiguration))
91+
var scriptDefinitions: List<ScriptDefinition> = listOf()
9192

9293
if (classPath.any { GRADLE_DSL_DEPENDENCY_PATTERN.matches(it.fileName.toString()) }) {
9394
LOG.info("Configuring Kotlin DSL script templates...")
@@ -101,16 +102,22 @@ private class CompilationEnvironment(
101102
try {
102103
// Load template classes
103104
val scriptClassLoader = URLClassLoader(classPath.map { it.toUri().toURL() }.toTypedArray())
105+
val fileClassPath = classPath.map { it.toFile() }
104106
val scriptHostConfig = ScriptingHostConfiguration(defaultJvmScriptingHostConfiguration) {
105-
configurationDependencies(JvmDependency(classPath.map { it.toFile() }))
107+
configurationDependencies(JvmDependency(fileClassPath))
106108
}
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+
} }
108113
} catch (e: Exception) {
109114
LOG.error("Error while loading script template classes")
110115
LOG.printStackTrace(e)
111116
}
112117
}
113118
addAll(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinitions)
119+
put(JVMConfigurationKeys.DISABLE_STANDARD_SCRIPT_DEFINITION, true)
120+
add(ComponentRegistrar.PLUGIN_COMPONENT_REGISTRARS, ScriptingCompilerConfigurationComponentRegistrar())
114121
},
115122
configFiles = EnvironmentConfigFiles.JVM_CONFIG_FILES
116123
)
@@ -121,7 +128,7 @@ private class CompilationEnvironment(
121128
}
122129

123130
parser = KtPsiFactory(project)
124-
scripts = ScriptDefinitionProvider.getInstance(project)!!
131+
scripts = ScriptDefinitionProvider.getInstance(project)!! as CliScriptDefinitionProvider
125132
}
126133

127134
fun updateConfiguration(config: CompilerConfiguration) {
@@ -249,6 +256,7 @@ class Compiler(classPath: Set<Path>, buildScriptClassPath: Set<Path> = emptySet(
249256
compileFiles(listOf(file), sourcePath, kind)
250257

251258
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}") }
252260
compileLock.withLock {
253261
val (container, trace) = compileEnvironmentFor(kind).createContainer(sourcePath)
254262
val topDownAnalyzer = container.get<LazyTopDownAnalyzer>()

0 commit comments

Comments
 (0)