From 3a768060ca30578a7d11ce31b8f9d6bf3ddc565c Mon Sep 17 00:00:00 2001 From: Ting-Yuan Huang Date: Wed, 16 Jan 2019 17:54:15 -0800 Subject: [PATCH] Skip annotation processing when there's no AP specified This also fixes KT-29302 where stub generation is skipped while the subsequent annotation processing phase anticipates the generated stubs. This patch addresses cases where kapt.use.worker.api=true. The cases where kapt.use.worker.api=false are handled in the same place of stub generation. --- .../org/jetbrains/kotlin/gradle/Kapt3IT.kt | 11 ++++++++++ .../kapt2/kaptSkipped/build.gradle | 22 +++++++++++++++++++ .../kaptSkipped/src/main/java/Referred.kt | 1 + .../kaptSkipped/src/main/java/Referring.java | 3 +++ .../internal/kapt/KaptWithoutKotlincTask.kt | 4 ++++ 5 files changed, 41 insertions(+) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptSkipped/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptSkipped/src/main/java/Referred.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptSkipped/src/main/java/Referring.java diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt index 20bdba6757d..4d2e131e33f 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt @@ -56,6 +56,17 @@ class Kapt3WorkersIT : Kapt3IT() { assertSubstringCount("Loaded com.sun.tools.javac.util.Context from", 1) } } + + @Test + fun testKaptSkipped() { + val gradleVersionRequired = GradleVersionRequired.AtLeast("4.3") + + val project = + Project("kaptSkipped", directoryPrefix = "kapt2", gradleVersionRequirement = gradleVersionRequired) + project.build("build") { + assertSuccessful() + } + } } open class Kapt3IT : Kapt3BaseIT() { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptSkipped/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptSkipped/build.gradle new file mode 100644 index 00000000000..2dd5423eced --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptSkipped/build.gradle @@ -0,0 +1,22 @@ +buildscript { + repositories { + mavenLocal() + mavenCentral() + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +apply plugin: "java" +apply plugin: "kotlin" +apply plugin: "kotlin-kapt" + +repositories { + mavenLocal() + mavenCentral() +} + +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptSkipped/src/main/java/Referred.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptSkipped/src/main/java/Referred.kt new file mode 100644 index 00000000000..9c30afbb160 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptSkipped/src/main/java/Referred.kt @@ -0,0 +1 @@ +class Referred diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptSkipped/src/main/java/Referring.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptSkipped/src/main/java/Referring.java new file mode 100644 index 00000000000..43fbc1b67ab --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/kaptSkipped/src/main/java/Referring.java @@ -0,0 +1,3 @@ +public class Referring { + public Referred r; +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithoutKotlincTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithoutKotlincTask.kt index 206ff23ba00..aef44800cb4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithoutKotlincTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithoutKotlincTask.kt @@ -79,6 +79,10 @@ open class KaptWithoutKotlincTask @Inject constructor(private val workerExecutor kaptFlagsForWorker ) + // Skip annotation processing if no annotation processors were provided. + if (annotationProcessorFqNames.isEmpty() && kaptClasspath.isEmpty()) + return + val kaptClasspath = kaptJars + findKotlinStdlibClasspath(project) workerExecutor.submit(KaptExecution::class.java) { config ->