Classes by package index now contains only top-level classes

This commit is contained in:
Valentin Kipyatkov
2014-11-28 20:03:56 +03:00
parent 375a8f6049
commit a50f9863b3
5 changed files with 20 additions and 24 deletions
@@ -41,7 +41,7 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.plugin.decompiler.navigation.JetSourceNavigationHelper;
import org.jetbrains.jet.plugin.project.ResolveSessionForBodies;
import org.jetbrains.jet.plugin.stubindex.JetClassByPackageIndex;
import org.jetbrains.jet.plugin.stubindex.JetTopLevelClassByPackageIndex;
import org.jetbrains.jet.plugin.stubindex.JetFullClassNameIndex;
import org.jetbrains.jet.plugin.stubindex.PackageIndexUtil;
@@ -201,7 +201,7 @@ public class IDELightClassGenerationSupport extends LightClassGenerationSupport
public Collection<JetClassOrObject> findClassOrObjectDeclarationsInPackage(
@NotNull FqName packageFqName, @NotNull GlobalSearchScope searchScope
) {
return JetClassByPackageIndex.getInstance().get(packageFqName.asString(), project, kotlinSources(searchScope, project));
return JetTopLevelClassByPackageIndex.getInstance().get(packageFqName.asString(), project, kotlinSources(searchScope, project));
}
@Override
@@ -25,16 +25,16 @@ import org.jetbrains.jet.lang.psi.JetClassOrObject;
import java.util.Collection;
public class JetClassByPackageIndex extends StringStubIndexExtension<JetClassOrObject> {
private static final StubIndexKey<String, JetClassOrObject> KEY = KotlinIndexUtil.createIndexKey(JetClassByPackageIndex.class);
public class JetTopLevelClassByPackageIndex extends StringStubIndexExtension<JetClassOrObject> {
private static final StubIndexKey<String, JetClassOrObject> KEY = KotlinIndexUtil.createIndexKey(JetTopLevelClassByPackageIndex.class);
private static final JetClassByPackageIndex ourInstance = new JetClassByPackageIndex();
private static final JetTopLevelClassByPackageIndex ourInstance = new JetTopLevelClassByPackageIndex();
public static JetClassByPackageIndex getInstance() {
public static JetTopLevelClassByPackageIndex getInstance() {
return ourInstance;
}
private JetClassByPackageIndex() {}
private JetTopLevelClassByPackageIndex() {}
@NotNull
@Override
@@ -41,13 +41,16 @@ public class StubIndexServiceImpl implements StubIndexService {
sink.occurrence(JetClassShortNameIndex.getInstance().getKey(), name);
}
FqName fqn = stub.getFqName();
if (fqn != null) {
sink.occurrence(JetFullClassNameIndex.getInstance().getKey(), fqn.asString());
FqName fqName = stub.getFqName();
if (fqName != null) {
sink.occurrence(JetFullClassNameIndex.getInstance().getKey(), fqName.asString());
if (stub.isTopLevel()) {
sink.occurrence(JetTopLevelClassByPackageIndex.getInstance().getKey(), fqName.parent().asString());
}
}
indexSuperNames(stub, sink);
recordClassOrObjectByPackage(stub, sink);
}
@Override
@@ -78,10 +81,13 @@ public class StubIndexServiceImpl implements StubIndexService {
if (fqName != null) {
sink.occurrence(JetFullClassNameIndex.getInstance().getKey(), fqName.asString());
if (stub.isTopLevel()) {
sink.occurrence(JetTopLevelClassByPackageIndex.getInstance().getKey(), fqName.parent().asString());
}
}
indexSuperNames(stub, sink);
recordClassOrObjectByPackage(stub, sink);
}
private static void indexSuperNames(KotlinClassOrObjectStub<? extends JetClassOrObject> stub, IndexSink sink) {
@@ -90,15 +96,6 @@ public class StubIndexServiceImpl implements StubIndexService {
}
}
private static void recordClassOrObjectByPackage(StubElement<? extends JetClassOrObject> stub, IndexSink sink) {
StubElement parentStub = stub.getParentStub();
if (parentStub instanceof KotlinFileStub) {
KotlinFileStub jetFileStub = (KotlinFileStub) parentStub;
FqName packageFqName = jetFileStub.getPackageFqName();
sink.occurrence(JetClassByPackageIndex.getInstance().getKey(), packageFqName.asString());
}
}
@Override
public void indexFunction(KotlinFunctionStub stub, IndexSink sink) {
String name = stub.getName();
@@ -31,7 +31,6 @@ import org.jetbrains.jet.lang.resolve.lazy.data.JetClassInfoUtil
import org.jetbrains.jet.lang.resolve.lazy.ResolveSessionUtils
import java.util.ArrayList
import org.jetbrains.jet.lang.resolve.scopes.DescriptorKindFilter
import org.jetbrains.jet.plugin.stubindex.JetClassByPackageIndex
import org.jetbrains.jet.plugin.stubindex.JetTopLevelFunctionByPackageIndex
import com.intellij.psi.stubs.StringStubIndexExtension
import org.jetbrains.jet.plugin.stubindex.JetTopLevelPropertyByPackageIndex
@@ -50,7 +49,7 @@ public class StubBasedPackageMemberDeclarationProvider(
}
if (kindFilter.acceptsKinds(DescriptorKindFilter.CLASSIFIERS_MASK)) {
addFromIndex(JetClassByPackageIndex.getInstance())
addFromIndex(org.jetbrains.jet.plugin.stubindex.JetTopLevelClassByPackageIndex.getInstance())
}
if (kindFilter.acceptsKinds(DescriptorKindFilter.FUNCTIONS_MASK)) {
+1 -1
View File
@@ -394,7 +394,7 @@
<stubElementTypeHolder class="org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes"/>
<stubIndex implementation="org.jetbrains.jet.plugin.stubindex.JetExactPackagesIndex"/>
<stubIndex implementation="org.jetbrains.jet.plugin.stubindex.JetClassByPackageIndex"/>
<stubIndex implementation="org.jetbrains.jet.plugin.stubindex.JetTopLevelClassByPackageIndex"/>
<stubIndex implementation="org.jetbrains.jet.plugin.stubindex.JetTopLevelFunctionByPackageIndex"/>
<stubIndex implementation="org.jetbrains.jet.plugin.stubindex.JetTopLevelPropertyByPackageIndex"/>
<stubIndex implementation="org.jetbrains.jet.plugin.stubindex.JetClassShortNameIndex"/>