Fix script definition matching for REPL console

fixes IdeReplCompletionTestGenerated tests
in addition, fix default ScriptDefinition generation
This commit is contained in:
Ilya Chernikov
2019-07-15 16:06:49 +02:00
parent 425deb42ec
commit 823cb70ba0
2 changed files with 9 additions and 8 deletions
@@ -134,9 +134,7 @@ class KotlinConsoleRunner(
private val consoleScriptDefinition = object : KotlinScriptDefinition(Any::class) { private val consoleScriptDefinition = object : KotlinScriptDefinition(Any::class) {
override val name = "Kotlin REPL" override val name = "Kotlin REPL"
override fun isScript(fileName: String): Boolean { override fun isScript(fileName: String): Boolean = fileName.startsWith(consoleView.virtualFile.name)
return fileName == consoleView.virtualFile.name
}
override fun getScriptName(script: KtScript) = Name.identifier("REPL") override fun getScriptName(script: KtScript) = Name.identifier("REPL")
} }
@@ -278,10 +276,13 @@ class KotlinConsoleRunner(
runReadAction { runReadAction {
val lineNumber = replState.successfulLinesCount + 1 val lineNumber = replState.successfulLinesCount + 1
val virtualFile = val virtualFile =
LightVirtualFile("line$lineNumber${KotlinParserDefinition.STD_SCRIPT_EXT}", KotlinLanguage.INSTANCE, text).apply { LightVirtualFile(
charset = CharsetToolkit.UTF8_CHARSET "${consoleView.virtualFile.name}$lineNumber${KotlinParserDefinition.STD_SCRIPT_EXT}",
isWritable = false KotlinLanguage.INSTANCE, text
} ).apply {
charset = CharsetToolkit.UTF8_CHARSET
isWritable = false
}
val psiFile = (PsiFileFactory.getInstance(project) as PsiFileFactoryImpl).trySetupPsiForFile(virtualFile, KotlinLanguage.INSTANCE, true, false) as KtFile? val psiFile = (PsiFileFactory.getInstance(project) as PsiFileFactoryImpl).trySetupPsiForFile(virtualFile, KotlinLanguage.INSTANCE, true, false) as KtFile?
?: error("Failed to setup PSI for file:\n$text") ?: error("Failed to setup PSI for file:\n$text")
@@ -23,7 +23,7 @@ abstract class LazyScriptDefinitionProvider : ScriptDefinitionProvider {
protected open fun getScriptingHostConfiguration(): ScriptingHostConfiguration = defaultJvmScriptingHostConfiguration protected open fun getScriptingHostConfiguration(): ScriptingHostConfiguration = defaultJvmScriptingHostConfiguration
override fun getDefaultDefinition(): ScriptDefinition = override fun getDefaultDefinition(): ScriptDefinition =
ScriptDefinition.FromLegacy(getScriptingHostConfiguration(), StandardScriptDefinition) ScriptDefinition.getDefault(getScriptingHostConfiguration())
private var _cachedDefinitions: Sequence<ScriptDefinition>? = null private var _cachedDefinitions: Sequence<ScriptDefinition>? = null
private val cachedDefinitions: Sequence<ScriptDefinition> private val cachedDefinitions: Sequence<ScriptDefinition>