KT-MR-5666 Make CompilationDetails.directlyIncludedSourceSets read-only

This commit is contained in:
Sergey Igushkin
2022-02-14 14:54:34 +04:00
committed by Space
parent b3bd92ddaa
commit 6cc73a73ce
2 changed files with 10 additions and 5 deletions
@@ -54,7 +54,7 @@ interface CompilationDetails<T : KotlinCommonOptions> {
fun source(sourceSet: KotlinSourceSet)
val directlyIncludedKotlinSourceSets: MutableSet<KotlinSourceSet>
val directlyIncludedKotlinSourceSets: Set<KotlinSourceSet>
val defaultSourceSetName: String
@Suppress("UNCHECKED_CAST")
@@ -465,9 +465,8 @@ internal open class VariantMappedCompilationDetails<T : KotlinCommonOptions>(
override val kotlinDependenciesHolder: HasKotlinDependencies
get() = variant
override val directlyIncludedKotlinSourceSets: MutableSet<KotlinSourceSet>
// FIXME: this effectively ignores the mutation of the set!
get() = compilation.defaultSourceSet.dependsOn.toMutableSet()
override val directlyIncludedKotlinSourceSets: Set<KotlinSourceSet>
get() = compilation.defaultSourceSet.dependsOn
}
internal open class VariantMappedCompilationDetailsWithRuntime<T : KotlinCommonOptions>(
@@ -86,7 +86,13 @@ abstract class AbstractKotlinCompilation<T : KotlinCommonOptions>(
get() = compilationDetails.compileDependencyFilesHolder.dependencyFiles
set(value) { compilationDetails.compileDependencyFilesHolder.dependencyFiles = value }
final override val kotlinSourceSets: MutableSet<KotlinSourceSet> get() = compilationDetails.directlyIncludedKotlinSourceSets
final override val kotlinSourceSets: MutableSet<KotlinSourceSet> 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