delegate to ClsStubBuilder for inner class identification

This commit is contained in:
Maxim.Mossienko
2013-12-09 13:02:46 +01:00
parent c1e0536b53
commit a085c19cac
2 changed files with 9 additions and 11 deletions
@@ -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
@@ -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<VirtualFile> {