From ffc6786f0681a5ba1b25403068ec0843bdd8f6fd Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Wed, 8 Jan 2020 15:38:31 +0100 Subject: [PATCH] Module info has to be read under readAction in KotlinConfigurationCheckerComponent #EA-209610 Fixed --- .../ui/KotlinConfigurationCheckerComponent.kt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ui/KotlinConfigurationCheckerComponent.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ui/KotlinConfigurationCheckerComponent.kt index 04149e3d1c8..2d61f3011bd 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ui/KotlinConfigurationCheckerComponent.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ui/KotlinConfigurationCheckerComponent.kt @@ -22,13 +22,13 @@ import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.runReadAction import com.intellij.openapi.components.ProjectComponent import com.intellij.openapi.externalSystem.service.project.manage.ProjectDataImportListener -import com.intellij.openapi.project.DumbService import com.intellij.openapi.project.Project import com.intellij.openapi.startup.StartupManager import org.jetbrains.kotlin.idea.configuration.getModulesWithKotlinFiles import org.jetbrains.kotlin.idea.configuration.notifyOutdatedBundledCompilerIfNecessary import org.jetbrains.kotlin.idea.configuration.ui.notifications.notifyKotlinStyleUpdateIfNeeded import org.jetbrains.kotlin.idea.project.getAndCacheLanguageLevelByDependencies +import org.jetbrains.kotlin.idea.util.runReadActionInSmartMode import java.util.concurrent.atomic.AtomicInteger class KotlinConfigurationCheckerComponent(val project: Project) : ProjectComponent { @@ -56,10 +56,14 @@ class KotlinConfigurationCheckerComponent(val project: Project) : ProjectCompone fun performProjectPostOpenActions() { ApplicationManager.getApplication().executeOnPooledThread { - DumbService.getInstance(project).waitForSmartMode() - - for (module in getModulesWithKotlinFiles(project)) { - module.getAndCacheLanguageLevelByDependencies() + val modulesWithKotlinFiles = project.runReadActionInSmartMode { + getModulesWithKotlinFiles(project) + } + for (module in modulesWithKotlinFiles) { + runReadAction { + if (project.isDisposed) return@runReadAction + module.getAndCacheLanguageLevelByDependencies() + } } } }