From 0e6a074c9cce50cc91fcebcf3c1e31a636cebb9f Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Tue, 6 Sep 2022 16:27:11 +0200 Subject: [PATCH] [Gradle][MPP] Implement InternalKotlinSourceSet.compilations This property can later be used to replace the slow compilationsBySourceSet util. KT-52726 --- .../gradle/plugin/mpp/AbstractCompilationDetails.kt | 1 + .../gradle/plugin/sources/AbstractKotlinSourceSet.kt | 9 +++++++++ .../gradle/plugin/sources/InternalKotlinSourceSet.kt | 3 +++ 3 files changed, 13 insertions(+) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractCompilationDetails.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractCompilationDetails.kt index ab8a2986279..2ffb30d5f4c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractCompilationDetails.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractCompilationDetails.kt @@ -32,6 +32,7 @@ abstract class AbstractCompilationDetails : Compilation directlyIncludedKotlinSourceSetsImpl.add(sourceSet) sourceSet.internal.withDependsOnClosure.forAll { withDependsOn -> kotlinSourceSetsClosureImpl.add(withDependsOn) + withDependsOn.internal.addCompilation(compilation) } whenSourceSetAdded(sourceSet) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/AbstractKotlinSourceSet.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/AbstractKotlinSourceSet.kt index 65b75fba0be..fd45cfbf210 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/AbstractKotlinSourceSet.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/AbstractKotlinSourceSet.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.plugin.sources +import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.utils.MutableObservableSet import org.jetbrains.kotlin.gradle.utils.ObservableSet @@ -15,6 +16,7 @@ abstract class AbstractKotlinSourceSet : InternalKotlinSourceSet { private val dependsOnImpl = MutableObservableSet() private val dependsOnClosureImpl = MutableObservableSet() private val withDependsOnClosureImpl = MutableObservableSet(this) + private val compilationsImpl = MutableObservableSet>() final override val dependsOn: ObservableSet get() = dependsOnImpl @@ -25,6 +27,9 @@ abstract class AbstractKotlinSourceSet : InternalKotlinSourceSet { final override val withDependsOnClosure: ObservableSet get() = withDependsOnClosureImpl + override val compilations: ObservableSet> + get() = compilationsImpl + final override fun dependsOn(other: KotlinSourceSet) { if (other == this) return /* @@ -46,5 +51,9 @@ abstract class AbstractKotlinSourceSet : InternalKotlinSourceSet { } protected open fun afterDependsOnAdded(other: KotlinSourceSet) = Unit + + final override fun addCompilation(compilation: KotlinCompilation<*>) { + compilationsImpl.add(compilation) + } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/InternalKotlinSourceSet.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/InternalKotlinSourceSet.kt index 69323db22c2..cc018f78dfc 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/InternalKotlinSourceSet.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/InternalKotlinSourceSet.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.gradle.plugin.sources +import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.utils.ObservableSet @@ -17,4 +18,6 @@ internal interface InternalKotlinSourceSet : KotlinSourceSet { override val dependsOn: ObservableSet val dependsOnClosure: ObservableSet val withDependsOnClosure: ObservableSet + val compilations: ObservableSet> + fun addCompilation(compilation: KotlinCompilation<*>) }