Minor, refactor JetFilesProvider

This commit is contained in:
Alexander Udalov
2013-07-23 20:13:19 +04:00
committed by Pavel V. Talanov
parent 155f3b3b96
commit 78bd6faffc
4 changed files with 14 additions and 21 deletions
@@ -36,7 +36,7 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.util.slicedmap.WritableSlice; import org.jetbrains.jet.util.slicedmap.WritableSlice;
import java.util.List; import java.util.Collection;
import static org.jetbrains.jet.lang.resolve.BindingContextUtils.descriptorToDeclaration; import static org.jetbrains.jet.lang.resolve.BindingContextUtils.descriptorToDeclaration;
@@ -193,7 +193,7 @@ public final class PsiCodegenPredictor {
} }
@Nullable @Nullable
public static JetFile getFileForNamespacePartName(@NotNull List<JetFile> allNamespaceFiles, @NotNull JvmClassName className) { public static JetFile getFileForNamespacePartName(@NotNull Collection<JetFile> allNamespaceFiles, @NotNull JvmClassName className) {
for (JetFile file : allNamespaceFiles) { for (JetFile file : allNamespaceFiles) {
String internalName = NamespaceCodegen.getNamespacePartInternalName(file); String internalName = NamespaceCodegen.getNamespacePartInternalName(file);
JvmClassName jvmClassName = JvmClassName.byInternalName(internalName); JvmClassName jvmClassName = JvmClassName.byInternalName(internalName);
@@ -207,7 +207,7 @@ public final class PsiCodegenPredictor {
@Nullable @Nullable
public static JetFile getFileForCodegenNamedClass( public static JetFile getFileForCodegenNamedClass(
@NotNull BindingContext context, @NotNull BindingContext context,
@NotNull List<JetFile> allNamespaceFiles, @NotNull Collection<JetFile> allNamespaceFiles,
@NotNull final JvmClassName className @NotNull final JvmClassName className
) { ) {
final Ref<DeclarationDescriptor> resultingDescriptor = Ref.create(); final Ref<DeclarationDescriptor> resultingDescriptor = Ref.create();
@@ -17,6 +17,7 @@
package org.jetbrains.jet.lang.resolve.java; package org.jetbrains.jet.lang.resolve.java;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFile;
@@ -28,19 +29,17 @@ import org.jetbrains.jet.lang.psi.JetPsiUtil;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import java.util.Collection; import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
public abstract class JetFilesProvider { public abstract class JetFilesProvider {
public static JetFilesProvider getInstance(Project project) { public static JetFilesProvider getInstance(Project project) {
return ServiceManager.getService(project, JetFilesProvider.class); return ServiceManager.getService(project, JetFilesProvider.class);
} }
public final Function<JetFile, List<JetFile>> allNamespaceFiles() { public final Function<JetFile, Collection<JetFile>> allNamespaceFiles() {
return new Function<JetFile, List<JetFile>>() { return new Function<JetFile, Collection<JetFile>>() {
@Override @Override
public List<JetFile> fun(JetFile file) { public Collection<JetFile> fun(JetFile file) {
return new SameJetFilePredicate(file).filter(sampleToAllFilesInModule().fun(file)); return Collections2.filter(sampleToAllFilesInModule().fun(file), new SameJetFilePredicate(file));
} }
}; };
} }
@@ -60,14 +59,5 @@ public abstract class JetFilesProvider {
public boolean apply(PsiFile psiFile) { public boolean apply(PsiFile psiFile) {
return JetPsiUtil.getFQName((JetFile) psiFile).equals(name); 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;
}
} }
} }
@@ -51,6 +51,7 @@ import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache;
import org.jetbrains.jet.plugin.util.DebuggerUtils; import org.jetbrains.jet.plugin.util.DebuggerUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.WeakHashMap; import java.util.WeakHashMap;
@@ -187,7 +188,7 @@ public class JetPositionManager implements PositionManager {
AnalyzeExhaust analyzeExhaust = AnalyzerFacadeWithCache.analyzeFileWithCache(file); AnalyzeExhaust analyzeExhaust = AnalyzerFacadeWithCache.analyzeFileWithCache(file);
analyzeExhaust.throwIfError(); analyzeExhaust.throwIfError();
List<JetFile> namespaceFiles = JetFilesProvider.getInstance(file.getProject()).allNamespaceFiles().fun(file); Collection<JetFile> namespaceFiles = JetFilesProvider.getInstance(file.getProject()).allNamespaceFiles().fun(file);
DelegatingBindingTrace bindingTrace = new DelegatingBindingTrace(analyzeExhaust.getBindingContext(), "trace created in JetPositionManager"); DelegatingBindingTrace bindingTrace = new DelegatingBindingTrace(analyzeExhaust.getBindingContext(), "trace created in JetPositionManager");
JetTypeMapper typeMapper = new JetTypeMapper(bindingTrace, true, ClassBuilderMode.FULL); JetTypeMapper typeMapper = new JetTypeMapper(bindingTrace, true, ClassBuilderMode.FULL);
@@ -31,9 +31,11 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache; import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache;
import java.util.Collection; import java.util.Collection;
import java.util.List;
public class DebuggerUtils { public class DebuggerUtils {
private DebuggerUtils() {
}
@Nullable @Nullable
public static JetFile findSourceFileForClass( public static JetFile findSourceFileForClass(
@NotNull GlobalSearchScope searchScope, @NotNull GlobalSearchScope searchScope,
@@ -62,7 +64,7 @@ public class DebuggerUtils {
return anyFile; return anyFile;
} }
List<JetFile> allNamespaceFiles = filesProvider.allNamespaceFiles().fun(anyFile); Collection<JetFile> allNamespaceFiles = filesProvider.allNamespaceFiles().fun(anyFile);
JetFile file = PsiCodegenPredictor.getFileForNamespacePartName(allNamespaceFiles, className); JetFile file = PsiCodegenPredictor.getFileForNamespacePartName(allNamespaceFiles, className);
if (file != null) { if (file != null) {
return file; return file;