LightClasses: Searching indexes excluding library sources
This commit is contained in:
+8
-9
@@ -26,15 +26,14 @@ import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
|||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.psi.JetPsiUtil;
|
import org.jetbrains.jet.lang.psi.JetPsiUtil;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.plugin.stubindex.JetAllPackagesIndex;
|
import org.jetbrains.jet.plugin.stubindex.*;
|
||||||
import org.jetbrains.jet.plugin.stubindex.JetClassByPackageIndex;
|
|
||||||
import org.jetbrains.jet.plugin.stubindex.JetFullClassNameIndex;
|
|
||||||
import org.jetbrains.jet.plugin.stubindex.JetPackageDeclarationIndex;
|
|
||||||
import org.jetbrains.jet.util.QualifiedNamesUtil;
|
import org.jetbrains.jet.util.QualifiedNamesUtil;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static org.jetbrains.jet.plugin.stubindex.JetSourceFilterScope.kotlinSources;
|
||||||
|
|
||||||
public class IDELightClassGenerationSupport extends LightClassGenerationSupport {
|
public class IDELightClassGenerationSupport extends LightClassGenerationSupport {
|
||||||
|
|
||||||
private final Project project;
|
private final Project project;
|
||||||
@@ -54,13 +53,13 @@ public class IDELightClassGenerationSupport extends LightClassGenerationSupport
|
|||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<JetClassOrObject> findClassOrObjectDeclarations(@NotNull FqName fqName, @NotNull GlobalSearchScope searchScope) {
|
public Collection<JetClassOrObject> findClassOrObjectDeclarations(@NotNull FqName fqName, @NotNull GlobalSearchScope searchScope) {
|
||||||
return JetFullClassNameIndex.getInstance().get(fqName.getFqName(), project, searchScope);
|
return JetFullClassNameIndex.getInstance().get(fqName.getFqName(), project, kotlinSources(searchScope));
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<JetFile> findFilesForPackage(@NotNull FqName fqName, @NotNull GlobalSearchScope searchScope) {
|
public Collection<JetFile> findFilesForPackage(@NotNull FqName fqName, @NotNull GlobalSearchScope searchScope) {
|
||||||
return JetPackageDeclarationIndex.getInstance().get(fqName.getFqName(), project, searchScope);
|
return JetPackageDeclarationIndex.getInstance().get(fqName.getFqName(), project, kotlinSources(searchScope));
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -68,20 +67,20 @@ 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.getFqName(), project, searchScope);
|
return JetClassByPackageIndex.getInstance().get(packageFqName.getFqName(), project, kotlinSources(searchScope));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean packageExists(
|
public boolean packageExists(
|
||||||
@NotNull FqName fqName, @NotNull GlobalSearchScope scope
|
@NotNull FqName fqName, @NotNull GlobalSearchScope scope
|
||||||
) {
|
) {
|
||||||
return !JetAllPackagesIndex.getInstance().get(fqName.getFqName(), project, scope).isEmpty();
|
return !JetAllPackagesIndex.getInstance().get(fqName.getFqName(), project, kotlinSources(scope)).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<FqName> getSubPackages(@NotNull FqName fqn, @NotNull GlobalSearchScope scope) {
|
public Collection<FqName> getSubPackages(@NotNull FqName fqn, @NotNull GlobalSearchScope scope) {
|
||||||
Collection<JetFile> files = JetAllPackagesIndex.getInstance().get(fqn.getFqName(), project, scope);
|
Collection<JetFile> files = JetAllPackagesIndex.getInstance().get(fqn.getFqName(), project, kotlinSources(scope));
|
||||||
|
|
||||||
Set<FqName> result = Sets.newHashSet();
|
Set<FqName> result = Sets.newHashSet();
|
||||||
for (JetFile file : files) {
|
for (JetFile file : files) {
|
||||||
|
|||||||
@@ -27,14 +27,20 @@ import org.jetbrains.jet.plugin.JetFileType;
|
|||||||
|
|
||||||
public class JetSourceFilterScope extends DelegatingGlobalSearchScope {
|
public class JetSourceFilterScope extends DelegatingGlobalSearchScope {
|
||||||
public static JetSourceFilterScope kotlinSourcesAndLibraries(@NotNull GlobalSearchScope delegate) {
|
public static JetSourceFilterScope kotlinSourcesAndLibraries(@NotNull GlobalSearchScope delegate) {
|
||||||
return new JetSourceFilterScope(delegate);
|
return new JetSourceFilterScope(delegate, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final ProjectFileIndex myIndex;
|
public static JetSourceFilterScope kotlinSources(@NotNull GlobalSearchScope delegate) {
|
||||||
|
return new JetSourceFilterScope(delegate, false);
|
||||||
|
}
|
||||||
|
|
||||||
private JetSourceFilterScope(@NotNull GlobalSearchScope delegate) {
|
private final ProjectFileIndex index;
|
||||||
|
private final boolean includeLibraries;
|
||||||
|
|
||||||
|
private JetSourceFilterScope(@NotNull GlobalSearchScope delegate, boolean includeLibraries) {
|
||||||
super(delegate);
|
super(delegate);
|
||||||
myIndex = ProjectRootManager.getInstance(getProject()).getFileIndex();
|
this.includeLibraries = includeLibraries;
|
||||||
|
index = ProjectRootManager.getInstance(getProject()).getFileIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -43,10 +49,11 @@ public class JetSourceFilterScope extends DelegatingGlobalSearchScope {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StdFileTypes.CLASS == file.getFileType()) {
|
if (includeLibraries && StdFileTypes.CLASS == file.getFileType()) {
|
||||||
return myIndex.isInLibraryClasses(file);
|
return index.isInLibraryClasses(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
return file.getFileType().equals(JetFileType.INSTANCE) && (myIndex.isInSourceContent(file) || myIndex.isInLibrarySource(file));
|
return file.getFileType().equals(JetFileType.INSTANCE) &&
|
||||||
|
(index.isInSourceContent(file) || includeLibraries && index.isInLibrarySource(file));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user