Skip to content

Commit 23cacdd

Browse files
hfmehmedKSP Auto Pick
authored andcommitted
Don't register sources to kotlin srcDirs for android compilation
(cherry picked from commit 4c52e44)
1 parent 7f142d3 commit 23cacdd

2 files changed

Lines changed: 28 additions & 9 deletions

File tree

  • gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle
  • integration-tests/src/test/kotlin/com/google/devtools/ksp/test

gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ import com.android.build.api.variant.Component
2020
import com.google.devtools.ksp.KspExperimental
2121
import com.google.devtools.ksp.gradle.model.builder.KspModelBuilder
2222
import com.google.devtools.ksp.gradle.utils.canUseGeneratedKotlinApi
23+
import com.google.devtools.ksp.gradle.utils.canUseInternalKspApis
2324
import com.google.devtools.ksp.gradle.utils.enableProjectIsolationCompatibleCodepath
25+
import com.google.devtools.ksp.gradle.utils.isAgpBuiltInKotlinUsed
2426
import com.google.devtools.ksp.gradle.utils.useLegacyVariantApi
2527
import org.gradle.api.Project
2628
import org.gradle.api.Task
@@ -207,15 +209,11 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
207209
// They will be observed by downstreams and violate current build scheme.
208210
kotlinCompileProvider.configure { it.source(*generatedSources) }
209211
} else {
210-
if (project.canUseGeneratedKotlinApi() && project.enableProjectIsolationCompatibleCodepath()) {
211-
kotlinCompilation.defaultSourceSet.generatedKotlin.srcDir(
212-
kspTaskProvider.map { task -> task.kspConfig.kotlinOutputDir }
213-
)
214-
kotlinCompilation.defaultSourceSet.generatedKotlin.srcDir(
215-
kspTaskProvider.map { task -> task.kspConfig.javaOutputDir }
216-
)
217-
} else {
218-
kotlinCompilation.defaultSourceSet.kotlin.srcDirs(*generatedSources)
212+
val skipAddingSources = kotlinCompilation is KotlinJvmAndroidCompilation &&
213+
project.isAgpBuiltInKotlinUsed() && project.canUseInternalKspApis()
214+
215+
if (!skipAddingSources) {
216+
registerOutputWithKotlinSrcdirs(project, kotlinCompilation, kspTaskProvider, *generatedSources)
219217
}
220218
}
221219

@@ -256,6 +254,25 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
256254
return project.provider { emptyList() }
257255
}
258256

257+
private fun registerOutputWithKotlinSrcdirs(
258+
project: Project,
259+
kotlinCompilation: KotlinCompilation<*>,
260+
kspTaskProvider: TaskProvider<KspAATask>,
261+
vararg generatedSources: FileCollection
262+
) {
263+
if (project.canUseGeneratedKotlinApi() && project.enableProjectIsolationCompatibleCodepath()) {
264+
kotlinCompilation.defaultSourceSet.generatedKotlin.srcDir(
265+
kspTaskProvider.map { task -> task.kspConfig.kotlinOutputDir }
266+
)
267+
kotlinCompilation.defaultSourceSet.generatedKotlin.srcDir(
268+
kspTaskProvider.map { task -> task.kspConfig.javaOutputDir }
269+
)
270+
} else {
271+
@Suppress("DEPRECATION")
272+
kotlinCompilation.defaultSourceSet.kotlin.srcDirs(*generatedSources)
273+
}
274+
}
275+
259276
override fun getCompilerPluginId() = KSP_PLUGIN_ID
260277
override fun getPluginArtifact(): SubpluginArtifact =
261278
SubpluginArtifact(

integration-tests/src/test/kotlin/com/google/devtools/ksp/test/AGPVersionIT.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ class AGPVersionIT(
3838
arrayOf("8.12.0-alpha06", "2.3.0-RC", "8.13"),
3939
arrayOf("9.0.0-alpha12", "2.2.10", "9.1.0"),
4040
arrayOf("9.0.0-alpha12", "2.3.0-RC", "9.1.0"),
41+
arrayOf("9.0.0-alpha14", "2.2.10", "9.1.0"),
42+
arrayOf("9.0.0-alpha14", "2.3.0-RC", "9.1.0"),
4143

4244
// AGP 8.7.0
4345
arrayOf("8.7.0", "2.3.0-RC", "8.11.1"),

0 commit comments

Comments
 (0)