From 8f566132e460bfdf9db4a0ba52ff1d9834e6dbe4 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 13 Aug 2018 19:35:09 +0300 Subject: [PATCH] Workaround for IndexNotReadyException from icon provider (EA-118965) Provider is DumbAware and isn't expected to access indexes. --- .../org/jetbrains/kotlin/idea/KotlinIconProvider.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinIconProvider.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinIconProvider.kt index ddc45d7d996..d6e64babe2d 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinIconProvider.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinIconProvider.kt @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.idea import com.intellij.ide.IconProvider import com.intellij.openapi.project.DumbAware +import com.intellij.openapi.project.IndexNotReadyException import com.intellij.openapi.util.Iconable import com.intellij.openapi.util.text.StringUtil import com.intellij.psi.PsiElement @@ -52,7 +53,15 @@ class KotlinIconProvider : IconProvider(), DumbAware { val result = psiElement.getBaseIcon() if (flags and Iconable.ICON_FLAG_VISIBILITY > 0 && result != null && (psiElement is KtModifierListOwner && psiElement !is KtClassInitializer)) { 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 }