diff --git a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SelfElementInfo.java b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SelfElementInfo.java index 967f326f1948..66d77e0495c5 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SelfElementInfo.java +++ b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SelfElementInfo.java @@ -176,16 +176,7 @@ public class SelfElementInfo extends SmartPointerElementInfo { @Override public PsiFile compute() { if (project.isDisposed()) return null; - VirtualFile child; - if (virtualFile.isValid()) { - child = virtualFile; - } - else { - VirtualFile vParent = virtualFile.getParent(); - if (vParent == null || !vParent.isValid()) return null; - String name = virtualFile.getName(); - child = vParent.findChild(name); - } + VirtualFile child = restoreVFile(virtualFile); if (child == null || !child.isValid()) return null; PsiFile file = PsiManager.getInstance(project).findFile(child); if (file != null && language != null) { @@ -204,16 +195,7 @@ public class SelfElementInfo extends SmartPointerElementInfo { return ApplicationManager.getApplication().runReadAction(new Computable() { @Override public PsiDirectory compute() { - VirtualFile child; - if (virtualFile.isValid()) { - child = virtualFile; - } - else { - VirtualFile vParent = virtualFile.getParent(); - if (vParent == null || !vParent.isDirectory()) return null; - String name = virtualFile.getName(); - child = vParent.findChild(name); - } + VirtualFile child = restoreVFile(virtualFile); if (child == null || !child.isValid()) return null; PsiDirectory file = PsiManager.getInstance(project).findDirectory(child); if (file == null || !file.isValid()) return null; @@ -222,6 +204,21 @@ public class SelfElementInfo extends SmartPointerElementInfo { }); } + @Nullable + private static VirtualFile restoreVFile(VirtualFile virtualFile) { + VirtualFile child; + if (virtualFile.isValid()) { + child = virtualFile; + } + else { + VirtualFile vParent = virtualFile.getParent(); + if (vParent == null || !vParent.isValid()) return null; + String name = virtualFile.getName(); + child = vParent.findChild(name); + } + return child; + } + @Override public int elementHashCode() { return getVirtualFile().hashCode();