Allow to search marker classes in dumb mode (EA-67309)

This commit is contained in:
Nikolay Krasko
2015-08-27 19:02:32 +03:00
parent 4c9af37526
commit 1a47d6754d
3 changed files with 24 additions and 20 deletions
@@ -18,8 +18,10 @@ package org.jetbrains.kotlin.idea.versions;
import com.google.common.collect.ImmutableList;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.Ref;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiClass;
import com.intellij.psi.search.GlobalSearchScope;
@@ -39,13 +41,21 @@ public class KotlinRuntimeLibraryCoreUtil {
return ApplicationManager.getApplication().runReadAction(new Computable<PsiClass>() {
@Override
public PsiClass compute() {
for (String className : CANDIDATE_CLASSES) {
PsiClass psiClass = JavaPsiFacade.getInstance(project).findClass(className, scope);
if (psiClass != null) {
return psiClass;
final Ref<PsiClass> result = new Ref<PsiClass>();
DumbService.getInstance(project).withAlternativeResolveEnabled(new Runnable() {
@Override
public void run() {
for (String className : CANDIDATE_CLASSES) {
PsiClass psiClass = JavaPsiFacade.getInstance(project).findClass(className, scope);
if (psiClass != null) {
result.set(psiClass);
return;
}
}
}
}
return null;
});
return result.get();
}
});
}