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:
Ilya Chernikov
2019-05-12 22:26:37 +02:00
parent e5054f9648
commit e542c9ea84
94 changed files with 1554 additions and 764 deletions
@@ -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 }
}
}