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.lang.resolve.name.Name;
import org.jetbrains.jet.plugin.decompiler.navigation.JetSourceNavigationHelper; import org.jetbrains.jet.plugin.decompiler.navigation.JetSourceNavigationHelper;
import org.jetbrains.jet.plugin.project.ResolveSessionForBodies; 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.JetFullClassNameIndex;
import org.jetbrains.jet.plugin.stubindex.PackageIndexUtil; import org.jetbrains.jet.plugin.stubindex.PackageIndexUtil;
@@ -201,7 +201,7 @@ public class IDELightClassGenerationSupport extends LightClassGenerationSupport
public Collection<JetClassOrObject> findClassOrObjectDeclarationsInPackage( public Collection<JetClassOrObject> findClassOrObjectDeclarationsInPackage(
@NotNull FqName packageFqName, @NotNull GlobalSearchScope searchScope @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 @Override
@@ -25,16 +25,16 @@ import org.jetbrains.jet.lang.psi.JetClassOrObject;
import java.util.Collection; import java.util.Collection;
public class JetClassByPackageIndex extends StringStubIndexExtension<JetClassOrObject> { public class JetTopLevelClassByPackageIndex extends StringStubIndexExtension<JetClassOrObject> {
private static final StubIndexKey<String, JetClassOrObject> KEY = KotlinIndexUtil.createIndexKey(JetClassByPackageIndex.class); 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; return ourInstance;
} }
private JetClassByPackageIndex() {} private JetTopLevelClassByPackageIndex() {}
@NotNull @NotNull
@Override @Override
@@ -41,13 +41,16 @@ public class StubIndexServiceImpl implements StubIndexService {
sink.occurrence(JetClassShortNameIndex.getInstance().getKey(), name); sink.occurrence(JetClassShortNameIndex.getInstance().getKey(), name);
} }
FqName fqn = stub.getFqName(); FqName fqName = stub.getFqName();
if (fqn != null) { if (fqName != null) {
sink.occurrence(JetFullClassNameIndex.getInstance().getKey(), fqn.asString()); sink.occurrence(JetFullClassNameIndex.getInstance().getKey(), fqName.asString());
if (stub.isTopLevel()) {
sink.occurrence(JetTopLevelClassByPackageIndex.getInstance().getKey(), fqName.parent().asString());
}
} }
indexSuperNames(stub, sink); indexSuperNames(stub, sink);
recordClassOrObjectByPackage(stub, sink);
} }
@Override @Override
@@ -78,10 +81,13 @@ public class StubIndexServiceImpl implements StubIndexService {
if (fqName != null) { if (fqName != null) {
sink.occurrence(JetFullClassNameIndex.getInstance().getKey(), fqName.asString()); sink.occurrence(JetFullClassNameIndex.getInstance().getKey(), fqName.asString());
if (stub.isTopLevel()) {
sink.occurrence(JetTopLevelClassByPackageIndex.getInstance().getKey(), fqName.parent().asString());
}
} }
indexSuperNames(stub, sink); indexSuperNames(stub, sink);
recordClassOrObjectByPackage(stub, sink);
} }
private static void indexSuperNames(KotlinClassOrObjectStub<? extends JetClassOrObject> stub, IndexSink 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 @Override
public void indexFunction(KotlinFunctionStub stub, IndexSink sink) { public void indexFunction(KotlinFunctionStub stub, IndexSink sink) {
String name = stub.getName(); 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 org.jetbrains.jet.lang.resolve.lazy.ResolveSessionUtils
import java.util.ArrayList import java.util.ArrayList
import org.jetbrains.jet.lang.resolve.scopes.DescriptorKindFilter import org.jetbrains.jet.lang.resolve.scopes.DescriptorKindFilter
import org.jetbrains.jet.plugin.stubindex.JetClassByPackageIndex
import org.jetbrains.jet.plugin.stubindex.JetTopLevelFunctionByPackageIndex import org.jetbrains.jet.plugin.stubindex.JetTopLevelFunctionByPackageIndex
import com.intellij.psi.stubs.StringStubIndexExtension import com.intellij.psi.stubs.StringStubIndexExtension
import org.jetbrains.jet.plugin.stubindex.JetTopLevelPropertyByPackageIndex import org.jetbrains.jet.plugin.stubindex.JetTopLevelPropertyByPackageIndex
@@ -50,7 +49,7 @@ public class StubBasedPackageMemberDeclarationProvider(
} }
if (kindFilter.acceptsKinds(DescriptorKindFilter.CLASSIFIERS_MASK)) { if (kindFilter.acceptsKinds(DescriptorKindFilter.CLASSIFIERS_MASK)) {
addFromIndex(JetClassByPackageIndex.getInstance()) addFromIndex(org.jetbrains.jet.plugin.stubindex.JetTopLevelClassByPackageIndex.getInstance())
} }
if (kindFilter.acceptsKinds(DescriptorKindFilter.FUNCTIONS_MASK)) { if (kindFilter.acceptsKinds(DescriptorKindFilter.FUNCTIONS_MASK)) {
+1 -1
View File
@@ -394,7 +394,7 @@
<stubElementTypeHolder class="org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes"/> <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.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.JetTopLevelFunctionByPackageIndex"/>
<stubIndex implementation="org.jetbrains.jet.plugin.stubindex.JetTopLevelPropertyByPackageIndex"/> <stubIndex implementation="org.jetbrains.jet.plugin.stubindex.JetTopLevelPropertyByPackageIndex"/>
<stubIndex implementation="org.jetbrains.jet.plugin.stubindex.JetClassShortNameIndex"/> <stubIndex implementation="org.jetbrains.jet.plugin.stubindex.JetClassShortNameIndex"/>