Provide a method to update script definitions after loading into IDE
also documenting ScriptDefinitionsProvider
This commit is contained in:
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.idea.core.script.loadDefinitionsFromTemplates
|
||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionsFromClasspathDiscoverySource
|
||||
import kotlin.script.experimental.api.ScriptDiagnostic
|
||||
import kotlin.script.experimental.api.ScriptEvaluationConfiguration
|
||||
import kotlin.script.experimental.intellij.ScriptDefinitionsProvider
|
||||
import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration
|
||||
|
||||
@@ -25,19 +26,28 @@ class BridgeScriptDefinitionsContributor(private val project: Project) : ScriptD
|
||||
return extensions.asSequence().flatMap { provider ->
|
||||
val explicitClasses = provider.getDefinitionClasses().toList()
|
||||
val classPath = provider.getDefinitionsClassPath().toList()
|
||||
val hostConfiguration = defaultJvmScriptingHostConfiguration
|
||||
val baseHostConfiguration = defaultJvmScriptingHostConfiguration
|
||||
// TODO: rewrite load and discovery to return kotlin.script.experimental.host.ScriptDefinition to avoid unnecessary conversions
|
||||
val explicitDefinitions =
|
||||
if (explicitClasses.isEmpty()) emptySequence()
|
||||
else loadDefinitionsFromTemplates(explicitClasses, classPath, hostConfiguration).asSequence()
|
||||
else loadDefinitionsFromTemplates(explicitClasses, classPath, baseHostConfiguration).asSequence()
|
||||
val discoveredDefinitions =
|
||||
if (provider.useDiscovery())
|
||||
ScriptDefinitionsFromClasspathDiscoverySource(
|
||||
classPath,
|
||||
hostConfiguration,
|
||||
baseHostConfiguration,
|
||||
::loggingReporter
|
||||
).definitions
|
||||
else emptySequence()
|
||||
explicitDefinitions + discoveredDefinitions
|
||||
val loadedDefinitions = (explicitDefinitions + discoveredDefinitions).map {
|
||||
kotlin.script.experimental.host.ScriptDefinition(
|
||||
it.compilationConfiguration,
|
||||
it.evaluationConfiguration ?: ScriptEvaluationConfiguration.Default
|
||||
)
|
||||
}.toList()
|
||||
provider.provideDefinitions(baseHostConfiguration, loadedDefinitions).map {
|
||||
ScriptDefinition.FromNewDefinition(baseHostConfiguration, it)
|
||||
}.asSequence()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user