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)