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 3294e8f43199..dba0f1fb5ebb 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 @@ -40,7 +40,13 @@ public class ClassFileStubBuilder implements BinaryFileStubBuilder { @Override public boolean acceptsFile(final VirtualFile file) { - return !ClassFileViewProvider.isInnerClass(file); + final ClsStubBuilderFactory[] factories = Extensions.getExtensions(ClsStubBuilderFactory.EP_NAME); + for (ClsStubBuilderFactory factory : factories) { + if (!factory.isInnerClass(file)) { + return true; + } + } + return false; } @Override diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/DefaultClsStubBuilderFactory.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/DefaultClsStubBuilderFactory.java index c0bcba0f8502..526295d4cf77 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/DefaultClsStubBuilderFactory.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/DefaultClsStubBuilderFactory.java @@ -18,6 +18,7 @@ package com.intellij.psi.impl.compiled; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.ClassFileViewProvider; import com.intellij.psi.PsiClass; import com.intellij.psi.impl.java.stubs.PsiClassStub; import com.intellij.psi.impl.java.stubs.impl.PsiJavaFileStubImpl; @@ -68,16 +69,7 @@ public class DefaultClsStubBuilderFactory extends ClsStubBuilderFactory { @Override public boolean isInnerClass(VirtualFile file) { - String name = file.getNameWithoutExtension(); - int len = name.length(); - int idx = name.indexOf('$'); - - while (idx > 0) { - if (idx + 1 < len && Character.isDigit(name.charAt(idx + 1))) return true; - idx = name.indexOf('$', idx + 1); - } - - return false; + return ClassFileViewProvider.isInnerClass(file); } private static class VirtualFileInnerClassStrategy implements InnerClassSourceStrategy {