Workaround for IndexNotReadyException from icon provider (EA-118965)
Provider is DumbAware and isn't expected to access indexes.
This commit is contained in:
committed by
Nikolay Krasko
parent
2251440f04
commit
8f566132e4
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.idea
|
|||||||
|
|
||||||
import com.intellij.ide.IconProvider
|
import com.intellij.ide.IconProvider
|
||||||
import com.intellij.openapi.project.DumbAware
|
import com.intellij.openapi.project.DumbAware
|
||||||
|
import com.intellij.openapi.project.IndexNotReadyException
|
||||||
import com.intellij.openapi.util.Iconable
|
import com.intellij.openapi.util.Iconable
|
||||||
import com.intellij.openapi.util.text.StringUtil
|
import com.intellij.openapi.util.text.StringUtil
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
@@ -52,7 +53,15 @@ class KotlinIconProvider : IconProvider(), DumbAware {
|
|||||||
val result = psiElement.getBaseIcon()
|
val result = psiElement.getBaseIcon()
|
||||||
if (flags and Iconable.ICON_FLAG_VISIBILITY > 0 && result != null && (psiElement is KtModifierListOwner && psiElement !is KtClassInitializer)) {
|
if (flags and Iconable.ICON_FLAG_VISIBILITY > 0 && result != null && (psiElement is KtModifierListOwner && psiElement !is KtClassInitializer)) {
|
||||||
val list = psiElement.modifierList
|
val list = psiElement.modifierList
|
||||||
return createRowIcon(result.addExpectActualMarker(psiElement), getVisibilityIcon(list))
|
val visibilityIcon = getVisibilityIcon(list)
|
||||||
|
|
||||||
|
val withExpectedActual: Icon = try {
|
||||||
|
result.addExpectActualMarker(psiElement)
|
||||||
|
} catch (indexNotReady: IndexNotReadyException) {
|
||||||
|
result
|
||||||
|
}
|
||||||
|
|
||||||
|
createRowIcon(withExpectedActual, visibilityIcon)
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user