Model mapping: remove interface delegation in AbstractKotlinCompilation

This commit is contained in:
Sergey Igushkin
2022-02-02 14:50:39 +04:00
committed by Space
parent a81049a180
commit 7a4d81f87f
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.gradle.plugin.sources.resolveAllDependsOnSourceSets
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
import org.jetbrains.kotlin.gradle.tasks.locateTask
import org.jetbrains.kotlin.gradle.utils.*
import org.jetbrains.kotlin.project.model.LanguageSettings
import java.util.*
import java.util.concurrent.Callable
@@ -45,25 +46,46 @@ internal fun KotlinCompilation<*>.isMain(): Boolean =
internal val KotlinCompilation<*>.kotlinSourceSetsIncludingDefault: Set<KotlinSourceSet> get() = kotlinSourceSets + defaultSourceSet
abstract class AbstractKotlinCompilation<T : KotlinCommonOptions>(
internal open val compilationDetails: CompilationDetails<T>
internal open val compilationDetails: CompilationDetails<T>,
) : KotlinCompilation<T>,
// FIXME: replace with separate `final override`s, which is safer wrt accidental overrides
HasKotlinDependencies by compilationDetails.kotlinDependenciesHolder,
KotlinCompilationData<T> by compilationDetails.compilationData {
HasKotlinDependencies,
KotlinCompilationData<T> {
//region HasKotlinDependencies delegation: delegate members manually for better control and prevention of accidental overrides
private val kotlinDependenciesHolder get() = compilationDetails.kotlinDependenciesHolder
override val apiConfigurationName: String get() = kotlinDependenciesHolder.apiConfigurationName
override val implementationConfigurationName: String get() = kotlinDependenciesHolder.implementationConfigurationName
override val compileOnlyConfigurationName: String get() = kotlinDependenciesHolder.compileOnlyConfigurationName
override val runtimeOnlyConfigurationName: String get() = kotlinDependenciesHolder.runtimeOnlyConfigurationName
final override fun dependencies(configure: KotlinDependencyHandler.() -> Unit) = kotlinDependenciesHolder.dependencies(configure)
final override fun dependencies(configureClosure: Closure<Any?>) = kotlinDependenciesHolder.dependencies(configureClosure)
//endregion
//region KotlinCompilationData delegation: delegate members manually for better control and prevention of accidental overrides
private val compilationData get() = compilationDetails.compilationData
override val compileAllTaskName: String get() = compilationData.compileAllTaskName
final override val compilationPurpose: String get() = compilationData.compilationPurpose
final override val compilationClassifier: String? get() = compilationData.compilationClassifier
final override val languageSettings: LanguageSettings get() = compilationData.languageSettings
final override val ownModuleName: String get() = compilationData.ownModuleName
final override val moduleName: String get() = compilationData.moduleName
final override val friendPaths: Iterable<FileCollection> get() = compilationData.friendPaths
final override val platformType: KotlinPlatformType get() = compilationData.platformType
final override val output: KotlinCompilationOutput get() = compilationData.output
final override val compileKotlinTaskName: String get() = compilationData.compileKotlinTaskName
final override val kotlinOptions: T get() = compilationData.kotlinOptions
final override val kotlinSourceDirectoriesByFragmentName get() = compilationData.kotlinSourceDirectoriesByFragmentName
//endregion
override val target: KotlinTarget get() = compilationDetails.target
final override val compileDependencyConfigurationName: String
get() = compilationDetails.compileDependencyFilesHolder.dependencyConfigurationName
// FIXME: use delegation to callable reference once KT-50019 is fixed
final override var compileDependencyFiles: FileCollection
get() = compilationDetails.compileDependencyFilesHolder.dependencyFiles
set(value) {
compilationDetails.compileDependencyFilesHolder.dependencyFiles = value
}
set(value) { compilationDetails.compileDependencyFilesHolder.dependencyFiles = value }
override val platformType: KotlinPlatformType get() = compilationDetails.compilationData.platformType
final override val kotlinSourceSets: MutableSet<KotlinSourceSet> get() = compilationDetails.directlyIncludedKotlinSourceSets
final override val defaultSourceSetName: String get() = compilationDetails.defaultSourceSetName