From 18261838b66b6425d4fbabcba1a7f7ced99a10ed Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Tue, 14 Nov 2017 21:55:08 +0300 Subject: [PATCH] Avoid deserializing .kotlin_module as class proto #KT-20184 fixed --- .../kotlin/incremental/IncrementalJvmCache.kt | 4 +++- ...rementalJvmCompilerRunnerTestGenerated.java | 6 ++++++ .../jps/build/IncrementalJpsTestGenerated.java | 6 ++++++ .../allKotlinFilesRemovedThenNewAdded/A.java | 1 + .../B.kt.new.2 | 1 + .../build.log | 18 ++++++++++++++++++ .../allKotlinFilesRemovedThenNewAdded/main.kt | 2 ++ .../main.kt.delete.1 | 0 8 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/A.java create mode 100644 jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/B.kt.new.2 create mode 100644 jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/build.log create mode 100644 jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/main.kt create mode 100644 jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/main.kt.delete.1 diff --git a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJvmCache.kt b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJvmCache.kt index e3c82f8f2c8..c5d84f90002 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJvmCache.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJvmCache.kt @@ -287,7 +287,9 @@ open class IncrementalJvmCache( fun remove(className: JvmClassName, changesCollector: ChangesCollector) { val key = className.internalName val oldValue = storage[key] ?: return - changesCollector.collectProtoChanges(oldData = oldValue.toProtoData(className.packageFqName), newData = null) + if (key != MODULE_MAPPING_FILE_NAME) { + changesCollector.collectProtoChanges(oldData = oldValue.toProtoData(className.packageFqName), newData = null) + } storage.remove(key) } diff --git a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunnerTestGenerated.java b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunnerTestGenerated.java index 692f04a3a9a..34eace2fabd 100644 --- a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunnerTestGenerated.java +++ b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunnerTestGenerated.java @@ -1315,6 +1315,12 @@ public class IncrementalJvmCompilerRunnerTestGenerated extends AbstractIncrement KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("jps-plugin/testData/incremental/withJava/other"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, true); } + @TestMetadata("allKotlinFilesRemovedThenNewAdded") + public void testAllKotlinFilesRemovedThenNewAdded() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/"); + doTest(fileName); + } + @TestMetadata("classToPackageFacade") public void testClassToPackageFacade() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/withJava/other/classToPackageFacade/"); diff --git a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java index e15506bfb9e..399a3e99ad4 100644 --- a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java +++ b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java @@ -1156,6 +1156,12 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("jps-plugin/testData/incremental/withJava/other"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, true); } + @TestMetadata("allKotlinFilesRemovedThenNewAdded") + public void testAllKotlinFilesRemovedThenNewAdded() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/"); + doTest(fileName); + } + @TestMetadata("classToPackageFacade") public void testClassToPackageFacade() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/withJava/other/classToPackageFacade/"); diff --git a/jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/A.java b/jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/A.java new file mode 100644 index 00000000000..efd7fa38e2f --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/A.java @@ -0,0 +1 @@ +public class A {} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/B.kt.new.2 b/jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/B.kt.new.2 new file mode 100644 index 00000000000..3e191f19471 --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/B.kt.new.2 @@ -0,0 +1 @@ +class B \ No newline at end of file diff --git a/jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/build.log b/jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/build.log new file mode 100644 index 00000000000..5c29308f2cf --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/build.log @@ -0,0 +1,18 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/MainKt.class +End of files +Compiling files: +End of files +Exit code: OK +------------------------------------------ + +================ Step #2 ================= + +Compiling files: + src/B.kt +End of files +Exit code: OK +------------------------------------------ \ No newline at end of file diff --git a/jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/main.kt b/jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/main.kt new file mode 100644 index 00000000000..5278c037c96 --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/main.kt @@ -0,0 +1,2 @@ +fun main(args: Array) { +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/main.kt.delete.1 b/jps-plugin/testData/incremental/withJava/other/allKotlinFilesRemovedThenNewAdded/main.kt.delete.1 new file mode 100644 index 00000000000..e69de29bb2d