From a50f9863b37cad39d9b0ce593326733ff6d6aafa Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Fri, 28 Nov 2014 20:03:56 +0300 Subject: [PATCH] Classes by package index now contains only top-level classes --- .../IDELightClassGenerationSupport.java | 4 +-- ...va => JetTopLevelClassByPackageIndex.java} | 10 ++++---- .../stubindex/StubIndexServiceImpl.java | 25 ++++++++----------- ...ubBasedPackageMemberDeclarationProvider.kt | 3 +-- idea/src/META-INF/plugin.xml | 2 +- 5 files changed, 20 insertions(+), 24 deletions(-) rename idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/{JetClassByPackageIndex.java => JetTopLevelClassByPackageIndex.java} (78%) diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/IDELightClassGenerationSupport.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/IDELightClassGenerationSupport.java index aacd14612b5..2be96cd68ff 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/IDELightClassGenerationSupport.java +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/IDELightClassGenerationSupport.java @@ -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 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 diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetClassByPackageIndex.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelClassByPackageIndex.java similarity index 78% rename from idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetClassByPackageIndex.java rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelClassByPackageIndex.java index a39a73a2de6..1a99603ed94 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetClassByPackageIndex.java +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelClassByPackageIndex.java @@ -25,16 +25,16 @@ import org.jetbrains.jet.lang.psi.JetClassOrObject; import java.util.Collection; -public class JetClassByPackageIndex extends StringStubIndexExtension { - private static final StubIndexKey KEY = KotlinIndexUtil.createIndexKey(JetClassByPackageIndex.class); +public class JetTopLevelClassByPackageIndex extends StringStubIndexExtension { + private static final StubIndexKey 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 diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java index 3108f9c2d62..ebe5d4bbaf7 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java @@ -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 stub, IndexSink sink) { @@ -90,15 +96,6 @@ public class StubIndexServiceImpl implements StubIndexService { } } - private static void recordClassOrObjectByPackage(StubElement 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(); diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/StubBasedPackageMemberDeclarationProvider.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/StubBasedPackageMemberDeclarationProvider.kt index ef5020f9936..0e596e2d078 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/StubBasedPackageMemberDeclarationProvider.kt +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/StubBasedPackageMemberDeclarationProvider.kt @@ -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)) { diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index e9b7fbdb93a..1b79a933127 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -394,7 +394,7 @@ - +