From 7f2720708bcbce3d8317e877b3df41d2c7303bca Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Mon, 22 Aug 2011 21:37:31 +0400 Subject: [PATCH] IDEA-73378 AIOOBE at ClsFileImpl.getMirror() on opening some .class files --- .../src/com/intellij/psi/impl/compiled/ClsFileImpl.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/java/java-impl/src/com/intellij/psi/impl/compiled/ClsFileImpl.java b/java/java-impl/src/com/intellij/psi/impl/compiled/ClsFileImpl.java index 2daaf6045ef0..201e66489d24 100644 --- a/java/java-impl/src/com/intellij/psi/impl/compiled/ClsFileImpl.java +++ b/java/java-impl/src/com/intellij/psi/impl/compiled/ClsFileImpl.java @@ -280,12 +280,13 @@ public class ClsFileImpl extends ClsRepositoryPsiElement public PsiElement getMirror() { synchronized (MIRROR_LOCK) { if (myMirrorFileElement == null) { - FileDocumentManager documentManager = FileDocumentManager.getInstance(); - final Document document = documentManager.getDocument(getVirtualFile()); + VirtualFile virtualFile = getVirtualFile(); + final Document document = FileDocumentManager.getInstance().getDocument(virtualFile); String text = document.getText(); String ext = StdFileTypes.JAVA.getDefaultExtension(); - PsiClass aClass = getClasses()[0]; - String fileName = aClass.getName() + "." + ext; + PsiClass[] classes = getClasses(); + + String fileName = (classes.length > 0 ? classes[0].getName(): virtualFile.getNameWithoutExtension()) + "." + ext; PsiManager manager = getManager(); PsiFile mirror = PsiFileFactory.getInstance(manager.getProject()).createFileFromText(fileName, StdLanguages.JAVA, text, false, false); final ASTNode mirrorTreeElement = SourceTreeToPsiMap.psiElementToTree(mirror);