Don't increase OOCB count when a REPL line is modified
This commit is contained in:
@@ -188,7 +188,6 @@ class LazyImportResolver(
|
||||
}
|
||||
|
||||
fun getImportScope(directive: KtImportDirective): ImportingScope {
|
||||
moduleDescriptor.assertValid()
|
||||
return importedScopesProvider(directive) ?: ImportingScope.Empty
|
||||
}
|
||||
}
|
||||
|
||||
+8
-1
@@ -22,6 +22,7 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.roots.ModuleRootManager
|
||||
import com.intellij.openapi.util.Key
|
||||
import com.intellij.openapi.util.ModificationTracker
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.pom.PomManager
|
||||
import com.intellij.pom.PomModelAspect
|
||||
import com.intellij.pom.event.PomModelEvent
|
||||
@@ -38,6 +39,8 @@ import org.jetbrains.kotlin.psi.psiUtil.getTopmostParentOfType
|
||||
import org.jetbrains.kotlin.psi.psiUtil.isAncestor
|
||||
import org.jetbrains.kotlin.psi.psiUtil.parents
|
||||
|
||||
val KOTLIN_CONSOLE_KEY = Key.create<Boolean>("kotlin.console")
|
||||
|
||||
/**
|
||||
* Tested in OutOfBlockModificationTestGenerated
|
||||
*/
|
||||
@@ -81,7 +84,7 @@ class KotlinCodeBlockModificationListener(
|
||||
if (changedElements.any { getInsideCodeBlockModificationScope(it.psi) == null } ||
|
||||
(file is PsiCodeFragment && changedElements.isEmpty())) {
|
||||
messageBusConnection.deliverImmediately()
|
||||
if (file.isPhysical) {
|
||||
if (file.isPhysical && !isReplLine(file.virtualFile)) {
|
||||
lastAffectedModule = ModuleUtil.findModuleForPsiElement(file)
|
||||
lastAffectedModuleModCount = modificationTrackerImpl.outOfCodeBlockModificationCount
|
||||
modificationTrackerImpl.incCounter()
|
||||
@@ -108,6 +111,10 @@ class KotlinCodeBlockModificationListener(
|
||||
}
|
||||
|
||||
companion object {
|
||||
private fun isReplLine(file: VirtualFile): Boolean {
|
||||
return file.getUserData(KOTLIN_CONSOLE_KEY) == true
|
||||
}
|
||||
|
||||
private fun incOutOfBlockModificationCount(file: KtFile) {
|
||||
val count = file.getUserData(FILE_OUT_OF_BLOCK_MODIFICATION_COUNT) ?: 0
|
||||
file.putUserData(FILE_OUT_OF_BLOCK_MODIFICATION_COUNT, count + 1)
|
||||
|
||||
@@ -56,6 +56,7 @@ import org.jetbrains.kotlin.console.gutter.ReplIcons
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.ModuleTestSourceInfo
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.project.KOTLIN_CONSOLE_KEY
|
||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
|
||||
@@ -136,6 +137,7 @@ class KotlinConsoleRunner(
|
||||
val builder = LanguageConsoleBuilder()
|
||||
|
||||
val consoleView = builder.gutterContentProvider(ConsoleGutterContentProvider()).build(project, KotlinLanguage.INSTANCE)
|
||||
consoleView.virtualFile.putUserData(KOTLIN_CONSOLE_KEY, true)
|
||||
|
||||
|
||||
consoleView.prompt = null
|
||||
@@ -260,6 +262,7 @@ class KotlinConsoleRunner(
|
||||
val virtualFile =
|
||||
LightVirtualFile("line$lineNumber${KotlinParserDefinition.STD_SCRIPT_EXT}", 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?
|
||||
?: error("Failed to setup PSI for file:\n$text")
|
||||
|
||||
Reference in New Issue
Block a user