Fix sequence of the script definitions search - explicit ones should be tried first
This commit is contained in:
+11
-5
@@ -10,12 +10,16 @@ import org.jetbrains.kotlin.script.ScriptDefinitionsSource
|
||||
import org.jetbrains.kotlin.script.StandardScriptDefinition
|
||||
import kotlin.concurrent.write
|
||||
|
||||
class CliScriptDefinitionProvider : LazyScriptDefinitionProvider() {
|
||||
open class CliScriptDefinitionProvider : LazyScriptDefinitionProvider() {
|
||||
private val definitionsFromSources: MutableList<Sequence<KotlinScriptDefinition>> = arrayListOf()
|
||||
private val definitions: MutableList<KotlinScriptDefinition> = arrayListOf(StandardScriptDefinition)
|
||||
private val definitions: MutableList<KotlinScriptDefinition> = arrayListOf()
|
||||
private var hasStandardDefinition = true
|
||||
|
||||
override val currentDefinitions: Sequence<KotlinScriptDefinition> =
|
||||
definitionsFromSources.asSequence().flatMap { it } + definitions.asSequence()
|
||||
override val currentDefinitions: Sequence<KotlinScriptDefinition>
|
||||
get() {
|
||||
val base = definitions.asSequence() + definitionsFromSources.asSequence().flatMap { it }
|
||||
return if (hasStandardDefinition) base + getDefaultScriptDefinition() else base
|
||||
}
|
||||
|
||||
override fun getDefaultScriptDefinition(): KotlinScriptDefinition {
|
||||
return StandardScriptDefinition
|
||||
@@ -24,7 +28,9 @@ class CliScriptDefinitionProvider : LazyScriptDefinitionProvider() {
|
||||
fun setScriptDefinitions(newDefinitions: List<KotlinScriptDefinition>) {
|
||||
lock.write {
|
||||
definitions.clear()
|
||||
definitions.addAll(newDefinitions)
|
||||
val (withoutStdDef, stdDef) = newDefinitions.partition { it != getDefaultScriptDefinition() }
|
||||
definitions.addAll(withoutStdDef)
|
||||
hasStandardDefinition = stdDef.isNotEmpty()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user