From fd0c4ac9936d811f6f2ee9d1e4307c39f468ebfa Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Tue, 24 Mar 2020 16:09:11 +0100 Subject: [PATCH] Enable run inspection pass after completion of general highlight pass for kotlin-specific project only Relates to #KT-37553 --- .../kotlin/idea/startupCompat.kt.201 | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/startupCompat.kt.201 b/idea/src/org/jetbrains/kotlin/idea/startupCompat.kt.201 index 93fe3e931cc..9106854faa1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/startupCompat.kt.201 +++ b/idea/src/org/jetbrains/kotlin/idea/startupCompat.kt.201 @@ -6,14 +6,27 @@ package org.jetbrains.kotlin.idea import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl +import com.intellij.openapi.application.ModalityState +import com.intellij.openapi.application.ReadAction.nonBlocking import com.intellij.openapi.project.Project -import org.jetbrains.kotlin.idea.util.runWhenSmart +import com.intellij.psi.search.FileTypeIndex +import com.intellij.psi.search.GlobalSearchScope +import com.intellij.util.concurrency.AppExecutorUtil +import java.util.concurrent.Callable // BUNCH: 201 fun runActivity(project: Project) { - project.runWhenSmart { - val daemonCodeAnalyzer = DaemonCodeAnalyzerImpl.getInstanceEx(project) as DaemonCodeAnalyzerImpl - daemonCodeAnalyzer.runLocalInspectionPassAfterCompletionOfGeneralHighlightPass(true) - } + nonBlocking(Callable { + return@Callable FileTypeIndex.containsFileOfType(KotlinFileType.INSTANCE, GlobalSearchScope.projectScope(project)) + }) + .inSmartMode(project) + .expireWith(project) + .finishOnUiThread(ModalityState.any()) { hasKotlinFiles -> + if (!hasKotlinFiles) return@finishOnUiThread + + val daemonCodeAnalyzer = DaemonCodeAnalyzerImpl.getInstanceEx(project) as DaemonCodeAnalyzerImpl + daemonCodeAnalyzer.runLocalInspectionPassAfterCompletionOfGeneralHighlightPass(true) + } + .submit(AppExecutorUtil.getAppExecutorService()) } \ No newline at end of file