From b46a384549f6a24ade0bcfbdc7bcd466d1bf0f20 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Sun, 8 Dec 2013 21:11:33 +0100 Subject: [PATCH] do not claim inner / anonymous classes as indexable (we process them from top level class) --- .../src/com/intellij/psi/ClassFileViewProvider.java | 11 ++++++++--- .../psi/impl/compiled/ClassFileStubBuilder.java | 3 ++- 2 files changed, 10 insertions(+), 4 deletions(-) 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