diff --git a/java/java-psi-impl/src/com/intellij/psi/ClassFileViewProvider.java b/java/java-psi-impl/src/com/intellij/psi/ClassFileViewProvider.java index 27e4b34253a2..aa2cd7e42cdb 100644 --- a/java/java-psi-impl/src/com/intellij/psi/ClassFileViewProvider.java +++ b/java/java-psi-impl/src/com/intellij/psi/ClassFileViewProvider.java @@ -43,16 +43,21 @@ public class ClassFileViewProvider extends SingleRootFileViewProvider { } // skip inners & anonymous + if (isInnerClass(vFile)) return null; + + return new ClsFileImpl(PsiManager.getInstance(project), this); + } + + public static boolean isInnerClass(VirtualFile vFile) { String name = vFile.getNameWithoutExtension(); int index = name.lastIndexOf('$', name.length()); if (index > 0 && index < name.length() - 1) { String supposedParentName = name.substring(0, index) + ".class"; if (vFile.getParent().findChild(supposedParentName) != null) { - return null; + return true; } } - - return new ClsFileImpl(PsiManager.getInstance(project), this); + return false; } @NotNull diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClassFileStubBuilder.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClassFileStubBuilder.java index ccde0ccb3c12..3294e8f43199 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClassFileStubBuilder.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClassFileStubBuilder.java @@ -19,6 +19,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.ClassFileViewProvider; import com.intellij.psi.impl.source.JavaFileElementType; import com.intellij.psi.stubs.BinaryFileStubBuilder; import com.intellij.psi.stubs.PsiFileStub; @@ -39,7 +40,7 @@ public class ClassFileStubBuilder implements BinaryFileStubBuilder { @Override public boolean acceptsFile(final VirtualFile file) { - return true; + return !ClassFileViewProvider.isInnerClass(file); } @Override