@@ -47,6 +47,7 @@ import org.jetbrains.kotlin.gradle.plugin.InternalSubpluginOption
47
47
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
48
48
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationWithResources
49
49
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilerPluginSupportPlugin
50
+ import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
50
51
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
51
52
import org.jetbrains.kotlin.gradle.plugin.SubpluginArtifact
52
53
import org.jetbrains.kotlin.gradle.plugin.SubpluginOption
@@ -203,7 +204,6 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
203
204
val project = kotlinCompilation.target.project
204
205
val kotlinCompileProvider: TaskProvider <AbstractKotlinCompileTool <* >> =
205
206
project.locateTask(kotlinCompilation.compileKotlinTaskName) ? : return project.provider { emptyList() }
206
- val javaCompile = findJavaTaskForKotlinCompilation(kotlinCompilation)?.get()
207
207
val kspExtension = project.extensions.getByType(KspExtension ::class .java)
208
208
val kspConfigurations = kspConfigurations.find(kotlinCompilation)
209
209
val nonEmptyKspConfigurations = kspConfigurations.filter { it.allDependencies.isNotEmpty() }
@@ -233,7 +233,7 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
233
233
" $KSP_GROUP_ID :$KSP_COMPILER_PLUGIN_ID :$KSP_VERSION "
234
234
)
235
235
236
- if (javaCompile != null ) {
236
+ findJavaTaskForKotlinCompilation(kotlinCompilation)?.configure { javaCompile ->
237
237
val generatedJavaSources = javaCompile.project.fileTree(javaOutputDir)
238
238
generatedJavaSources.include(" **/*.java" )
239
239
javaCompile.source(generatedJavaSources)
@@ -249,8 +249,6 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
249
249
project.kotlinExtension.sourceSets.create(" generatedBy" + kspTaskName.capitalizeAsciiOnly())
250
250
sourceSetMap.put(kotlinCompilation.defaultSourceSet, kspGeneratedSourceSet)
251
251
252
- val kotlinCompileTask = kotlinCompileProvider.get()
253
-
254
252
val processorClasspath = project.configurations.maybeCreate(" ${kspTaskName} ProcessorClasspath" )
255
253
.extendsFrom(* nonEmptyKspConfigurations.toTypedArray())
256
254
fun configureAsKspTask (kspTask : KspTask , isIncremental : Boolean ) {
@@ -314,6 +312,7 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
314
312
)
315
313
316
314
if (kspExtension.allowSourcesFromOtherPlugins) {
315
+ val kotlinCompileTask = kotlinCompileProvider.get()
317
316
fun FileCollection.nonSelfDeps (): List <Task > =
318
317
buildDependencies.getDependencies(null ).filterNot {
319
318
it.name == kspTaskName
@@ -382,11 +381,12 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
382
381
val isIncremental = project.findProperty(" ksp.incremental" )?.toString()?.toBoolean() ? : true
383
382
384
383
// Create and configure KSP tasks.
385
- val kspTaskProvider = when (kotlinCompileTask ) {
386
- is KotlinCompile -> {
384
+ val kspTaskProvider = when (kotlinCompilation.platformType ) {
385
+ KotlinPlatformType .jvm, KotlinPlatformType .androidJvm -> {
387
386
kotlinCompilation as KotlinCompilationData <* >
388
387
KotlinFactories .registerKotlinJvmCompileTask(project, kspTaskName, kotlinCompilation).also {
389
388
it.configure { kspTask ->
389
+ val kotlinCompileTask = kotlinCompileProvider.get() as KotlinCompile
390
390
maybeBlockOtherPlugins(kspTask as BaseKotlinCompile )
391
391
configureAsKspTask(kspTask, isIncremental)
392
392
configureAsAbstractKotlinCompileTool(kspTask as AbstractKotlinCompileTool <* >)
@@ -420,10 +420,11 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
420
420
kotlinCompilation.output.classesDirs.from(classOutputDir)
421
421
}
422
422
}
423
- is Kotlin2JsCompile -> {
423
+ KotlinPlatformType .js, KotlinPlatformType .wasm -> {
424
424
kotlinCompilation as KotlinCompilationData <* >
425
425
KotlinFactories .registerKotlinJSCompileTask(project, kspTaskName, kotlinCompilation).also {
426
426
it.configure { kspTask ->
427
+ val kotlinCompileTask = kotlinCompileProvider.get() as Kotlin2JsCompile
427
428
maybeBlockOtherPlugins(kspTask as BaseKotlinCompile )
428
429
configureAsKspTask(kspTask, isIncremental)
429
430
configureAsAbstractKotlinCompileTool(kspTask as AbstractKotlinCompileTool <* >)
@@ -449,10 +450,11 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
449
450
}
450
451
}
451
452
}
452
- is KotlinCompileCommon -> {
453
+ KotlinPlatformType .common -> {
453
454
kotlinCompilation as KotlinCompilationData <* >
454
455
KotlinFactories .registerKotlinMetadataCompileTask(project, kspTaskName, kotlinCompilation).also {
455
456
it.configure { kspTask ->
457
+ val kotlinCompileTask = kotlinCompileProvider.get() as KotlinCompileCommon
456
458
maybeBlockOtherPlugins(kspTask as BaseKotlinCompile )
457
459
configureAsKspTask(kspTask, isIncremental)
458
460
configureAsAbstractKotlinCompileTool(kspTask as AbstractKotlinCompileTool <* >)
@@ -475,9 +477,10 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
475
477
}
476
478
}
477
479
}
478
- is KotlinNativeCompile -> {
479
- KotlinFactories .registerKotlinNativeCompileTask(project, kspTaskName, kotlinCompileTask ).also {
480
+ KotlinPlatformType .native -> {
481
+ KotlinFactories .registerKotlinNativeCompileTask(project, kspTaskName, kotlinCompilation ).also {
480
482
it.configure { kspTask ->
483
+ val kotlinCompileTask = kotlinCompileProvider.get() as KotlinNativeCompile
481
484
configureAsKspTask(kspTask, false )
482
485
configureAsAbstractKotlinCompileTool(kspTask)
483
486
@@ -504,7 +507,7 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
504
507
}
505
508
}
506
509
}
507
- else -> return project.provider { emptyList() }
510
+ // No else; The cases should be exhaustive
508
511
}
509
512
kspGeneratedSourceSet.kotlin.srcDir(project.files(kotlinOutputDir, javaOutputDir).builtBy(kspTaskProvider))
510
513
kotlinCompilation.source(kspGeneratedSourceSet)
0 commit comments