Refactor script definitions and resolving/refining infrastructure:
- implement wrappers to wrap old and new API providers and resolvers - make old API deprecated (with error where possible) - drop old internal classes related to the old API - refactor usages accordingly - fix and add missing features to the scripting API where necessary
This commit is contained in:
@@ -62,6 +62,7 @@ import org.jetbrains.kotlin.idea.caches.project.productionSourceInfo
|
||||
import org.jetbrains.kotlin.idea.caches.project.testSourceInfo
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionContributor
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionSourceAsContributor
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager
|
||||
import org.jetbrains.kotlin.idea.project.KOTLIN_CONSOLE_KEY
|
||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||
@@ -72,11 +73,13 @@ import org.jetbrains.kotlin.psi.KtScript
|
||||
import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil
|
||||
import org.jetbrains.kotlin.resolve.repl.ReplState
|
||||
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
||||
import java.awt.Color
|
||||
import java.awt.Font
|
||||
import java.util.concurrent.CountDownLatch
|
||||
import java.util.concurrent.TimeUnit
|
||||
import kotlin.properties.Delegates
|
||||
import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration
|
||||
|
||||
private val KOTLIN_SHELL_EXECUTE_ACTION_ID = "KotlinShellExecute"
|
||||
|
||||
@@ -305,20 +308,21 @@ class KotlinConsoleRunner(
|
||||
}
|
||||
}
|
||||
|
||||
class ConsoleScriptDefinitionContributor: ScriptDefinitionContributor {
|
||||
private val definitions = ContainerUtil.newConcurrentSet<KotlinScriptDefinition>()
|
||||
class ConsoleScriptDefinitionContributor: ScriptDefinitionSourceAsContributor {
|
||||
|
||||
val definitionsSet = ContainerUtil.newConcurrentSet<ScriptDefinition>()
|
||||
|
||||
override val definitions: Sequence<ScriptDefinition>
|
||||
get() = definitionsSet.asSequence()
|
||||
|
||||
override val id: String = "IDEA Console"
|
||||
|
||||
override fun getDefinitions(): List<KotlinScriptDefinition> {
|
||||
return definitions.toList()
|
||||
}
|
||||
|
||||
// TODO: rewrite to ScriptDefinition
|
||||
fun registerDefinition(definition: KotlinScriptDefinition) {
|
||||
definitions.add(definition)
|
||||
definitionsSet.add(ScriptDefinition.FromLegacy(defaultJvmScriptingHostConfiguration, definition))
|
||||
}
|
||||
|
||||
fun unregisterDefinition(definition: KotlinScriptDefinition) {
|
||||
definitions.remove(definition)
|
||||
definitionsSet.removeIf { it.asLegacyOrNull<KotlinScriptDefinition>() == definition }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user