Switching from log/learn to reportOutput/add
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
|
||||
package org.jetbrains.jet.plugin.compiler;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.intellij.compiler.impl.javaCompiler.OutputItemImpl;
|
||||
import com.intellij.openapi.compiler.CompileContext;
|
||||
import com.intellij.openapi.compiler.TranslatingCompiler;
|
||||
@@ -24,11 +26,13 @@ import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.compiler.runner.AbstractOutputItemCollector;
|
||||
import org.jetbrains.jet.compiler.runner.CompilerEnvironment;
|
||||
import org.jetbrains.jet.compiler.runner.OutputItemsCollectorImpl;
|
||||
import org.jetbrains.jet.compiler.runner.SimpleOutputItem;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author Pavel Talanov
|
||||
@@ -50,31 +54,24 @@ public final class CompilerUtils {
|
||||
return new File(file.getPath());
|
||||
}
|
||||
|
||||
public static class OutputItemsCollectorImpl extends AbstractOutputItemCollector<VirtualFile, TranslatingCompiler.OutputItem> {
|
||||
public static void reportOutputs(
|
||||
TranslatingCompiler.OutputSink outputSink,
|
||||
File outputDir,
|
||||
OutputItemsCollectorImpl outputItemsCollector
|
||||
) {
|
||||
Set<VirtualFile> sources = Sets.newHashSet();
|
||||
List<TranslatingCompiler.OutputItem> outputs = Lists.newArrayList();
|
||||
|
||||
public OutputItemsCollectorImpl(@NotNull String outputPath) {
|
||||
super(outputPath);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TranslatingCompiler.OutputItem convertResult(String resultPath, VirtualFile correspondingSource) {
|
||||
LocalFileSystem.getInstance().refreshAndFindFileByIoFile(new File(resultPath));
|
||||
return new OutputItemImpl(resultPath, correspondingSource);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected VirtualFile convertSource(String sourcePath) {
|
||||
return LocalFileSystem.getInstance().findFileByPath(sourcePath);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(Collection<File> sourceFiles, File outputFile) {
|
||||
LocalFileSystem.getInstance().refreshAndFindFileByIoFile(outputFile);
|
||||
for (File sourceFile : sourceFiles) {
|
||||
for (SimpleOutputItem output : outputItemsCollector.getOutputs()) {
|
||||
LocalFileSystem.getInstance().refreshAndFindFileByIoFile(output.getOutputFile());
|
||||
for (File sourceFile : output.getSourceFiles()) {
|
||||
VirtualFile virtualFileForSourceFile = LocalFileSystem.getInstance().findFileByIoFile(sourceFile);
|
||||
addItem(new OutputItemImpl(outputFile.getPath(), virtualFileForSourceFile));
|
||||
|
||||
sources.add(virtualFileForSourceFile);
|
||||
outputs.add(new OutputItemImpl(output.getOutputFile().getPath(), virtualFileForSourceFile));
|
||||
}
|
||||
}
|
||||
|
||||
outputSink.add(outputDir.getPath(), outputs, sources.toArray(VirtualFile.EMPTY_ARRAY));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -32,9 +32,7 @@ import com.intellij.util.Function;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.cli.common.messages.MessageCollector;
|
||||
import org.jetbrains.jet.compiler.runner.CompilerEnvironment;
|
||||
import org.jetbrains.jet.compiler.runner.KotlinCompilerRunner;
|
||||
import org.jetbrains.jet.compiler.runner.KotlinModuleScriptGenerator;
|
||||
import org.jetbrains.jet.compiler.runner.*;
|
||||
import org.jetbrains.jet.plugin.JetFileType;
|
||||
import org.jetbrains.jet.plugin.project.JsModuleDetector;
|
||||
|
||||
@@ -114,24 +112,33 @@ public class JetCompiler implements TranslatingCompiler {
|
||||
return;
|
||||
}
|
||||
|
||||
final File outputDir = environment.getOutput();
|
||||
|
||||
File scriptFile = tryToWriteScriptFile(compileContext, moduleChunk, files, module, tests,
|
||||
compileContext.getModuleOutputDirectory(module),
|
||||
environment.getOutput());
|
||||
outputDir);
|
||||
|
||||
if (scriptFile == null) return;
|
||||
|
||||
CompilerUtils.OutputItemsCollectorImpl collector = new CompilerUtils.OutputItemsCollectorImpl(environment.getOutput().getPath());
|
||||
OutputItemsCollectorImpl collector = new OutputItemsCollectorImpl(outputDir) {
|
||||
@Override
|
||||
public void add(Collection<File> sourceFiles, File outputFile) {
|
||||
super.add(sourceFiles, outputFile);
|
||||
compileContext.getProgressIndicator().setText("Emitting: " + outputFile);
|
||||
}
|
||||
};
|
||||
runCompiler(messageCollector, environment, scriptFile, collector);
|
||||
outputSink.add(environment.getOutput().getPath(), collector.getOutputs(), collector.getSources().toArray(VirtualFile.EMPTY_ARRAY));
|
||||
|
||||
CompilerUtils.reportOutputs(outputSink, outputDir, collector);
|
||||
}
|
||||
|
||||
private static void runCompiler(
|
||||
MessageCollector messageCollector,
|
||||
CompilerEnvironment environment,
|
||||
File scriptFile,
|
||||
CompilerUtils.OutputItemsCollectorImpl collector
|
||||
OutputItemsCollector outputItemsCollector
|
||||
) {
|
||||
KotlinCompilerRunner.runCompiler(messageCollector, environment, scriptFile, collector, RUN_OUT_OF_PROCESS);
|
||||
KotlinCompilerRunner.runCompiler(messageCollector, environment, scriptFile, outputItemsCollector, RUN_OUT_OF_PROCESS);
|
||||
}
|
||||
|
||||
public static File tryToWriteScriptFile(
|
||||
|
||||
@@ -40,6 +40,7 @@ import org.jetbrains.jet.cli.common.messages.CompilerMessageSeverity;
|
||||
import org.jetbrains.jet.cli.common.messages.MessageCollector;
|
||||
import org.jetbrains.jet.compiler.runner.CompilerEnvironment;
|
||||
import org.jetbrains.jet.compiler.runner.CompilerRunnerUtil;
|
||||
import org.jetbrains.jet.compiler.runner.OutputItemsCollectorImpl;
|
||||
import org.jetbrains.jet.plugin.JetFileType;
|
||||
import org.jetbrains.jet.plugin.project.JsModuleDetector;
|
||||
|
||||
@@ -92,14 +93,14 @@ public final class K2JSCompiler implements TranslatingCompiler {
|
||||
|
||||
private static void doCompile(@NotNull final MessageCollector messageCollector, @NotNull OutputSink sink, @NotNull final Module module,
|
||||
@NotNull final CompilerEnvironment environment) {
|
||||
CompilerUtils.OutputItemsCollectorImpl collector = new CompilerUtils.OutputItemsCollectorImpl(environment.getOutput().getPath());
|
||||
OutputItemsCollectorImpl collector = new OutputItemsCollectorImpl(environment.getOutput());
|
||||
outputCompilerMessagesAndHandleExitCode(messageCollector, collector, new Function<PrintStream, Integer>() {
|
||||
@Override
|
||||
public Integer fun(PrintStream stream) {
|
||||
return execInProcess(messageCollector, environment, stream, module);
|
||||
}
|
||||
});
|
||||
sink.add(environment.getOutput().getPath(), collector.getOutputs(), collector.getSources().toArray(VirtualFile.EMPTY_ARRAY));
|
||||
CompilerUtils.reportOutputs(sink, environment.getOutput(), collector);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
Reference in New Issue
Block a user