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 09a1357a736b..f081f8ecb5e7 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 @@ -21,6 +21,7 @@ import com.intellij.psi.impl.PsiFileEx; import com.intellij.psi.impl.PsiManagerEx; import com.intellij.psi.impl.PsiManagerImpl; import com.intellij.psi.impl.java.stubs.PsiClassStub; +import com.intellij.psi.impl.java.stubs.impl.PsiJavaFileStubImpl; import com.intellij.psi.impl.source.PsiFileWithStubSupport; import com.intellij.psi.impl.source.SourceTreeToPsiMap; import com.intellij.psi.impl.source.resolve.FileContextUtil; @@ -365,9 +366,12 @@ public class ClsFileImpl extends ClsRepositoryPsiElement } stubHolder = StubTree.readOrBuild(getProject(), getVirtualFile()); if (stubHolder == null) { - StubTree.readOrBuild(getProject(), getVirtualFile()); - throw new AssertionError("No stub for class file " + getVirtualFile().getPresentableUrl()); + // Must be corrupted classfile + LOG.info("Class file is corrupted: " + getVirtualFile().getPresentableUrl()); + + stubHolder = new StubTree(new PsiJavaFileStubImpl("corrupted.classfiles", true)); } + myStub = new SoftReference(stubHolder); ((PsiFileStubImpl)stubHolder.getRoot()).setPsi(this);