Rebuild only if proto changed.

Original commit: 018b58b51f
This commit is contained in:
Evgeny Gerashchenko
2014-05-15 16:47:52 +04:00
parent 2eb051dbc2
commit 0188b02946
13 changed files with 72 additions and 29 deletions
@@ -198,6 +198,8 @@ public class KotlinBuilder extends ModuleLevelBuilder {
IncrementalCache cache = new IncrementalCache(KotlinBuilderModuleScriptGenerator.getIncrementalCacheDir(context));
try {
boolean significantChanges = false;
for (SimpleOutputItem outputItem : outputItemCollector.getOutputs()) {
BuildTarget<?> target = null;
Collection<File> sourceFiles = outputItem.getSourceFiles();
@@ -215,7 +217,9 @@ public class KotlinBuilder extends ModuleLevelBuilder {
File outputFile = outputItem.getOutputFile();
if (IncrementalCompilation.ENABLED) {
cache.saveFileToCache(target.getId(), outputFile);
if (cache.saveFileToCache(target.getId(), outputFile)) {
significantChanges = true;
}
}
outputConsumer.registerOutputFile(target, outputFile, paths(sourceFiles));
@@ -223,18 +227,21 @@ public class KotlinBuilder extends ModuleLevelBuilder {
if (IncrementalCompilation.ENABLED) {
// TODO should mark dependencies as dirty, as well
FSOperations.markDirty(context, chunk, new FileFilter() {
@Override
public boolean accept(@NotNull File file) {
return !allCompiledFiles.contains(file);
}
});
if (significantChanges) {
FSOperations.markDirty(context, chunk, new FileFilter() {
@Override
public boolean accept(@NotNull File file) {
return !allCompiledFiles.contains(file);
}
});
}
return ExitCode.ADDITIONAL_PASS_REQUIRED;
}
else {
return ExitCode.OK;
}
} finally {
}
finally {
cache.close();
}
}
@@ -108,6 +108,14 @@ public class IncrementalJpsTest : JpsBuildTestCase() {
doTest()
}
fun testReturnTypeChanged() {
doTest()
}
fun testTopLevelFunctionSameSignature() {
doTest()
}
private class MyLogger(val rootPath: String) : ProjectBuilderLoggerBase() {
private val logBuf = StringBuilder()
public val log: String
@@ -3,10 +3,4 @@ out/production/module/test/Foo.class
End of files
Compiling files:
src/Foo.kt
End of files
Cleaning output files:
out/production/module/test/Bar.class
End of files
Compiling files:
src/Bar.kt
End of files
End of files
@@ -0,0 +1,14 @@
Cleaning output files:
out/production/module/test/TestPackage-fun-*.class
out/production/module/test/TestPackage.class
End of files
Compiling files:
src/fun.kt
End of files
Cleaning output files:
out/production/module/test/TestPackage-usage-*.class
out/production/module/test/TestPackage.class
End of files
Compiling files:
src/usage.kt
End of files
@@ -0,0 +1,4 @@
package test
fun foo() {
}
@@ -0,0 +1,3 @@
package test
fun foo(): String = ":)"
@@ -0,0 +1,5 @@
package test
fun usage() {
foo()
}
@@ -4,10 +4,4 @@ out/production/module/test/Foo.class
End of files
Compiling files:
src/Foo.kt
End of files
Cleaning output files:
out/production/module/test/Bar.class
End of files
Compiling files:
src/Bar.kt
End of files
@@ -0,0 +1,7 @@
Cleaning output files:
out/production/module/test/TestPackage-fun-*.class
out/production/module/test/TestPackage.class
End of files
Compiling files:
src/fun.kt
End of files
@@ -0,0 +1,4 @@
package test
fun foo() {
}
@@ -0,0 +1,5 @@
package test
fun foo() {
println("body is changed, but it doesn't matter, we won't rebuild dependencies")
}
@@ -0,0 +1,5 @@
package test
fun usage() {
foo()
}
@@ -4,11 +4,4 @@ out/production/module/test/TestPackage.class
End of files
Compiling files:
src/a.kt
End of files
Cleaning output files:
out/production/module/test/TestPackage-b-*.class
out/production/module/test/TestPackage.class
End of files
Compiling files:
src/b.kt
End of files
End of files