diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileElementType.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileElementType.java index aa8dfb5f425..1ea0a916d18 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileElementType.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileElementType.java @@ -82,6 +82,6 @@ public class JetFileElementType extends IStubFileElementType { @Override public void indexStub(final PsiJetFileStub stub, final IndexSink sink) { - // Don't index file + StubIndexServiceFactory.getInstance().indexFile(stub, sink); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/StubIndexService.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/StubIndexService.java index 82c16c4fd26..594b4c3ede3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/StubIndexService.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/StubIndexService.java @@ -25,6 +25,10 @@ public interface StubIndexService { * Default implementation with no indexing. */ StubIndexService NO_INDEX_SERVICE = new StubIndexService() { + @Override + public void indexFile(PsiJetFileStub stub, IndexSink sink) { + } + @Override public void indexClass(PsiJetClassStub stub, IndexSink sink) { } @@ -46,6 +50,7 @@ public interface StubIndexService { } }; + void indexFile(PsiJetFileStub stub, IndexSink sink); void indexClass(PsiJetClassStub stub, IndexSink sink); void indexFunction(PsiJetFunctionStub stub, IndexSink sink); void indexObject(PsiJetObjectStub stub, IndexSink sink); diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index 86b4135d9b1..0a59aeb5f4f 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -203,6 +203,7 @@ + diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/JetIndexKeys.java b/idea/src/org/jetbrains/jet/plugin/stubindex/JetIndexKeys.java index de9e04a8e83..8bc6240395a 100644 --- a/idea/src/org/jetbrains/jet/plugin/stubindex/JetIndexKeys.java +++ b/idea/src/org/jetbrains/jet/plugin/stubindex/JetIndexKeys.java @@ -20,6 +20,8 @@ import com.intellij.psi.stubs.StubIndexKey; import org.jetbrains.jet.lang.psi.*; public interface JetIndexKeys { + StubIndexKey PACKAGE_DECLARATION_KEY = StubIndexKey.createIndexKey("jet.file.package.declaration"); + StubIndexKey SHORT_NAME_KEY = StubIndexKey.createIndexKey("jet.class.shortName"); StubIndexKey SUPERCLASS_NAME_KEY = StubIndexKey.createIndexKey("jet.class.superClassName"); StubIndexKey FQN_KEY = StubIndexKey.createIndexKey("jet.fqn"); diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/JetPackageDeclarationIndex.java b/idea/src/org/jetbrains/jet/plugin/stubindex/JetPackageDeclarationIndex.java new file mode 100644 index 00000000000..2175e9d3b87 --- /dev/null +++ b/idea/src/org/jetbrains/jet/plugin/stubindex/JetPackageDeclarationIndex.java @@ -0,0 +1,45 @@ +/* + * Copyright 2010-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.jet.plugin.stubindex; + +import com.intellij.openapi.project.Project; +import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.stubs.StringStubIndexExtension; +import com.intellij.psi.stubs.StubIndexKey; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.lang.psi.JetFile; + +import java.util.Collection; + +public class JetPackageDeclarationIndex extends StringStubIndexExtension { + private static final JetPackageDeclarationIndex ourInstance = new JetPackageDeclarationIndex(); + + public static JetPackageDeclarationIndex getInstance() { + return ourInstance; + } + + @NotNull + @Override + public StubIndexKey getKey() { + return JetIndexKeys.PACKAGE_DECLARATION_KEY; + } + + @Override + public Collection get(final String fqName, final Project project, @NotNull final GlobalSearchScope scope) { + return super.get(fqName, project, new JetSourceFilterScope(scope)); + } +} diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java b/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java index e8c945b3ea8..dc1ea290bc2 100644 --- a/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java +++ b/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java @@ -23,6 +23,12 @@ import org.jetbrains.jet.lang.resolve.name.FqName; public class StubIndexServiceImpl implements StubIndexService { + @Override + public void indexFile(PsiJetFileStub stub, IndexSink sink) { + String packageName = stub.getPackageName(); + sink.occurrence(JetIndexKeys.PACKAGE_DECLARATION_KEY, packageName == null ? "" : packageName); + } + @Override public void indexClass(PsiJetClassStub stub, IndexSink sink) { String name = stub.getName();