From 3bf98e7fcaef6a1d05dad6cd5f4d7397f0ec7025 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 28 Apr 2017 14:06:55 +0200 Subject: [PATCH] tolerate INRE when rendering field project view nodes (EA-100762 - INRE: FileBasedIndexImpl.handleDumbMode) --- .../ide/projectView/impl/nodes/PsiFieldNode.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PsiFieldNode.java b/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PsiFieldNode.java index 0869542cf5a9..9416da6ebce5 100644 --- a/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PsiFieldNode.java +++ b/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PsiFieldNode.java @@ -18,7 +18,9 @@ package com.intellij.ide.projectView.impl.nodes; import com.intellij.ide.projectView.PresentationData; import com.intellij.ide.projectView.ViewSettings; import com.intellij.ide.util.treeView.AbstractTreeNode; +import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiField; import com.intellij.psi.PsiSubstitutor; @@ -26,6 +28,7 @@ import com.intellij.psi.util.PsiFormatUtil; import com.intellij.psi.util.PsiFormatUtilBase; import java.util.Collection; +import java.util.Objects; public class PsiFieldNode extends BasePsiMemberNode{ public PsiFieldNode(Project project, PsiField value, ViewSettings viewSettings) { @@ -39,9 +42,16 @@ public class PsiFieldNode extends BasePsiMemberNode{ @Override public void updateImpl(PresentationData data) { - String name = PsiFormatUtil.formatVariable(getValue(), - PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_TYPE | PsiFormatUtilBase.TYPE_AFTER | PsiFormatUtilBase.SHOW_INITIALIZER, - PsiSubstitutor.EMPTY); + PsiField field = Objects.requireNonNull(getValue()); + String name; + try { + name = PsiFormatUtil.formatVariable(field, + PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_TYPE | PsiFormatUtilBase.TYPE_AFTER | PsiFormatUtilBase.SHOW_INITIALIZER, + PsiSubstitutor.EMPTY); + } + catch (IndexNotReadyException e) { + name = StringUtil.notNullize(field.getName()); + } int c = name.indexOf('\n'); if (c > -1) { name = name.substring(0, c - 1);