diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt index bcbda4a18a5..09e3a994da6 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt @@ -188,7 +188,6 @@ class LazyImportResolver( } fun getImportScope(directive: KtImportDirective): ImportingScope { - moduleDescriptor.assertValid() return importedScopesProvider(directive) ?: ImportingScope.Empty } } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/KotlinCodeBlockModificationListener.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/KotlinCodeBlockModificationListener.kt index 5ca487ab11e..6a206b37457 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/KotlinCodeBlockModificationListener.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/KotlinCodeBlockModificationListener.kt @@ -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("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) diff --git a/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleRunner.kt b/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleRunner.kt index b4916dc472a..28b36a3e099 100644 --- a/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleRunner.kt +++ b/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleRunner.kt @@ -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")