aboutsummaryrefslogtreecommitdiff
path: root/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt
diff options
context:
space:
mode:
Diffstat (limited to 'gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt')
-rw-r--r--gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt25
1 files changed, 14 insertions, 11 deletions
diff --git a/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt b/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt
index 9bc5ae8b..f1ca11d7 100644
--- a/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt
+++ b/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt
@@ -47,6 +47,7 @@ import org.jetbrains.kotlin.gradle.plugin.InternalSubpluginOption
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationWithResources
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilerPluginSupportPlugin
+import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.SubpluginArtifact
import org.jetbrains.kotlin.gradle.plugin.SubpluginOption
@@ -203,7 +204,6 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
val project = kotlinCompilation.target.project
val kotlinCompileProvider: TaskProvider<AbstractKotlinCompileTool<*>> =
project.locateTask(kotlinCompilation.compileKotlinTaskName) ?: return project.provider { emptyList() }
- val javaCompile = findJavaTaskForKotlinCompilation(kotlinCompilation)?.get()
val kspExtension = project.extensions.getByType(KspExtension::class.java)
val kspConfigurations = kspConfigurations.find(kotlinCompilation)
val nonEmptyKspConfigurations = kspConfigurations.filter { it.allDependencies.isNotEmpty() }
@@ -233,7 +233,7 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
"$KSP_GROUP_ID:$KSP_COMPILER_PLUGIN_ID:$KSP_VERSION"
)
- if (javaCompile != null) {
+ findJavaTaskForKotlinCompilation(kotlinCompilation)?.configure { javaCompile ->
val generatedJavaSources = javaCompile.project.fileTree(javaOutputDir)
generatedJavaSources.include("**/*.java")
javaCompile.source(generatedJavaSources)
@@ -249,8 +249,6 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
project.kotlinExtension.sourceSets.create("generatedBy" + kspTaskName.capitalizeAsciiOnly())
sourceSetMap.put(kotlinCompilation.defaultSourceSet, kspGeneratedSourceSet)
- val kotlinCompileTask = kotlinCompileProvider.get()
-
val processorClasspath = project.configurations.maybeCreate("${kspTaskName}ProcessorClasspath")
.extendsFrom(*nonEmptyKspConfigurations.toTypedArray())
fun configureAsKspTask(kspTask: KspTask, isIncremental: Boolean) {
@@ -314,6 +312,7 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
)
if (kspExtension.allowSourcesFromOtherPlugins) {
+ val kotlinCompileTask = kotlinCompileProvider.get()
fun FileCollection.nonSelfDeps(): List<Task> =
buildDependencies.getDependencies(null).filterNot {
it.name == kspTaskName
@@ -382,11 +381,12 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
val isIncremental = project.findProperty("ksp.incremental")?.toString()?.toBoolean() ?: true
// Create and configure KSP tasks.
- val kspTaskProvider = when (kotlinCompileTask) {
- is KotlinCompile -> {
+ val kspTaskProvider = when (kotlinCompilation.platformType) {
+ KotlinPlatformType.jvm, KotlinPlatformType.androidJvm -> {
kotlinCompilation as KotlinCompilationData<*>
KotlinFactories.registerKotlinJvmCompileTask(project, kspTaskName, kotlinCompilation).also {
it.configure { kspTask ->
+ val kotlinCompileTask = kotlinCompileProvider.get() as KotlinCompile
maybeBlockOtherPlugins(kspTask as BaseKotlinCompile)
configureAsKspTask(kspTask, isIncremental)
configureAsAbstractKotlinCompileTool(kspTask as AbstractKotlinCompileTool<*>)
@@ -420,10 +420,11 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
kotlinCompilation.output.classesDirs.from(classOutputDir)
}
}
- is Kotlin2JsCompile -> {
+ KotlinPlatformType.js, KotlinPlatformType.wasm -> {
kotlinCompilation as KotlinCompilationData<*>
KotlinFactories.registerKotlinJSCompileTask(project, kspTaskName, kotlinCompilation).also {
it.configure { kspTask ->
+ val kotlinCompileTask = kotlinCompileProvider.get() as Kotlin2JsCompile
maybeBlockOtherPlugins(kspTask as BaseKotlinCompile)
configureAsKspTask(kspTask, isIncremental)
configureAsAbstractKotlinCompileTool(kspTask as AbstractKotlinCompileTool<*>)
@@ -449,10 +450,11 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
}
}
}
- is KotlinCompileCommon -> {
+ KotlinPlatformType.common -> {
kotlinCompilation as KotlinCompilationData<*>
KotlinFactories.registerKotlinMetadataCompileTask(project, kspTaskName, kotlinCompilation).also {
it.configure { kspTask ->
+ val kotlinCompileTask = kotlinCompileProvider.get() as KotlinCompileCommon
maybeBlockOtherPlugins(kspTask as BaseKotlinCompile)
configureAsKspTask(kspTask, isIncremental)
configureAsAbstractKotlinCompileTool(kspTask as AbstractKotlinCompileTool<*>)
@@ -475,9 +477,10 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
}
}
}
- is KotlinNativeCompile -> {
- KotlinFactories.registerKotlinNativeCompileTask(project, kspTaskName, kotlinCompileTask).also {
+ KotlinPlatformType.native -> {
+ KotlinFactories.registerKotlinNativeCompileTask(project, kspTaskName, kotlinCompilation).also {
it.configure { kspTask ->
+ val kotlinCompileTask = kotlinCompileProvider.get() as KotlinNativeCompile
configureAsKspTask(kspTask, false)
configureAsAbstractKotlinCompileTool(kspTask)
@@ -504,7 +507,7 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
}
}
}
- else -> return project.provider { emptyList() }
+ // No else; The cases should be exhaustive
}
kspGeneratedSourceSet.kotlin.srcDir(project.files(kotlinOutputDir, javaOutputDir).builtBy(kspTaskProvider))
kotlinCompilation.source(kspGeneratedSourceSet)