Change PluginJetFilesProvider.allFilesInProject to a simpler implementation

This commit is contained in:
Pavel V. Talanov
2014-06-24 20:22:27 +04:00
parent 0f5de48157
commit 9c46f053b6
5 changed files with 13 additions and 56 deletions
@@ -16,63 +16,22 @@
package org.jetbrains.jet.plugin.project;
import com.google.common.collect.Sets;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.FileTypeManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ContentIterator;
import com.intellij.openapi.roots.ModuleFileIndex;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.search.GlobalSearchScope;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.plugin.JetFileType;
import org.jetbrains.jet.plugin.JetPluginUtil;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.plugin.stubindex.JetAllPackagesIndex;
import org.jetbrains.jet.plugin.stubindex.JetSourceFilterScope;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
public class PluginJetFilesProvider {
public static Collection<JetFile> allFilesInProject(@NotNull final JetFile rootFile) {
final Project project = rootFile.getProject();
final Set<JetFile> files = Sets.newLinkedHashSet();
Module rootModule = ModuleUtil.findModuleForPsiElement(rootFile);
if (rootModule != null) {
Set<Module> allModules = new HashSet<Module>();
ModuleUtil.getDependencies(rootModule, allModules);
for (Module module : allModules) {
final ModuleFileIndex index = ModuleRootManager.getInstance(module).getFileIndex();
index.iterateContent(new ContentIterator() {
@Override
public boolean processFile(VirtualFile file) {
if (file.isDirectory()) return true;
if (!index.isInSourceContent(file) && !index.isInTestSourceContent(file)) return true;
if (JetPluginUtil.isKtFileInGradleProjectInWrongFolder(file, project)) return true;
FileType fileType = FileTypeManager.getInstance().getFileTypeByFile(file);
if (fileType != JetFileType.INSTANCE) return true;
PsiFile psiFile = PsiManager.getInstance(project).findFile(file);
if (psiFile instanceof JetFile) {
if (rootFile.getOriginalFile() != psiFile) {
files.add((JetFile) psiFile);
}
}
return true;
}
});
}
}
files.add(rootFile);
return files;
@NotNull
public static Collection<JetFile> allFilesInProject(@NotNull Project project) {
return JetAllPackagesIndex.getInstance().get(FqName.ROOT.asString(), project,
JetSourceFilterScope.kotlinSources(GlobalSearchScope.allScope(project)));
}
private PluginJetFilesProvider() {
@@ -84,7 +84,7 @@ public class AddOverrideToEqualsHashCodeToStringFix extends JetIntentionAction<P
@Override
protected void invoke(@NotNull Project project, Editor editor, JetFile file) throws IncorrectOperationException {
Collection<JetFile> files = PluginJetFilesProvider.allFilesInProject(file);
Collection<JetFile> files = PluginJetFilesProvider.allFilesInProject(file.getProject());
for (JetFile jetFile : files) {
for (Diagnostic diagnostic : ResolvePackage.getBindingContext(jetFile).getDiagnostics()) {
@@ -86,7 +86,7 @@ public class MigrateSureInProjectFix extends JetIntentionAction<PsiElement> {
@Override
public void invoke(@NotNull Project project, Editor editor, JetFile file) throws IncorrectOperationException {
Collection<JetFile> files = PluginJetFilesProvider.allFilesInProject(file);
Collection<JetFile> files = PluginJetFilesProvider.allFilesInProject(project);
for (JetFile jetFile : files) {
replaceUnresolvedSure(jetFile);
@@ -52,8 +52,7 @@ public class RemoveValVarFromParametersFix implements IntentionAction {
public void invoke(@NotNull Project project, Editor editor, PsiFile file) {
// TODO after M6, this quick fix should remove val/var only for current parameter
JetFile initialFile = (JetFile) file;
Collection<JetFile> files = PluginJetFilesProvider.allFilesInProject(initialFile);
Collection<JetFile> files = PluginJetFilesProvider.allFilesInProject(project);
for (JetFile jetFile : files) {
jetFile.acceptChildren(new JetVisitorVoid() {
@Override
@@ -41,6 +41,7 @@ import org.jetbrains.jet.codegen.GenerationUtils;
import org.jetbrains.jet.codegen.state.GenerationState;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.plugin.project.PluginJetFilesProvider;
import org.jetbrains.jet.plugin.stubindex.JetAllPackagesIndex;
import org.jetbrains.jet.utils.UtilsPackage;
@@ -86,9 +87,7 @@ public abstract class PositionManagerTestCase extends MultiFileTestCase {
private void performTest() {
Project project = getProject();
List<JetFile> files = new ArrayList<JetFile>(
JetAllPackagesIndex.getInstance().get(FqName.ROOT.asString(), project, GlobalSearchScope.allScope(project))
);
List<JetFile> files = new ArrayList<JetFile>(PluginJetFilesProvider.allFilesInProject(project));
final List<Breakpoint> breakpoints = Lists.newArrayList();
for (JetFile file : files) {