From 08a150b09e5d1b74bba1d02425a10a2fc73536db Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Mon, 3 Dec 2012 12:28:39 +0400 Subject: [PATCH] Don't run the builder if there's no dirty files --- .../jetbrains/jet/jps/build/KotlinBuilder.java | 5 ++++- .../jet/jps/build/KotlinSourceFileCollector.java | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java b/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java index c7471dcbca7..ae64dfd4eab 100644 --- a/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java +++ b/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java @@ -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 sourceFiles = KotlinSourceFileCollector.getAllKotlinSourceFiles(representativeTarget); - //List sourceFiles = getDirtySourceFiles(dirtyFilesHolder); + //List sourceFiles = KotlinSourceFileCollector.getDirtySourceFiles(dirtyFilesHolder); if (sourceFiles.isEmpty()) { return ExitCode.NOTHING_DONE; diff --git a/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinSourceFileCollector.java b/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinSourceFileCollector.java index d92306714e1..e02f9c31859 100644 --- a/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinSourceFileCollector.java +++ b/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinSourceFileCollector.java @@ -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 dirtyFilesHolder) + throws IOException { + final Ref result = Ref.create(false); + + dirtyFilesHolder.processDirtyFiles(new FileProcessor() { + @Override + public boolean apply(ModuleBuildTarget target, File file, JavaSourceRootDescriptor root) throws IOException { + result.set(true); + return false; + } + }); + return result.get(); + } + @NotNull public static List getAllKotlinSourceFiles(@NotNull ModuleBuildTarget target) { final List result = ContainerUtil.newArrayList();