From 72687758a55b45c186839c2eba0c0b7265487e54 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Wed, 26 Nov 2014 19:04:59 +0300 Subject: [PATCH] Rebuilding dependent modules. --- .../kotlin/jps/build/KotlinBuilder.kt | 6 ++-- .../build/IncrementalJpsTestGenerated.java | 24 +++++++++++++++ .../constantValueChanged/build.log | 13 ++++++++ .../constantValueChanged/dependencies.txt | 2 ++ .../constantValueChanged/module1_const.kt | 3 ++ .../constantValueChanged/module1_const.kt.new | 3 ++ .../constantValueChanged/module2_usage.kt | 4 +++ .../inlineFunctionChanged/build.log | 23 ++++++++++++++ .../inlineFunctionChanged/dependencies.txt | 2 ++ .../inlineFunctionChanged/module1_inline.kt | 6 ++++ .../module1_inline.kt.new | 6 ++++ .../inlineFunctionChanged/module1_other.kt | 4 +++ .../inlineFunctionChanged/module2_usage.kt | 5 ++++ .../inlineFunctionInlined/build.log | 23 ++++++++++++++ .../inlineFunctionInlined/dependencies.txt | 2 ++ .../inlineFunctionInlined/module1_inline.kt | 6 ++++ .../module1_inline.kt.new | 6 ++++ .../inlineFunctionInlined/module1_other.kt | 4 +++ .../inlineFunctionInlined/module2_usage.kt | 6 ++++ .../multiModule/transitiveInlining/build.log | 30 +++++++++++++++++++ .../transitiveInlining/dependencies.txt | 3 ++ .../transitiveInlining/module1_a.kt | 6 ++++ .../transitiveInlining/module1_a.kt.new | 6 ++++ .../transitiveInlining/module1_other.kt | 4 +++ .../transitiveInlining/module2_b.kt | 6 ++++ .../transitiveInlining/module3_c.kt | 6 ++++ 26 files changed, 206 insertions(+), 3 deletions(-) create mode 100644 jps-plugin/testData/incremental/multiModule/constantValueChanged/build.log create mode 100644 jps-plugin/testData/incremental/multiModule/constantValueChanged/dependencies.txt create mode 100644 jps-plugin/testData/incremental/multiModule/constantValueChanged/module1_const.kt create mode 100644 jps-plugin/testData/incremental/multiModule/constantValueChanged/module1_const.kt.new create mode 100644 jps-plugin/testData/incremental/multiModule/constantValueChanged/module2_usage.kt create mode 100644 jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/build.log create mode 100644 jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/dependencies.txt create mode 100644 jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/module1_inline.kt create mode 100644 jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/module1_inline.kt.new create mode 100644 jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/module1_other.kt create mode 100644 jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/module2_usage.kt create mode 100644 jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/build.log create mode 100644 jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/dependencies.txt create mode 100644 jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/module1_inline.kt create mode 100644 jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/module1_inline.kt.new create mode 100644 jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/module1_other.kt create mode 100644 jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/module2_usage.kt create mode 100644 jps-plugin/testData/incremental/multiModule/transitiveInlining/build.log create mode 100644 jps-plugin/testData/incremental/multiModule/transitiveInlining/dependencies.txt create mode 100644 jps-plugin/testData/incremental/multiModule/transitiveInlining/module1_a.kt create mode 100644 jps-plugin/testData/incremental/multiModule/transitiveInlining/module1_a.kt.new create mode 100644 jps-plugin/testData/incremental/multiModule/transitiveInlining/module1_other.kt create mode 100644 jps-plugin/testData/incremental/multiModule/transitiveInlining/module2_b.kt create mode 100644 jps-plugin/testData/incremental/multiModule/transitiveInlining/module3_c.kt diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt index 8e3967849c5..1da4e83c697 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt @@ -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 }) } diff --git a/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java b/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java index dc3279a3245..9db726d6502 100644 --- a/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java +++ b/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java @@ -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/"); diff --git a/jps-plugin/testData/incremental/multiModule/constantValueChanged/build.log b/jps-plugin/testData/incremental/multiModule/constantValueChanged/build.log new file mode 100644 index 00000000000..3d42c783058 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/constantValueChanged/build.log @@ -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 \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/constantValueChanged/dependencies.txt b/jps-plugin/testData/incremental/multiModule/constantValueChanged/dependencies.txt new file mode 100644 index 00000000000..827bf04cc58 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/constantValueChanged/dependencies.txt @@ -0,0 +1,2 @@ +module1-> +module2->module1 diff --git a/jps-plugin/testData/incremental/multiModule/constantValueChanged/module1_const.kt b/jps-plugin/testData/incremental/multiModule/constantValueChanged/module1_const.kt new file mode 100644 index 00000000000..e79d6d05129 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/constantValueChanged/module1_const.kt @@ -0,0 +1,3 @@ +package test + +public val CONST: String = "BF" diff --git a/jps-plugin/testData/incremental/multiModule/constantValueChanged/module1_const.kt.new b/jps-plugin/testData/incremental/multiModule/constantValueChanged/module1_const.kt.new new file mode 100644 index 00000000000..d6250846ebf --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/constantValueChanged/module1_const.kt.new @@ -0,0 +1,3 @@ +package test + +public val CONST: String = "Ae" diff --git a/jps-plugin/testData/incremental/multiModule/constantValueChanged/module2_usage.kt b/jps-plugin/testData/incremental/multiModule/constantValueChanged/module2_usage.kt new file mode 100644 index 00000000000..50c87e8aeb3 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/constantValueChanged/module2_usage.kt @@ -0,0 +1,4 @@ +package usage + +deprecated(test.CONST + test.CONST) +class Usage diff --git a/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/build.log b/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/build.log new file mode 100644 index 00000000000..54958ea07a8 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/build.log @@ -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 \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/dependencies.txt b/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/dependencies.txt new file mode 100644 index 00000000000..827bf04cc58 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/dependencies.txt @@ -0,0 +1,2 @@ +module1-> +module2->module1 diff --git a/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/module1_inline.kt b/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/module1_inline.kt new file mode 100644 index 00000000000..80d71e901a3 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/module1_inline.kt @@ -0,0 +1,6 @@ +package inline + +inline fun f(body: () -> Unit) { + println("i'm inline function") + body() +} diff --git a/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/module1_inline.kt.new b/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/module1_inline.kt.new new file mode 100644 index 00000000000..87422d45d88 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/module1_inline.kt.new @@ -0,0 +1,6 @@ +package inline + +inline fun f(body: () -> Unit) { + body() + println("i'm inline function") +} diff --git a/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/module1_other.kt b/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/module1_other.kt new file mode 100644 index 00000000000..4af04d89ad7 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/module1_other.kt @@ -0,0 +1,4 @@ +package inline + +fun other() { +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/module2_usage.kt b/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/module2_usage.kt new file mode 100644 index 00000000000..3f8161245b6 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/inlineFunctionChanged/module2_usage.kt @@ -0,0 +1,5 @@ +package usage + +fun main(args: Array) { + inline.f { println("to be inlined") } +} diff --git a/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/build.log b/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/build.log new file mode 100644 index 00000000000..54958ea07a8 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/build.log @@ -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 \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/dependencies.txt b/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/dependencies.txt new file mode 100644 index 00000000000..827bf04cc58 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/dependencies.txt @@ -0,0 +1,2 @@ +module1-> +module2->module1 diff --git a/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/module1_inline.kt b/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/module1_inline.kt new file mode 100644 index 00000000000..80d71e901a3 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/module1_inline.kt @@ -0,0 +1,6 @@ +package inline + +inline fun f(body: () -> Unit) { + println("i'm inline function") + body() +} diff --git a/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/module1_inline.kt.new b/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/module1_inline.kt.new new file mode 100644 index 00000000000..87422d45d88 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/module1_inline.kt.new @@ -0,0 +1,6 @@ +package inline + +inline fun f(body: () -> Unit) { + body() + println("i'm inline function") +} diff --git a/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/module1_other.kt b/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/module1_other.kt new file mode 100644 index 00000000000..4af04d89ad7 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/module1_other.kt @@ -0,0 +1,4 @@ +package inline + +fun other() { +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/module2_usage.kt b/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/module2_usage.kt new file mode 100644 index 00000000000..8e3cf423a25 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/module2_usage.kt @@ -0,0 +1,6 @@ +package usage + +inline fun inlineUsage(body: () -> Unit) { + inline.f { println("to be inlined") } + body() +} diff --git a/jps-plugin/testData/incremental/multiModule/transitiveInlining/build.log b/jps-plugin/testData/incremental/multiModule/transitiveInlining/build.log new file mode 100644 index 00000000000..4a046b83b59 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/transitiveInlining/build.log @@ -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 \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/transitiveInlining/dependencies.txt b/jps-plugin/testData/incremental/multiModule/transitiveInlining/dependencies.txt new file mode 100644 index 00000000000..0341c1ffd5c --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/transitiveInlining/dependencies.txt @@ -0,0 +1,3 @@ +module1-> +module2->module1 +module3->module2 diff --git a/jps-plugin/testData/incremental/multiModule/transitiveInlining/module1_a.kt b/jps-plugin/testData/incremental/multiModule/transitiveInlining/module1_a.kt new file mode 100644 index 00000000000..cbd343133d9 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/transitiveInlining/module1_a.kt @@ -0,0 +1,6 @@ +package a + +inline fun a(body: () -> Unit) { + println("i'm inline function") + body() +} diff --git a/jps-plugin/testData/incremental/multiModule/transitiveInlining/module1_a.kt.new b/jps-plugin/testData/incremental/multiModule/transitiveInlining/module1_a.kt.new new file mode 100644 index 00000000000..7b25135b533 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/transitiveInlining/module1_a.kt.new @@ -0,0 +1,6 @@ +package a + +inline fun a(body: () -> Unit) { + println("i am inline function") + body() +} diff --git a/jps-plugin/testData/incremental/multiModule/transitiveInlining/module1_other.kt b/jps-plugin/testData/incremental/multiModule/transitiveInlining/module1_other.kt new file mode 100644 index 00000000000..7e2bad9ae9f --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/transitiveInlining/module1_other.kt @@ -0,0 +1,4 @@ +package a + +fun other() { +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/transitiveInlining/module2_b.kt b/jps-plugin/testData/incremental/multiModule/transitiveInlining/module2_b.kt new file mode 100644 index 00000000000..00b43177b18 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/transitiveInlining/module2_b.kt @@ -0,0 +1,6 @@ +package b + +inline fun b(body: () -> Unit) { + a.a { println("to be inlined into b") } + body() +} diff --git a/jps-plugin/testData/incremental/multiModule/transitiveInlining/module3_c.kt b/jps-plugin/testData/incremental/multiModule/transitiveInlining/module3_c.kt new file mode 100644 index 00000000000..799cfd1e836 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/transitiveInlining/module3_c.kt @@ -0,0 +1,6 @@ +package c + +inline fun c(body: () -> Unit) { + b.b { println("to be inlined into b") } + body() +}