From 3321a1b4e2f6f698723853629988447dbd8f3bb4 Mon Sep 17 00:00:00 2001 From: Hung Nguyen Date: Tue, 26 Apr 2022 12:12:32 +0100 Subject: [PATCH] [NewIC] Fix build failure when enabling new IC in projects using Kapt Originally, the classpath-snapshot output directory was: 1. /build/kotlin//classpath-snapshot for KotlinCompile 2. /build/tmp/kapt3/classpath-snapshot/ for KaptGenerateStubsTask In commit 1d1c6d5, we started using location 1 for both tasks for consistency. Around that time, commit 46cb490 had a merge conflict with the above commit, but the conflict resolution was not correct yet: - The property was set twice, causing a build failure. - Location 2 was set for KaptGenerateStubsTask again. This commit fixes both issues, so that: - The property is set only once. - Location 1 is used for both tasks. Test: Added Kapt3IT.testSimpleWithIC_withClasspathSnapshot to prevent regression ^KT-52187 Fixed --- .../kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt | 12 +++++++++++- .../internal/kapt/Kapt3KotlinGradleSubplugin.kt | 3 --- 2 files changed, 11 insertions(+), 4 deletions(-) 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 6835eccc7fe..f670bee819a 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 @@ -283,10 +283,20 @@ open class Kapt3IT : Kapt3BaseIT() { @DisplayName("Kapt is working with incremental compilation") @GradleTest fun testSimpleWithIC(gradleVersion: GradleVersion) { + doTestSimpleWithIC(gradleVersion) + } + + @DisplayName("Kapt is working with incremental compilation, when kotlin.incremental.useClasspathSnapshot=true") + @GradleTest + fun testSimpleWithIC_withClasspathSnapshot(gradleVersion: GradleVersion) { + doTestSimpleWithIC(gradleVersion, useClasspathSnapshot = true) + } + + private fun doTestSimpleWithIC(gradleVersion: GradleVersion, useClasspathSnapshot: Boolean? = null) { project( "simple".withPrefix, gradleVersion, - buildOptions = defaultBuildOptions.copy(incremental = true) + buildOptions = defaultBuildOptions.copy(incremental = true, useGradleClasspathSnapshot = useClasspathSnapshot) ) { build("clean", "build") { assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin", ":compileJava") diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt index d6a4ea7261a..1b8ec929638 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt @@ -229,8 +229,6 @@ class Kapt3GradleSubplugin @Inject internal constructor(private val registry: To private fun Kapt3SubpluginContext.getKaptIncrementalDataDir() = temporaryKaptDirectory("incrementalData") - private fun Kapt3SubpluginContext.getKaptClasspathSnapshotDir() = temporaryKaptDirectory("classpath-snapshot") - private fun Kapt3SubpluginContext.getKaptIncrementalAnnotationProcessingCache() = temporaryKaptDirectory("incApCache") private fun Kapt3SubpluginContext.temporaryKaptDirectory( @@ -483,7 +481,6 @@ class Kapt3GradleSubplugin @Inject internal constructor(private val registry: To "${kotlinSourcesOutputDir.relativeTo(projectDir).path}/**" ) it.kaptClasspath.from(kaptClasspathConfigurations) - it.classpathSnapshotProperties.classpathSnapshotDir.fileValue(getKaptClasspathSnapshotDir()) } taskConfig.execute(kaptTaskProvider)