IDE: IndexNotReadyException while creating new Kotlin file in Dumb mode

^KT-42518
This commit is contained in:
Dmitriy Dolovov
2020-10-07 16:30:58 +03:00
parent 2f003bdcb5
commit 280fcb5c4b
@@ -10,6 +10,7 @@ import com.intellij.openapi.command.WriteCommandAction
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.extensions.Extensions
import com.intellij.openapi.module.Module
import com.intellij.openapi.project.DumbService
import com.intellij.openapi.project.Project
import com.intellij.openapi.projectRoots.JavaSdkVersion
import com.intellij.openapi.roots.DependencyScope
@@ -27,6 +28,7 @@ import org.jetbrains.annotations.CalledInBackground
import org.jetbrains.kotlin.builtins.StandardNames
import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.idea.KotlinJvmBundle
import org.jetbrains.kotlin.idea.actions.internal.refactoringTesting.readAction
import org.jetbrains.kotlin.idea.core.util.getKotlinJvmRuntimeMarkerClass
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
import org.jetbrains.kotlin.idea.framework.effectiveKind
@@ -162,10 +164,19 @@ fun getConfigurableModulesWithKotlinFiles(project: Project): List<ModuleSourceRo
}
fun showConfigureKotlinNotificationIfNeeded(module: Module) {
val moduleGroup = module.toModuleGroup()
if (!isNotConfiguredNotificationRequired(moduleGroup)) return
val action: () -> Unit = {
val moduleGroup = module.toModuleGroup()
if (isNotConfiguredNotificationRequired(moduleGroup)) {
ConfigureKotlinNotificationManager.notify(module.project)
}
}
ConfigureKotlinNotificationManager.notify(module.project)
val dumbService = DumbService.getInstance(module.project)
if (dumbService.isDumb) {
dumbService.smartInvokeLater { action() }
} else {
action()
}
}
fun isNotConfiguredNotificationRequired(moduleGroup: ModuleSourceRootGroup): Boolean {