diff options
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.kt | 25 |
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) |