diff --git a/platform/core-api/src/com/intellij/psi/PsiInvalidElementAccessException.java b/platform/core-api/src/com/intellij/psi/PsiInvalidElementAccessException.java index c25da4246627..ea31e2831f96 100644 --- a/platform/core-api/src/com/intellij/psi/PsiInvalidElementAccessException.java +++ b/platform/core-api/src/com/intellij/psi/PsiInvalidElementAccessException.java @@ -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";