From 6cc73a73ce36a5211c0cce426e5c2cc55d4b88f2 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Mon, 14 Feb 2022 14:54:34 +0400 Subject: [PATCH] KT-MR-5666 Make CompilationDetails.directlyIncludedSourceSets read-only --- .../kotlin/gradle/plugin/mpp/CompilationDetails.kt | 7 +++---- .../kotlin/gradle/plugin/mpp/kotlinCompilations.kt | 8 +++++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/CompilationDetails.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/CompilationDetails.kt index 1b4fdd2df1b..f17de2e2d57 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/CompilationDetails.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/CompilationDetails.kt @@ -54,7 +54,7 @@ interface CompilationDetails { fun source(sourceSet: KotlinSourceSet) - val directlyIncludedKotlinSourceSets: MutableSet + val directlyIncludedKotlinSourceSets: Set val defaultSourceSetName: String @Suppress("UNCHECKED_CAST") @@ -465,9 +465,8 @@ internal open class VariantMappedCompilationDetails( override val kotlinDependenciesHolder: HasKotlinDependencies get() = variant - override val directlyIncludedKotlinSourceSets: MutableSet - // FIXME: this effectively ignores the mutation of the set! - get() = compilation.defaultSourceSet.dependsOn.toMutableSet() + override val directlyIncludedKotlinSourceSets: Set + get() = compilation.defaultSourceSet.dependsOn } internal open class VariantMappedCompilationDetailsWithRuntime( diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt index 74dfcd238b5..3cc8e8cc2a6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt @@ -86,7 +86,13 @@ abstract class AbstractKotlinCompilation( get() = compilationDetails.compileDependencyFilesHolder.dependencyFiles set(value) { compilationDetails.compileDependencyFilesHolder.dependencyFiles = value } - final override val kotlinSourceSets: MutableSet get() = compilationDetails.directlyIncludedKotlinSourceSets + final override val kotlinSourceSets: MutableSet get() = + when (val details = compilationDetails) { + is DefaultCompilationDetails -> details.directlyIncludedKotlinSourceSets // mutable in that subtype + // TODO deprecate mutability of this set. We shouldn't allow mutating it directly anyway; + else -> details.directlyIncludedKotlinSourceSets.toMutableSet() + } + final override val defaultSourceSetName: String get() = compilationDetails.defaultSourceSetName final override val compilationName: String get() = compilationDetails.compilationData.compilationPurpose