Rebuilding dependent modules.

Original commit: 72687758a5
This commit is contained in:
Evgeny Gerashchenko
2014-11-26 19:04:59 +03:00
parent 72fdd2c6ba
commit 41522a3b65
26 changed files with 206 additions and 3 deletions
@@ -151,11 +151,11 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR
if (IncrementalCompilation.ENABLED) {
if (recompilationDecision == IncrementalCacheImpl.RecompilationDecision.RECOMPILE_ALL) {
allCompiledFiles.clear()
return CHUNK_REBUILD_REQUIRED
val targetsCompletelyMarkedDirty = FSOperations.getTargetsCompletelyMarkedDirty(context)
FSOperations.markDirtyRecursively(context, chunk)
}
if (recompilationDecision == IncrementalCacheImpl.RecompilationDecision.COMPILE_OTHERS) {
// TODO should mark dependencies as dirty, as well
FSOperations.markDirty(context, chunk, { file ->
FSOperations.markDirtyRecursively(context, chunk, { file ->
KotlinSourceFileCollector.isKotlinSourceFile(file) && file !in allCompiledFiles
})
}
@@ -52,6 +52,24 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest {
doTest(fileName);
}
@TestMetadata("constantValueChanged")
public void testConstantValueChanged() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/constantValueChanged/");
doTest(fileName);
}
@TestMetadata("inlineFunctionChanged")
public void testInlineFunctionChanged() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/");
doTest(fileName);
}
@TestMetadata("inlineFunctionInlined")
public void testInlineFunctionInlined() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/");
doTest(fileName);
}
@TestMetadata("simpleDependency")
public void testSimpleDependency() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/simpleDependency/");
@@ -70,6 +88,12 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest {
doTest(fileName);
}
@TestMetadata("transitiveInlining")
public void testTransitiveInlining() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/transitiveInlining/");
doTest(fileName);
}
@TestMetadata("twoDependants")
public void testTwoDependants() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/twoDependants/");
@@ -0,0 +1,13 @@
Cleaning output files:
out/production/module1/test/TestPackage$module1_const$*.class
out/production/module1/test/TestPackage.class
End of files
Compiling files:
module1/src/module1_const.kt
End of files
Cleaning output files:
out/production/module2/usage/Usage.class
End of files
Compiling files:
module2/src/module2_usage.kt
End of files
@@ -0,0 +1,2 @@
module1->
module2->module1
@@ -0,0 +1,3 @@
package test
public val CONST: String = "BF"
@@ -0,0 +1,3 @@
package test
public val CONST: String = "Ae"
@@ -0,0 +1,4 @@
package usage
deprecated(test.CONST + test.CONST)
class Usage
@@ -0,0 +1,23 @@
Cleaning output files:
out/production/module1/inline/InlinePackage$module1_inline$*.class
out/production/module1/inline/InlinePackage.class
End of files
Compiling files:
module1/src/module1_inline.kt
End of files
Cleaning output files:
out/production/module1/inline/InlinePackage$module1_inline$*.class
out/production/module1/inline/InlinePackage$module1_other$*.class
out/production/module1/inline/InlinePackage.class
End of files
Compiling files:
module1/src/module1_inline.kt
module1/src/module1_other.kt
End of files
Cleaning output files:
out/production/module2/usage/UsagePackage$module2_usage$*.class
out/production/module2/usage/UsagePackage.class
End of files
Compiling files:
module2/src/module2_usage.kt
End of files
@@ -0,0 +1,2 @@
module1->
module2->module1
@@ -0,0 +1,6 @@
package inline
inline fun f(body: () -> Unit) {
println("i'm inline function")
body()
}
@@ -0,0 +1,6 @@
package inline
inline fun f(body: () -> Unit) {
body()
println("i'm inline function")
}
@@ -0,0 +1,4 @@
package inline
fun other() {
}
@@ -0,0 +1,5 @@
package usage
fun main(args: Array<String>) {
inline.f { println("to be inlined") }
}
@@ -0,0 +1,23 @@
Cleaning output files:
out/production/module1/inline/InlinePackage$module1_inline$*.class
out/production/module1/inline/InlinePackage.class
End of files
Compiling files:
module1/src/module1_inline.kt
End of files
Cleaning output files:
out/production/module1/inline/InlinePackage$module1_inline$*.class
out/production/module1/inline/InlinePackage$module1_other$*.class
out/production/module1/inline/InlinePackage.class
End of files
Compiling files:
module1/src/module1_inline.kt
module1/src/module1_other.kt
End of files
Cleaning output files:
out/production/module2/usage/UsagePackage$module2_usage$*.class
out/production/module2/usage/UsagePackage.class
End of files
Compiling files:
module2/src/module2_usage.kt
End of files
@@ -0,0 +1,2 @@
module1->
module2->module1
@@ -0,0 +1,6 @@
package inline
inline fun f(body: () -> Unit) {
println("i'm inline function")
body()
}
@@ -0,0 +1,6 @@
package inline
inline fun f(body: () -> Unit) {
body()
println("i'm inline function")
}
@@ -0,0 +1,4 @@
package inline
fun other() {
}
@@ -0,0 +1,6 @@
package usage
inline fun inlineUsage(body: () -> Unit) {
inline.f { println("to be inlined") }
body()
}
@@ -0,0 +1,30 @@
Cleaning output files:
out/production/module1/a/APackage$module1_a$*.class
out/production/module1/a/APackage.class
End of files
Compiling files:
module1/src/module1_a.kt
End of files
Cleaning output files:
out/production/module1/a/APackage$module1_a$*.class
out/production/module1/a/APackage$module1_other$*.class
out/production/module1/a/APackage.class
End of files
Compiling files:
module1/src/module1_a.kt
module1/src/module1_other.kt
End of files
Cleaning output files:
out/production/module2/b/BPackage$module2_b$*.class
out/production/module2/b/BPackage.class
End of files
Compiling files:
module2/src/module2_b.kt
End of files
Cleaning output files:
out/production/module3/c/CPackage$module3_c$*.class
out/production/module3/c/CPackage.class
End of files
Compiling files:
module3/src/module3_c.kt
End of files
@@ -0,0 +1,3 @@
module1->
module2->module1
module3->module2
@@ -0,0 +1,6 @@
package a
inline fun a(body: () -> Unit) {
println("i'm inline function")
body()
}
@@ -0,0 +1,6 @@
package a
inline fun a(body: () -> Unit) {
println("i am inline function")
body()
}
@@ -0,0 +1,4 @@
package a
fun other() {
}
@@ -0,0 +1,6 @@
package b
inline fun b(body: () -> Unit) {
a.a { println("to be inlined into b") }
body()
}
@@ -0,0 +1,6 @@
package c
inline fun c(body: () -> Unit) {
b.b { println("to be inlined into b") }
body()
}