Storing io files instead of psi (they are converted anyway).

This commit is contained in:
Evgeny Gerashchenko
2014-05-27 14:12:02 +04:00
parent e07ea4b814
commit 5d4823d4ba
@@ -17,7 +17,6 @@
package org.jetbrains.jet.codegen; package org.jetbrains.jet.codegen;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFile;
import com.intellij.util.Function; import com.intellij.util.Function;
@@ -56,9 +55,10 @@ public class ClassFileFactory implements OutputFileCollection {
@NotNull @NotNull
public ClassBuilder newVisitor(@NotNull Type asmType, @NotNull Collection<? extends PsiFile> sourceFiles) { public ClassBuilder newVisitor(@NotNull Type asmType, @NotNull Collection<? extends PsiFile> sourceFiles) {
String outputFilePath = asmType.getInternalName() + ".class"; String outputFilePath = asmType.getInternalName() + ".class";
state.getProgress().reportOutput(toIoFilesIgnoringNonPhysical(sourceFiles), new File(outputFilePath)); List<File> ioSourceFiles = toIoFilesIgnoringNonPhysical(sourceFiles);
state.getProgress().reportOutput(ioSourceFiles, new File(outputFilePath));
ClassBuilder answer = builderFactory.newClassBuilder(); ClassBuilder answer = builderFactory.newClassBuilder();
generators.put(outputFilePath, new ClassBuilderAndSourceFileList(answer, sourceFiles)); generators.put(outputFilePath, new ClassBuilderAndSourceFileList(answer, ioSourceFiles));
return answer; return answer;
} }
@@ -115,7 +115,7 @@ public class ClassFileFactory implements OutputFileCollection {
} }
@NotNull @NotNull
private static Collection<File> toIoFilesIgnoringNonPhysical(@NotNull Collection<? extends PsiFile> psiFiles) { private static List<File> toIoFilesIgnoringNonPhysical(@NotNull Collection<? extends PsiFile> psiFiles) {
List<File> result = Lists.newArrayList(); List<File> result = Lists.newArrayList();
for (PsiFile psiFile : psiFiles) { for (PsiFile psiFile : psiFiles) {
VirtualFile virtualFile = psiFile.getVirtualFile(); VirtualFile virtualFile = psiFile.getVirtualFile();
@@ -149,18 +149,7 @@ public class ClassFileFactory implements OutputFileCollection {
throw new IllegalStateException("No record for binary file " + relativeClassFilePath); throw new IllegalStateException("No record for binary file " + relativeClassFilePath);
} }
return ContainerUtil.mapNotNull( return pair.sourceFiles;
pair.sourceFiles,
new Function<PsiFile, File>() {
@Override
public File fun(PsiFile file) {
VirtualFile virtualFile = file.getVirtualFile();
if (virtualFile == null) return null;
return VfsUtilCore.virtualToIoFile(virtualFile);
}
}
);
} }
@NotNull @NotNull
@@ -184,9 +173,9 @@ public class ClassFileFactory implements OutputFileCollection {
private static final class ClassBuilderAndSourceFileList { private static final class ClassBuilderAndSourceFileList {
private final ClassBuilder classBuilder; private final ClassBuilder classBuilder;
private final Collection<? extends PsiFile> sourceFiles; private final List<File> sourceFiles;
private ClassBuilderAndSourceFileList(ClassBuilder classBuilder, Collection<? extends PsiFile> sourceFiles) { private ClassBuilderAndSourceFileList(ClassBuilder classBuilder, List<File> sourceFiles) {
this.classBuilder = classBuilder; this.classBuilder = classBuilder;
this.sourceFiles = sourceFiles; this.sourceFiles = sourceFiles;
} }