From b7d97a3aa28ab5fdffc7787f4fbf22f905c0c55d Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Thu, 20 Oct 2016 18:33:48 +0300 Subject: [PATCH] Do not remove annotations.txt (kapt1) file before kotlin compiler is called #KT-14250 fixed Before this change the following could happen: 0. Successful build. 1. Only java files are changed. 2. CompileKotlin task starts because java files are also input files for kotlin. 3. annotations.txt file is deleted, but kotlin compiler is not called, so it is not regenerated. 4. Javac fails. --- .../org/jetbrains/kotlin/gradle/KaptIT.kt | 18 ++++++++++++++++++ .../src/main/java/javaPackage/JavaDummy.java | 4 ++++ .../org/jetbrains/kotlin/gradle/tasks/Tasks.kt | 1 - 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptStubs/src/main/java/javaPackage/JavaDummy.java diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIT.kt index 7cfc9a16b1e..71d808e317c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIT.kt @@ -202,4 +202,22 @@ class KaptIT: BaseGradleIT() { assertCompiledKotlinSources(project.relativize(internalDummyUserKt, internalDummyTestKt)) } } + + @Test + fun testKotlinCompilerNotCalledStubsIC() { + val options = defaultBuildOptions().copy(incremental = true) + val project = Project("kaptStubs", GRADLE_VERSION) + + project.build("build", options = options) { + assertSuccessful() + } + + val javaDummy = project.projectDir.getFileByName("JavaDummy.java") + javaDummy.modify { it + " " } + + project.build("build", options = options) { + assertSuccessful() + assertCompiledKotlinSources(emptyList()) + } + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptStubs/src/main/java/javaPackage/JavaDummy.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptStubs/src/main/java/javaPackage/JavaDummy.java new file mode 100644 index 00000000000..e9dc71976db --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptStubs/src/main/java/javaPackage/JavaDummy.java @@ -0,0 +1,4 @@ +package javaPackage; + +public class JavaDummy { +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 1b29e7e7b96..f2be9b12376 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -534,7 +534,6 @@ open class KotlinCompile : AbstractKotlinCompile(), Kotl kaptAnnotationsFileUpdater = AnnotationFileUpdater(kaptAnnotationsFile) } - if (kaptAnnotationsFile.exists()) kaptAnnotationsFile.delete() pluginOptions.addPluginArgument(ANNOTATIONS_PLUGIN_NAME, "output", kaptAnnotationsFile.canonicalPath) }