breakpoints for multi-file namespaces
This commit is contained in:
@@ -19,13 +19,20 @@
|
||||
*/
|
||||
package org.jetbrains.jet.lang.resolve.java;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.UserDataHolder;
|
||||
import com.intellij.openapi.util.UserDataHolderBase;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.util.Function;
|
||||
import org.jetbrains.jet.lang.psi.JetFile;
|
||||
import org.jetbrains.jet.lang.psi.JetPsiUtil;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class JetFilesProvider {
|
||||
@@ -33,6 +40,37 @@ public abstract class JetFilesProvider {
|
||||
return ServiceManager.getService(project, JetFilesProvider.class);
|
||||
}
|
||||
|
||||
public final Function<JetFile, List<JetFile>> allNamespaceFiles() {
|
||||
return new Function<JetFile, List<JetFile>>() {
|
||||
@Override
|
||||
public List<JetFile> fun(JetFile file) {
|
||||
return new SameJetFilePredicate(file).filter(sampleToAllFilesInModule().fun(file));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public abstract Function<JetFile, Collection<JetFile>> sampleToAllFilesInModule();
|
||||
public abstract List<JetFile> allInScope(GlobalSearchScope scope);
|
||||
|
||||
public static class SameJetFilePredicate implements Predicate<PsiFile> {
|
||||
private final FqName name;
|
||||
|
||||
public SameJetFilePredicate(JetFile file) {
|
||||
this.name = JetPsiUtil.getFQName(file);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(PsiFile psiFile) {
|
||||
return JetPsiUtil.getFQName((JetFile) psiFile).equals(name);
|
||||
}
|
||||
|
||||
public List<JetFile> filter(Collection<JetFile> allFiles) {
|
||||
LinkedList<JetFile> files = new LinkedList<JetFile>();
|
||||
for (JetFile aFile : allFiles) {
|
||||
if(apply(aFile))
|
||||
files.add(aFile);
|
||||
}
|
||||
return files;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user