EA-39110 - SOE: PsiInvalidElementAccessException.reason

This commit is contained in:
Alexey Kudravtsev
2012-09-12 15:07:30 +04:00
parent c90d81e702
commit 203be7fb3a
@@ -16,7 +16,6 @@
package com.intellij.psi;
import com.intellij.lang.ASTNode;
import com.intellij.lang.Language;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NonNls;
@@ -56,12 +55,13 @@ public class PsiInvalidElementAccessException extends RuntimeException {
@NonNls
@NotNull
private static String reason(@NotNull PsiElement root){
ASTNode element;
for (element = root.getNode(); element != null && element.getTreeParent() != null; element = element.getTreeParent()) {
PsiElement element = root instanceof PsiFile ? root : root.getParent();
if (element == null) return "parent is null";
while (element != null && !(element instanceof PsiFile) && element.getParent() != null) {
element = element.getParent();
}
PsiElement psiElement = element == null ? null : element.getPsi();
PsiFile file = psiElement instanceof PsiFile ? (PsiFile)psiElement : null;
if (file == null) return root.getParent() == null ? "parent is null" : "containing file is null";
PsiFile file = element instanceof PsiFile ? (PsiFile)element : null;
if (file == null) return "containing file is null";
FileViewProvider provider = file.getViewProvider();
VirtualFile vFile = provider.getVirtualFile();
if (!vFile.isValid()) return vFile+" is invalid";