[Gradle] KotlinSourceSet.commonizerTarget: Use awaitPlatformCompilations instead of Stage

^KT-56654 Verification Pending
This commit is contained in:
Sebastian Sellmair
2023-03-29 11:40:33 +02:00
committed by Space Team
parent 8fe444f15e
commit cdca6da679
2 changed files with 12 additions and 5 deletions
@@ -26,6 +26,6 @@ internal interface InternalKotlinSourceSet : KotlinSourceSet {
} }
internal suspend fun InternalKotlinSourceSet.awaitPlatformCompilations(): Set<KotlinCompilation<*>> { internal suspend fun InternalKotlinSourceSet.awaitPlatformCompilations(): Set<KotlinCompilation<*>> {
KotlinPluginLifecycle.Stage.FinaliseRefinesEdges.await() KotlinPluginLifecycle.Stage.AfterFinaliseRefinesEdges.await()
return compilations.filter { it !is KotlinMetadataCompilation }.toSet() return compilations.filter { it !is KotlinMetadataCompilation }.toSet()
} }
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.gradle.plugin.await
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinSharedNativeCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinSharedNativeCompilation
import org.jetbrains.kotlin.gradle.plugin.sources.awaitPlatformCompilations
import org.jetbrains.kotlin.gradle.plugin.sources.internal import org.jetbrains.kotlin.gradle.plugin.sources.internal
import org.jetbrains.kotlin.gradle.utils.Future import org.jetbrains.kotlin.gradle.utils.Future
import org.jetbrains.kotlin.gradle.utils.future import org.jetbrains.kotlin.gradle.utils.future
@@ -23,9 +24,7 @@ import org.jetbrains.kotlin.gradle.utils.futureExtension
import org.jetbrains.kotlin.tooling.core.UnsafeApi import org.jetbrains.kotlin.tooling.core.UnsafeApi
internal val KotlinSourceSet.commonizerTarget: Future<CommonizerTarget?> by futureExtension { internal val KotlinSourceSet.commonizerTarget: Future<CommonizerTarget?> by futureExtension {
KotlinPluginLifecycle.Stage.AfterFinaliseRefinesEdges.await() inferCommonizerTarget(internal.awaitPlatformCompilations())
@OptIn(UnsafeApi::class)
inferCommonizerTarget(this)
} }
internal val KotlinSourceSet.sharedCommonizerTarget: Future<SharedCommonizerTarget?> internal val KotlinSourceSet.sharedCommonizerTarget: Future<SharedCommonizerTarget?>
@@ -39,7 +38,15 @@ internal val KotlinCompilation<*>.commonizerTarget: Future<CommonizerTarget?> by
@UnsafeApi("Use sourceSet.commonizerTarget instead") @UnsafeApi("Use sourceSet.commonizerTarget instead")
internal fun inferCommonizerTarget(sourceSet: KotlinSourceSet): CommonizerTarget? { internal fun inferCommonizerTarget(sourceSet: KotlinSourceSet): CommonizerTarget? {
val allCompilationLeafTargets = sourceSet.internal.compilations val platformCompilations = sourceSet.internal.compilations
.filter { compilation -> compilation !is KotlinMetadataCompilation }
return inferCommonizerTarget(platformCompilations)
}
private fun inferCommonizerTarget(compilations: Iterable<KotlinCompilation<*>>): CommonizerTarget? {
@OptIn(UnsafeApi::class)
val allCompilationLeafTargets = compilations
.filter { compilation -> compilation !is KotlinMetadataCompilation } .filter { compilation -> compilation !is KotlinMetadataCompilation }
.map { compilation -> inferCommonizerTarget(compilation) ?: return null } .map { compilation -> inferCommonizerTarget(compilation) ?: return null }
.allLeaves() .allLeaves()