Use more efficient file type checks in JavaSourceFilterScope

This commit is contained in:
Dmitry Jemerov
2018-03-27 12:50:02 +02:00
parent 21a9275e60
commit 4e02fe541c
4 changed files with 9 additions and 3 deletions
@@ -16,6 +16,7 @@
package com.intellij.psi.impl.search;
import com.intellij.ide.highlighter.JavaClassFileType;
import com.intellij.openapi.fileTypes.FileTypeRegistry;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.roots.ProjectRootManager;
@@ -59,7 +60,7 @@ public class JavaSourceFilterScope extends DelegatingGlobalSearchScope {
return false;
}
if (JavaClassFileType.INSTANCE == file.getFileType()) {
if (FileTypeRegistry.getInstance().isFileOfType(file, JavaClassFileType.INSTANCE)) {
return myIndex.isInLibraryClasses(file) && (myIncludeVersions || !isVersioned(file, myIndex));
}
@@ -31,6 +31,8 @@ public abstract class FileTypeRegistry {
public abstract boolean isFileIgnored(@NotNull VirtualFile file);
public abstract boolean isFileOfType(@NotNull VirtualFile file, @NotNull FileType type);
public static FileTypeRegistry getInstance() {
return ourInstanceGetter.get();
}
@@ -72,6 +72,11 @@ public class CoreFileTypeRegistry extends FileTypeRegistry {
return getFileTypeByExtension(extension);
}
@Override
public boolean isFileOfType(@NotNull VirtualFile file, @NotNull FileType type) {
return getFileTypeByFile(file) == type;
}
@NotNull
@Override
public FileType getFileTypeByExtension(@NonNls @NotNull String extension) {
@@ -104,8 +104,6 @@ public abstract class FileTypeManager extends FileTypeRegistry {
@NotNull
public abstract List<FileNameMatcher> getAssociations(@NotNull FileType type);
public abstract boolean isFileOfType(@NotNull VirtualFile file, @NotNull FileType type);
/**
* Adds a listener for receiving notifications about changes in the list of
* registered file types.