From 84a22256f9f47a998edfb3f94dcd2c0d255647e6 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Wed, 7 Sep 2022 17:04:42 +0200 Subject: [PATCH] [Gradle][MPP] AbstractCompilationDetails.source: Return early if source was already added ^KT-52726 Verification Pending --- .../plugin/mpp/AbstractCompilationDetails.kt | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) 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 1bafe19ee7c..201fbf7bdb5 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 @@ -28,11 +28,19 @@ abstract class AbstractCompilationDetails : Compilation final override val allKotlinSourceSets: ObservableSet get() = allKotlinSourceSetsImpl + /** + * All SourceSets that have been processed by [source] already. + * [directlyIncludedKotlinSourceSets] cannot be used in this case, because + * the [defaultSourceSet] will always be already included. + */ + private val sourcedKotlinSourceSets = hashSetOf() + final override fun source(sourceSet: KotlinSourceSet) { + if (!sourcedKotlinSourceSets.add(sourceSet)) return directlyIncludedKotlinSourceSetsImpl.add(sourceSet) - sourceSet.internal.withDependsOnClosure.forAll { withDependsOn -> - allKotlinSourceSetsImpl.add(withDependsOn) - withDependsOn.internal.addCompilation(compilation) + sourceSet.internal.withDependsOnClosure.forAll { inDependsOnClosure -> + allKotlinSourceSetsImpl.add(inDependsOnClosure) + inDependsOnClosure.internal.addCompilation(compilation) } whenSourceSetAdded(sourceSet)