Don't run the builder if there's no dirty files

This commit is contained in:
Andrey Breslav
2012-12-03 12:28:39 +04:00
parent ef52ce6b9b
commit 08a150b09e
2 changed files with 20 additions and 1 deletions
@@ -72,8 +72,11 @@ public class KotlinBuilder extends ModuleLevelBuilder {
ModuleBuildTarget representativeTarget = chunk.representativeTarget();
// For non-incremental build: take all sources
if (!KotlinSourceFileCollector.hasDirtyFiles(dirtyFilesHolder)) {
return ExitCode.NOTHING_DONE;
}
List<File> sourceFiles = KotlinSourceFileCollector.getAllKotlinSourceFiles(representativeTarget);
//List<File> sourceFiles = getDirtySourceFiles(dirtyFilesHolder);
//List<File> sourceFiles = KotlinSourceFileCollector.getDirtySourceFiles(dirtyFilesHolder);
if (sourceFiles.isEmpty()) {
return ExitCode.NOTHING_DONE;
@@ -16,6 +16,7 @@
package org.jetbrains.jet.jps.build;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.Processor;
import com.intellij.util.containers.ContainerUtil;
@@ -50,6 +51,21 @@ public class KotlinSourceFileCollector {
return sourceFiles;
}
// For incremental compilation
public static boolean hasDirtyFiles(DirtyFilesHolder<JavaSourceRootDescriptor, ModuleBuildTarget> dirtyFilesHolder)
throws IOException {
final Ref<Boolean> result = Ref.create(false);
dirtyFilesHolder.processDirtyFiles(new FileProcessor<JavaSourceRootDescriptor, ModuleBuildTarget>() {
@Override
public boolean apply(ModuleBuildTarget target, File file, JavaSourceRootDescriptor root) throws IOException {
result.set(true);
return false;
}
});
return result.get();
}
@NotNull
public static List<File> getAllKotlinSourceFiles(@NotNull ModuleBuildTarget target) {
final List<File> result = ContainerUtil.newArrayList();