From 9a0b91ef318cc018bbe685e05b53ee65d6a72f5a Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Wed, 21 Mar 2018 14:35:57 +0300 Subject: [PATCH] IC: add destination dir to start of classpath instead of end Otherwise IC fails when a project declares a class with the same name as in one of its dependencies. The issue is relevant only for non-JPS IC (Gradle, Maven, etc.), but I added the test for JPS too. #KT-20516 fixed Original commit: 605bcc66a176667829702ef89678fe2ec951386a --- .../jps/build/IncrementalJpsTestGenerated.java | 6 ++++++ .../multiModule/duplicatedClass/build.log | 17 +++++++++++++++++ .../duplicatedClass/dependencies.txt | 2 ++ .../multiModule/duplicatedClass/module1_A.kt | 3 +++ .../duplicatedClass/module1_other1.kt | 2 ++ .../duplicatedClass/module1_utils.kt | 1 + .../multiModule/duplicatedClass/module2_A.kt | 3 +++ .../duplicatedClass/module2_other2.kt | 2 ++ .../multiModule/duplicatedClass/module2_useA.kt | 3 +++ .../duplicatedClass/module2_useA.kt.touch | 0 .../duplicatedClass/module2_useUtils.kt | 3 +++ .../duplicatedClass/module2_useUtils.kt.touch | 0 .../duplicatedClass/module2_utils.kt | 1 + 13 files changed, 43 insertions(+) create mode 100644 jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/build.log create mode 100644 jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/dependencies.txt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module1_A.kt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module1_other1.kt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module1_utils.kt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_A.kt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_other2.kt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_useA.kt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_useA.kt.touch create mode 100644 jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_useUtils.kt create mode 100644 jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_useUtils.kt.touch create mode 100644 jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_utils.kt diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java index c9a3da5cc4b..a59e2b192b5 100644 --- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java +++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java @@ -117,6 +117,12 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest { doTest(fileName); } + @TestMetadata("duplicatedClass") + public void testDuplicatedClass() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/duplicatedClass/"); + doTest(fileName); + } + @TestMetadata("exportedDependency") public void testExportedDependency() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/exportedDependency/"); diff --git a/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/build.log b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/build.log new file mode 100644 index 00000000000..917d81caa03 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/build.log @@ -0,0 +1,17 @@ +================ Step #1 ================= + +Building module1 +Exit code: NOTHING_DONE +------------------------------------------ +Building module2 +Cleaning output files: + out/production/module2/META-INF/module2.kotlin_module + out/production/module2/UseAKt.class + out/production/module2/UseUtilsKt.class +End of files +Compiling files: + module2/src/useA.kt + module2/src/useUtils.kt +End of files +Exit code: OK +------------------------------------------ \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/dependencies.txt b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/dependencies.txt new file mode 100644 index 00000000000..827bf04cc58 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/dependencies.txt @@ -0,0 +1,2 @@ +module1-> +module2->module1 diff --git a/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module1_A.kt b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module1_A.kt new file mode 100644 index 00000000000..2f1a23c74eb --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module1_A.kt @@ -0,0 +1,3 @@ +class A { + fun fizz() {} +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module1_other1.kt b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module1_other1.kt new file mode 100644 index 00000000000..76612dffc16 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module1_other1.kt @@ -0,0 +1,2 @@ +fun other1() { +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module1_utils.kt b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module1_utils.kt new file mode 100644 index 00000000000..60843f060c1 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module1_utils.kt @@ -0,0 +1 @@ +fun fizz() {} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_A.kt b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_A.kt new file mode 100644 index 00000000000..dd957f79c67 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_A.kt @@ -0,0 +1,3 @@ +class A { + fun buzz() {} +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_other2.kt b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_other2.kt new file mode 100644 index 00000000000..e7b29d7ffe4 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_other2.kt @@ -0,0 +1,2 @@ +fun other2() { +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_useA.kt b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_useA.kt new file mode 100644 index 00000000000..d662c17f077 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_useA.kt @@ -0,0 +1,3 @@ +fun useA() { + A().buzz() +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_useA.kt.touch b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_useA.kt.touch new file mode 100644 index 00000000000..e69de29bb2d diff --git a/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_useUtils.kt b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_useUtils.kt new file mode 100644 index 00000000000..11202c9b2f6 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_useUtils.kt @@ -0,0 +1,3 @@ +fun useUtils() { + buzz() +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_useUtils.kt.touch b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_useUtils.kt.touch new file mode 100644 index 00000000000..e69de29bb2d diff --git a/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_utils.kt b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_utils.kt new file mode 100644 index 00000000000..ed02bf9e14f --- /dev/null +++ b/jps/jps-plugin/testData/incremental/multiModule/duplicatedClass/module2_utils.kt @@ -0,0 +1 @@ +fun buzz() {} \ No newline at end of file