From ef087c602ccbaa4189c77977073ae0c461a6a876 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Tue, 8 Mar 2011 19:19:50 +0100 Subject: [PATCH] EA-26016 (more logging) --- .../psi/impl/source/tree/LeafPsiElement.java | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/LeafPsiElement.java b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/LeafPsiElement.java index 0e873c668cbc..26d4ce96484f 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/LeafPsiElement.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/LeafPsiElement.java @@ -26,6 +26,7 @@ import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.vcs.FileStatus; +import com.intellij.pom.Navigatable; import com.intellij.psi.*; import com.intellij.psi.impl.CheckUtil; import com.intellij.psi.impl.SharedPsiElementImplUtil; @@ -79,10 +80,9 @@ public class LeafPsiElement extends LeafElement implements PsiElement, Navigatio } public PsiFile getContainingFile() { - PsiFile file = SharedImplUtil.getContainingFile(this); - if (file == null || !file.isValid()) { - invalid(); - } + final PsiFile file = SharedImplUtil.getContainingFile(this); + if (file == null || !file.isValid()) invalid(); + //noinspection ConstantConditions return file; } @@ -92,7 +92,15 @@ public class LeafPsiElement extends LeafElement implements PsiElement, Navigatio indicator.checkCanceled(); } - throw new PsiInvalidElementAccessException(this); + final StringBuilder builder = new StringBuilder(); + TreeElement element = this; + while (element != null) { + if (element != this) builder.append(" / "); + builder.append(element.getClass().getName()).append(':').append(element.getElementType()); + element = element.getTreeParent(); + } + + throw new PsiInvalidElementAccessException(this, builder.toString()); } public PsiElement findElementAt(int offset) { @@ -220,7 +228,7 @@ public class LeafPsiElement extends LeafElement implements PsiElement, Navigatio public Project getProject() { final PsiManager manager = getManager(); if (manager == null) invalid(); - + //noinspection ConstantConditions return manager.getProject(); } @@ -246,7 +254,10 @@ public class LeafPsiElement extends LeafElement implements PsiElement, Navigatio } public void navigate(boolean requestFocus) { - EditSourceUtil.getDescriptor(this).navigate(requestFocus); + final Navigatable descriptor = EditSourceUtil.getDescriptor(this); + if (descriptor != null) { + descriptor.navigate(requestFocus); + } } public boolean canNavigate() {