From 02543e165becda4a6b01ca3521de8c38e34dcc3b Mon Sep 17 00:00:00 2001 From: Michael Nedzelsky Date: Thu, 5 Nov 2015 20:48:33 +0300 Subject: [PATCH] fix KT-9843 Bug in incremental compilation: module is not recompiled when optional parameter added and KT-8434 Removing parameter with default value from function in different module breaks incremental compilation #KT-9843 Fixed #KT-8434 Fixed Original commit: 981d471ebe1621b37aeaada029e35a7438f9ec9f --- .../build/IncrementalJpsTestGenerated.java | 24 +++++++++++++++++++ .../defaultParameterAdded/build.log | 13 ++++++++++ .../defaultParameterAdded/dependencies.txt | 2 ++ .../defaultParameterAdded/module1_a.kt | 6 +++++ .../defaultParameterAdded/module1_a.kt.new | 5 ++++ .../defaultParameterAdded/module2_usage.kt | 7 ++++++ .../build.log | 14 +++++++++++ .../dependencies.txt | 2 ++ .../module1_a.kt | 3 +++ .../module1_a.kt.new | 3 +++ .../module2_usage.kt | 5 ++++ .../defaultParameterRemoved/build.log | 13 ++++++++++ .../defaultParameterRemoved/dependencies.txt | 2 ++ .../defaultParameterRemoved/module1_a.kt | 6 +++++ .../defaultParameterRemoved/module1_a.kt.new | 7 ++++++ .../defaultParameterRemoved/module2_usage.kt | 6 +++++ .../build.log | 14 +++++++++++ .../dependencies.txt | 2 ++ .../module1_a.kt | 3 +++ .../module1_a.kt.new | 3 +++ .../module2_usage.kt | 5 ++++ 21 files changed, 145 insertions(+) create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/build.log create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/dependencies.txt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/module1_a.kt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/module1_a.kt.new create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/module2_usage.kt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/build.log create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/dependencies.txt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/module1_a.kt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/module1_a.kt.new create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/module2_usage.kt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/build.log create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/dependencies.txt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/module1_a.kt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/module1_a.kt.new create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/module2_usage.kt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/build.log create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/dependencies.txt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/module1_a.kt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/module1_a.kt.new create mode 100644 jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/module2_usage.kt diff --git a/jps/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java b/jps/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java index 72c7dff31e4..bd0218cefb6 100644 --- a/jps/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java +++ b/jps/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java @@ -61,6 +61,30 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest { doTest(fileName); } + @TestMetadata("defaultParameterAdded") + public void testDefaultParameterAdded() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/defaultParameterAdded/"); + doTest(fileName); + } + + @TestMetadata("defaultParameterAddedForTopLevelFun") + public void testDefaultParameterAddedForTopLevelFun() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/"); + doTest(fileName); + } + + @TestMetadata("defaultParameterRemoved") + public void testDefaultParameterRemoved() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/"); + doTest(fileName); + } + + @TestMetadata("defaultParameterRemovedForTopLevelFun") + public void testDefaultParameterRemovedForTopLevelFun() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/"); + doTest(fileName); + } + @TestMetadata("inlineFunctionInlined") public void testInlineFunctionInlined() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/inlineFunctionInlined/"); diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/build.log b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/build.log new file mode 100644 index 00000000000..16518f5f414 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/build.log @@ -0,0 +1,13 @@ +Cleaning output files: +out/production/module1/a/A.class +End of files +Compiling files: +module1/src/module1_a.kt +End of files +Cleaning output files: +out/production/module2/META-INF/module2.kotlin_module +out/production/module2/usage/Module2_usageKt.class +End of files +Compiling files: +module2/src/module2_usage.kt +End of files \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/dependencies.txt b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/dependencies.txt new file mode 100644 index 00000000000..827bf04cc58 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/dependencies.txt @@ -0,0 +1,2 @@ +module1-> +module2->module1 diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/module1_a.kt b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/module1_a.kt new file mode 100644 index 00000000000..0d3a95d2ad1 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/module1_a.kt @@ -0,0 +1,6 @@ +package a + +class A { + fun foo(s: String, x: Int = 10) { + } +} diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/module1_a.kt.new b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/module1_a.kt.new new file mode 100644 index 00000000000..b0f678a5175 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/module1_a.kt.new @@ -0,0 +1,5 @@ +package a + +class A { + fun foo(s: String, x: Int = 10, y:Int = 20) {} +} diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/module2_usage.kt b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/module2_usage.kt new file mode 100644 index 00000000000..4eb0fae8143 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAdded/module2_usage.kt @@ -0,0 +1,7 @@ +package usage + +import a.A + +fun main(args: Array) { + A().foo("") +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/build.log b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/build.log new file mode 100644 index 00000000000..b25e93d2f74 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/build.log @@ -0,0 +1,14 @@ +Cleaning output files: +out/production/module1/META-INF/module1.kotlin_module +out/production/module1/a/Module1_aKt.class +End of files +Compiling files: +module1/src/module1_a.kt +End of files +Cleaning output files: +out/production/module2/META-INF/module2.kotlin_module +out/production/module2/usage/Module2_usageKt.class +End of files +Compiling files: +module2/src/module2_usage.kt +End of files \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/dependencies.txt b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/dependencies.txt new file mode 100644 index 00000000000..827bf04cc58 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/dependencies.txt @@ -0,0 +1,2 @@ +module1-> +module2->module1 diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/module1_a.kt b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/module1_a.kt new file mode 100644 index 00000000000..642e76de376 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/module1_a.kt @@ -0,0 +1,3 @@ +package a + +fun foo(s: String, x: Int = 10) {} diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/module1_a.kt.new b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/module1_a.kt.new new file mode 100644 index 00000000000..d496f7777f7 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/module1_a.kt.new @@ -0,0 +1,3 @@ +package a + +fun foo(s: String, x: Int = 10, y:Int = 20) {} diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/module2_usage.kt b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/module2_usage.kt new file mode 100644 index 00000000000..c739a83b15e --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterAddedForTopLevelFun/module2_usage.kt @@ -0,0 +1,5 @@ +package usage + +fun main(args: Array) { + a.foo("") +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/build.log b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/build.log new file mode 100644 index 00000000000..16518f5f414 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/build.log @@ -0,0 +1,13 @@ +Cleaning output files: +out/production/module1/a/A.class +End of files +Compiling files: +module1/src/module1_a.kt +End of files +Cleaning output files: +out/production/module2/META-INF/module2.kotlin_module +out/production/module2/usage/Module2_usageKt.class +End of files +Compiling files: +module2/src/module2_usage.kt +End of files \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/dependencies.txt b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/dependencies.txt new file mode 100644 index 00000000000..827bf04cc58 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/dependencies.txt @@ -0,0 +1,2 @@ +module1-> +module2->module1 diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/module1_a.kt b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/module1_a.kt new file mode 100644 index 00000000000..1d902152567 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/module1_a.kt @@ -0,0 +1,6 @@ +package a + +class A { + fun foo(x:Int = 10) { + } +} diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/module1_a.kt.new b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/module1_a.kt.new new file mode 100644 index 00000000000..ecefb7d1c19 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/module1_a.kt.new @@ -0,0 +1,7 @@ +package a + +class A { + fun foo() { + } +} + diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/module2_usage.kt b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/module2_usage.kt new file mode 100644 index 00000000000..7c3eb527bdc --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemoved/module2_usage.kt @@ -0,0 +1,6 @@ +package usage + +fun b(param: a.A) { + param.foo() +} + diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/build.log b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/build.log new file mode 100644 index 00000000000..b25e93d2f74 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/build.log @@ -0,0 +1,14 @@ +Cleaning output files: +out/production/module1/META-INF/module1.kotlin_module +out/production/module1/a/Module1_aKt.class +End of files +Compiling files: +module1/src/module1_a.kt +End of files +Cleaning output files: +out/production/module2/META-INF/module2.kotlin_module +out/production/module2/usage/Module2_usageKt.class +End of files +Compiling files: +module2/src/module2_usage.kt +End of files \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/dependencies.txt b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/dependencies.txt new file mode 100644 index 00000000000..827bf04cc58 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/dependencies.txt @@ -0,0 +1,2 @@ +module1-> +module2->module1 diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/module1_a.kt b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/module1_a.kt new file mode 100644 index 00000000000..6678dd7608c --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/module1_a.kt @@ -0,0 +1,3 @@ +package a + +fun foo(x: Int = 10) {} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/module1_a.kt.new b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/module1_a.kt.new new file mode 100644 index 00000000000..ae5ee652ccc --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/module1_a.kt.new @@ -0,0 +1,3 @@ +package a + +fun foo() {} diff --git a/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/module2_usage.kt b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/module2_usage.kt new file mode 100644 index 00000000000..5c991459597 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/defaultParameterRemovedForTopLevelFun/module2_usage.kt @@ -0,0 +1,5 @@ +package usage + +fun main(args: Array) { + a.foo() +}