tolerate INRE when rendering field project view nodes (EA-100762 - INRE: FileBasedIndexImpl.handleDumbMode)

This commit is contained in:
peter
2017-04-28 14:06:55 +02:00
parent a09f0219c3
commit 3bf98e7fca
@@ -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<PsiField>{
public PsiFieldNode(Project project, PsiField value, ViewSettings viewSettings) {
@@ -39,9 +42,16 @@ public class PsiFieldNode extends BasePsiMemberNode<PsiField>{
@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);