[Gradle] Restore AbstractKotlinCompilation and AbstractKotlinCompilationToRunnableFiles...

... into KotlinCompilation class hierarchy (scheduled for removal later)

KT-54312
This commit is contained in:
Sebastian Sellmair
2022-10-04 18:10:05 +02:00
committed by Space Team
parent 1737daea55
commit 69b7cef2e2
15 changed files with 71 additions and 221 deletions
@@ -121,7 +121,7 @@ interface KotlinCompilation<out T : KotlinCommonOptionsDeprecated> : Named,
get() = target.disambiguationClassifier + name
}
// TODO NOW: Revisit/Remove?
@Deprecated("Scheduled for removal with Kotlin 1.9")
interface KotlinCompilationToRunnableFiles<T : KotlinCommonOptionsDeprecated> : KotlinCompilation<T> {
override val runtimeDependencyConfigurationName: String
@@ -132,7 +132,7 @@ interface KotlinCompilationToRunnableFiles<T : KotlinCommonOptionsDeprecated> :
}
@Deprecated("Scheduled for removal with Kotlin 1.9")
@Suppress("EXTENSION_SHADOWED_BY_MEMBER") // kept for compatibility
@Suppress("EXTENSION_SHADOWED_BY_MEMBER", "deprecation") // kept for compatibility
val <T : KotlinCommonOptionsDeprecated> KotlinCompilation<T>.runtimeDependencyConfigurationName: String?
get() = (this as? KotlinCompilationToRunnableFiles<T>)?.runtimeDependencyConfigurationName
@@ -39,6 +39,7 @@ interface CompilationExecutionSource<CompilationType : KotlinCompilation<*>> : E
val compilation: CompilationType
}
@Suppress("deprecation")
interface CompilationExecutionSourceSupport<in T : KotlinCompilationToRunnableFiles<*>> {
/**
* Select a compilation to run the execution from.
@@ -3,131 +3,13 @@
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("DEPRECATION")
package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.Action
import org.gradle.api.GradleException
import org.gradle.api.Project
import org.gradle.api.attributes.AttributeContainer
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
import org.jetbrains.kotlin.gradle.dsl.KotlinCompile
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
import org.jetbrains.kotlin.gradle.tasks.locateTask
import org.jetbrains.kotlin.gradle.utils.ObservableSet
import org.jetbrains.kotlin.project.model.LanguageSettings
import org.jetbrains.kotlin.tooling.core.MutableExtras
import org.jetbrains.kotlin.tooling.core.mutableExtrasOf
import java.util.*
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationImpl
abstract class AbstractKotlinCompilation<T : KotlinCommonOptions>(
internal open val compilationDetails: CompilationDetails<T>,
) : InternalKotlinCompilation<T>,
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(configure: Action<KotlinDependencyHandler>) = dependencies { configure.execute(this) }
//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
override val compilerOptions: HasCompilerOptions<*>
get() = compilationData.compilerOptions
@Suppress("DEPRECATION")
@Deprecated("Replaced by compilerOptions", replaceWith = ReplaceWith("compilerOptions.options"))
final override val kotlinOptions: T get() = compilationData.kotlinOptions
final override val kotlinSourceDirectoriesByFragmentName get() = compilationData.kotlinSourceDirectoriesByFragmentName
//endregion
override val target: KotlinTarget get() = compilationDetails.target
override val extras: MutableExtras = mutableExtrasOf()
final override val compileDependencyConfigurationName: String
get() = compilationDetails.compileDependencyFilesHolder.dependencyConfigurationName
final override var compileDependencyFiles: FileCollection
get() = compilationDetails.compileDependencyFilesHolder.dependencyFiles
set(value) {
compilationDetails.compileDependencyFilesHolder.dependencyFiles = value
}
final override val kotlinSourceSets: ObservableSet<KotlinSourceSet>
get() = compilationDetails.kotlinSourceSets
override val allKotlinSourceSets: ObservableSet<KotlinSourceSet>
get() = compilationDetails.allKotlinSourceSets
override val defaultSourceSet: KotlinSourceSet get() = compilationDetails.defaultSourceSet
final override val compilationName: String get() = compilationDetails.compilationData.compilationPurpose
@Suppress("DEPRECATION")
@Deprecated("Replaced by compilerOptions.configure { }", replaceWith = ReplaceWith("compilerOptions.configure(configure)"))
override fun kotlinOptions(configure: T.() -> Unit) =
configure(kotlinOptions)
@Suppress("DEPRECATION")
@Deprecated("Accessing task instance directly is deprecated", replaceWith = ReplaceWith("compileTaskProvider"))
override val compileKotlinTask: KotlinCompile<T>
get() = compileKotlinTaskProvider.get()
@Suppress("DEPRECATION")
@Deprecated("Replaced with compileTaskProvider", replaceWith = ReplaceWith("compileTaskProvider"))
override val compileKotlinTaskProvider: TaskProvider<out KotlinCompile<T>>
get() = target.project.locateTask(compileKotlinTaskName) ?: throw GradleException("Couldn't locate task $compileKotlinTaskName")
override val compileTaskProvider: TaskProvider<out KotlinCompilationTask<*>>
get() = target.project.locateTask(compileKotlinTaskName) ?: throw GradleException("Couldn't locate task $compileKotlinTaskName")
private val attributeContainer by lazy { HierarchyAttributeContainer(target.attributes) }
override fun getAttributes(): AttributeContainer = attributeContainer
override fun defaultSourceSet(configure: KotlinSourceSet.() -> Unit) = defaultSourceSet.configure()
override fun source(sourceSet: KotlinSourceSet) {
compilationDetails.source(sourceSet)
}
override fun toString(): String = "compilation '$name' ($target)"
override fun associateWith(other: KotlinCompilation<*>) {
compilationDetails.associateWith((other as AbstractKotlinCompilation<*>).compilationDetails)
}
override val associateWith: List<KotlinCompilation<*>>
get() = Collections.unmodifiableList(compilationDetails.associateCompilations.map { it.compilation })
override val project: Project
get() = target.project
override val owner: KotlinTarget
get() = target
override val relatedConfigurationNames: List<String>
get() = compilationDetails.kotlinDependenciesHolder.relatedConfigurationNames + compileDependencyConfigurationName
}
@Deprecated("Use KotlinCompilation<T> instead")
abstract class AbstractKotlinCompilation<T : KotlinCommonOptions> internal constructor(compilation: KotlinCompilationImpl) :
DecoratedKotlinCompilation<T>(compilation)
@@ -3,24 +3,25 @@
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("DEPRECATION")
package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.file.FileCollection
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationToRunnableFiles
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationImpl
abstract class AbstractKotlinCompilationToRunnableFiles<T : KotlinCommonOptions>(
override val compilationDetails: CompilationDetailsWithRuntime<T>,
) : AbstractKotlinCompilation<T>(compilationDetails),
KotlinCompilationToRunnableFiles<T> {
@Deprecated("Use KotlinCompilation<T> instead")
abstract class AbstractKotlinCompilationToRunnableFiles<T : KotlinCommonOptions>
internal constructor(compilation: KotlinCompilationImpl) : AbstractKotlinCompilation<T>(compilation), KotlinCompilationToRunnableFiles<T> {
final override val runtimeDependencyConfigurationName: String get() = compilationDetails.runtimeDependencyFilesHolder.dependencyConfigurationName
final override var runtimeDependencyFiles: FileCollection
get() = compilationDetails.runtimeDependencyFilesHolder.dependencyFiles
set(value) {
compilationDetails.runtimeDependencyFilesHolder.dependencyFiles = value
}
final override val runtimeDependencyConfigurationName: String
get() = compilation.runtimeDependencyConfigurationName ?: error("$compilation: Missing 'runtimeDependencyConfigurationName'")
final override var runtimeDependencyFiles: FileCollection =
compilation.runtimeDependencyFiles ?: error("$compilation: Missing 'runtimeDependencyFiles'")
override val relatedConfigurationNames: List<String>
get() = super<AbstractKotlinCompilation>.relatedConfigurationNames + runtimeDependencyConfigurationName
get() = compilation.relatedConfigurationNames
}
@@ -0,0 +1,27 @@
/*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("UNCHECKED_CAST")
package org.jetbrains.kotlin.gradle.plugin.mpp
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationImpl
@InternalKotlinGradlePluginApi
abstract class DecoratedKotlinCompilation<T : KotlinCommonOptions> internal constructor(
internal val compilation: KotlinCompilationImpl,
) : InternalKotlinCompilation<T> by compilation as InternalKotlinCompilation<T> {
override fun toString(): String = compilation.toString()
}
internal inline val <reified T : KotlinCommonOptions> InternalKotlinCompilation<T>.decoratedInstance: DecoratedKotlinCompilation<T>
get() = if (this is DecoratedKotlinCompilation<T>) this
else (target.compilations.getByName(compilationName).internal.castKotlinOptionsType<T>() as DecoratedKotlinCompilation<T>)
internal inline val <reified T : KotlinCommonOptions> InternalKotlinCompilation<T>.decoratedInstanceOrNull: DecoratedKotlinCompilation<T>?
get() = if (this is DecoratedKotlinCompilation<T>) this
else (target.compilations.findByName(compilationName)?.internal?.castKotlinOptionsType<T>() as? DecoratedKotlinCompilation<T>)
@@ -10,8 +10,6 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationModuleManager
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationModuleManager.CompilationModule.Type.Auxiliary
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationModuleManager.CompilationModule.Type.Main
import org.jetbrains.kotlin.gradle.utils.ObservableSet
import org.jetbrains.kotlin.tooling.core.MutableExtras
@@ -20,28 +18,12 @@ internal interface InternalKotlinCompilation<out T : KotlinCommonOptions> : Kotl
override val kotlinSourceSets: ObservableSet<KotlinSourceSet>
override val allKotlinSourceSets: ObservableSet<KotlinSourceSet>
val friendPaths: Iterable<FileCollection>
// TODO NOW: Remove default impl
val compilationModule: KotlinCompilationModuleManager.CompilationModule
get() = KotlinCompilationModuleManager.CompilationModule(
compilationName = compilationName,
ownModuleName = project.provider { (this as AbstractKotlinCompilation<*>).ownModuleName },
type = if (isMain()) Main else Auxiliary
)
// TODO NOW: Remove default impl
override val runtimeDependencyFiles: FileCollection? get() = null
override val runtimeDependencyConfigurationName: String? get() = null
val processResourcesTaskName: String? get() = null
val processResourcesTaskName: String?
}
internal inline val <reified T : KotlinCommonOptions> InternalKotlinCompilation<T>.decoratorInstance: InternalKotlinCompilation<T>
get() = target.compilations.getByName(compilationName).internal.castKotlinOptionsType()
internal inline val <reified T : KotlinCommonOptions> InternalKotlinCompilation<T>.decoratorInstanceOrNull: InternalKotlinCompilation<T>?
get() = target.compilations.findByName(compilationName)?.internal?.castKotlinOptionsType()
internal val <T : KotlinCommonOptions> KotlinCompilation<T>.internal: InternalKotlinCompilation<T>
get() = (this as? InternalKotlinCompilation<T>) ?: throw IllegalArgumentException(
"KotlinCompilation($name) ${this::class} does not implement ${InternalKotlinCompilation::class}"
@@ -17,9 +17,8 @@ import javax.inject.Inject
interface KotlinMetadataCompilation<T : KotlinCommonOptions> : KotlinCompilation<T>
open class KotlinCommonCompilation @Inject internal constructor(
private val compilation: KotlinCompilationImpl
) : InternalKotlinCompilation<KotlinCommonOptions> by compilation,
open class KotlinCommonCompilation @Inject internal constructor(compilation: KotlinCompilationImpl) :
AbstractKotlinCompilation<KotlinCommonOptions>(compilation),
KotlinMetadataCompilation<KotlinCommonOptions> {
@Suppress("DEPRECATION")
@Deprecated("Accessing task instance directly is deprecated", replaceWith = ReplaceWith("compileTaskProvider"))
@@ -90,7 +90,7 @@ internal class DefaultKotlinCompilationFriendPathsResolver(
object AdditionalAndroidFriendArtifactResolver : FriendArtifactResolver {
override fun resolveFriendArtifacts(compilation: InternalKotlinCompilation<*>): FileCollection {
return compilation.project.files((compilation.decoratorInstance as KotlinJvmAndroidCompilation).testedVariantArtifacts)
return compilation.project.files((compilation.decoratedInstance as KotlinJvmAndroidCompilation).testedVariantArtifacts)
}
}
}
@@ -224,4 +224,8 @@ internal class KotlinCompilationImpl @Inject constructor(
}
//endregion
override fun toString(): String {
return "compilation '$name' ($target)"
}
}
@@ -9,7 +9,6 @@
package org.jetbrains.kotlin.gradle.plugin.mpp
import groovy.lang.Closure
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.dsl.*
import org.jetbrains.kotlin.gradle.plugin.*
@@ -22,9 +21,8 @@ import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
import javax.inject.Inject
open class KotlinJsCompilation @Inject internal constructor(
private val compilation: KotlinCompilationImpl
) : InternalKotlinCompilation<KotlinJsOptions> by compilation.castKotlinOptionsType(),
KotlinCompilationToRunnableFiles<KotlinJsOptions> {
compilation: KotlinCompilationImpl
) : AbstractKotlinCompilationToRunnableFiles<KotlinJsOptions>(compilation) {
@Suppress("UNCHECKED_CAST")
final override val compilerOptions: HasCompilerOptions<CompilerJsOptions>
@@ -68,14 +66,6 @@ open class KotlinJsCompilation @Inject internal constructor(
override val compileTaskProvider: TaskProvider<Kotlin2JsCompile>
get() = compilation.compileTaskProvider as TaskProvider<Kotlin2JsCompile>
override val runtimeDependencyConfigurationName: String
get() = compilation.runtimeDependencyConfigurationName ?: error("Missing 'runtimeDependencyConfigurationName'")
override var runtimeDependencyFiles: FileCollection = compilation.runtimeDependencyFiles ?: error("Missing 'runtimeDependencyFiles'")
override val relatedConfigurationNames: List<String>
get() = compilation.relatedConfigurationNames
internal val packageJsonHandlers = mutableListOf<PackageJson.() -> Unit>()
fun packageJson(handler: PackageJson.() -> Unit) {
@@ -9,6 +9,4 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationImpl
import javax.inject.Inject
open class KotlinJsIrCompilation @Inject internal constructor(
compilation: KotlinCompilationImpl
) : KotlinJsCompilation(compilation)
open class KotlinJsIrCompilation @Inject internal constructor(compilation: KotlinCompilationImpl) : KotlinJsCompilation(compilation)
@@ -14,17 +14,15 @@ import org.gradle.api.tasks.compile.JavaCompile
import org.jetbrains.kotlin.gradle.dsl.CompilerJvmOptions
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationToRunnableFiles
import org.jetbrains.kotlin.gradle.plugin.getJavaTaskProvider
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationImpl
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
import javax.inject.Inject
open class KotlinJvmAndroidCompilation @Inject internal constructor(
private val compilation: KotlinCompilationImpl,
compilation: KotlinCompilationImpl,
val androidVariant: BaseVariant
) : InternalKotlinCompilation<KotlinJvmOptions> by compilation.castKotlinOptionsType(),
KotlinCompilationToRunnableFiles<KotlinJvmOptions> {
) : AbstractKotlinCompilationToRunnableFiles<KotlinJvmOptions>(compilation) {
override val target: KotlinAndroidTarget = compilation.target as KotlinAndroidTarget
@@ -51,11 +49,6 @@ open class KotlinJvmAndroidCompilation @Inject internal constructor(
val compileJavaTaskProvider: TaskProvider<out JavaCompile>
get() = androidVariant.getJavaTaskProvider()
override val runtimeDependencyConfigurationName: String
get() = compilation.runtimeDependencyConfigurationName ?: error("Missing 'runtimeDependencyConfigurationName'")
override var runtimeDependencyFiles: FileCollection = compilation.runtimeDependencyFiles ?: error("Missing 'runtimeDependencyFiles'")
override val relatedConfigurationNames: List<String>
get() = compilation.relatedConfigurationNames + listOf(
"${androidVariant.name}ApiElements",
@@ -6,7 +6,6 @@
@file:Suppress("PackageDirectoryMismatch") // Old package for compatibility
package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.TaskProvider
import org.gradle.api.tasks.compile.JavaCompile
import org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptions
@@ -14,7 +13,6 @@ import org.jetbrains.kotlin.gradle.dsl.CompilerJvmOptions
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationToRunnableFiles
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationWithResources
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessor
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationImpl
@@ -24,10 +22,9 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
import javax.inject.Inject
open class KotlinJvmCompilation @Inject internal constructor(
private val compilation: KotlinCompilationImpl
) : InternalKotlinCompilation<KotlinJvmOptions> by compilation.castKotlinOptionsType(),
KotlinCompilationWithResources<KotlinJvmOptions>,
KotlinCompilationToRunnableFiles<KotlinJvmOptions> {
compilation: KotlinCompilationImpl
) : AbstractKotlinCompilationToRunnableFiles<KotlinJvmOptions>(compilation),
KotlinCompilationWithResources<KotlinJvmOptions> {
override val target: KotlinJvmTarget = compilation.target as KotlinJvmTarget
@@ -58,16 +55,8 @@ open class KotlinJvmCompilation @Inject internal constructor(
project.tasks.withType(JavaCompile::class.java).named(javaSourceSet.compileJavaTaskName)
} else null
override val runtimeDependencyConfigurationName: String
get() = compilation.runtimeDependencyConfigurationName ?: error("Missing 'runtimeDependencyConfigurationName'")
override var runtimeDependencyFiles: FileCollection = compilation.runtimeDependencyFiles ?: error("Missing 'runtimeDependencyFiles'")
override val processResourcesTaskName: String
get() = compilation.processResourcesTaskName ?: error("Missing 'processResourcesTaskName'")
override val relatedConfigurationNames: List<String>
get() = compilation.relatedConfigurationNames
}
//TODO SEB: Find a good spot for this function
@@ -6,14 +6,12 @@
@file:Suppress("PackageDirectoryMismatch", "UNCHECKED_CAST") // Old package for compatibility
package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.SourceSet
import org.gradle.api.tasks.TaskProvider
import org.gradle.api.tasks.compile.JavaCompile
import org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptions
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationToRunnableFiles
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationWithResources
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationImpl
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
@@ -21,34 +19,21 @@ import org.jetbrains.kotlin.gradle.utils.named
import javax.inject.Inject
open class KotlinWithJavaCompilation<KotlinOptionsType : KotlinCommonOptions, CO : CompilerCommonOptions> @Inject internal constructor(
private val compilation: KotlinCompilationImpl,
compilation: KotlinCompilationImpl,
val javaSourceSet: SourceSet,
) : InternalKotlinCompilation<KotlinOptionsType> by compilation as InternalKotlinCompilation<KotlinOptionsType>,
KotlinCompilationWithResources<KotlinOptionsType>,
KotlinCompilationToRunnableFiles<KotlinOptionsType> {
) : AbstractKotlinCompilationToRunnableFiles<KotlinOptionsType>(compilation),
KotlinCompilationWithResources<KotlinOptionsType> {
@Suppress("UNCHECKED_CAST")
override val compilerOptions: HasCompilerOptions<CO> =
compilation.compilerOptions as HasCompilerOptions<CO>
@Suppress("UNCHECKED_CAST")
override val kotlinOptions: KotlinOptionsType
get() = compilation.kotlinOptions as KotlinOptionsType
val compileJavaTaskProvider: TaskProvider<out JavaCompile>
get() = target.project.tasks.withType(JavaCompile::class.java).named(javaSourceSet.compileJavaTaskName)
override val runtimeDependencyConfigurationName: String
get() = compilation.runtimeDependencyConfigurationName ?: error("Missing 'runtimeDependencyConfigurationName'")
override var runtimeDependencyFiles: FileCollection = compilation.runtimeDependencyFiles ?: error("Missing 'runtimeDependencyFiles'")
override val processResourcesTaskName: String
get() = compilation.processResourcesTaskName ?: error("Missing 'processResourcesTaskName'")
override val relatedConfigurationNames: List<String>
get() = compilation.relatedConfigurationNames
fun source(javaSourceSet: SourceSet) {
with(target.project) {
afterEvaluate {
@@ -22,9 +22,9 @@ import java.util.concurrent.Callable
import javax.inject.Inject
abstract class AbstractKotlinNativeCompilation internal constructor(
private val compilation: KotlinCompilationImpl,
compilation: KotlinCompilationImpl,
val konanTarget: KonanTarget
) : InternalKotlinCompilation<KotlinCommonOptions> by compilation.castKotlinOptionsType() {
) : AbstractKotlinCompilation<KotlinCommonOptions>(compilation) {
@Suppress("DEPRECATION")
@Deprecated("Accessing task instance directly is deprecated", replaceWith = ReplaceWith("compileTaskProvider"))
@@ -49,7 +49,7 @@ abstract class AbstractKotlinNativeCompilation internal constructor(
}
open class KotlinNativeCompilation @Inject internal constructor(
konanTarget: KonanTarget, private val compilation: KotlinCompilationImpl,
konanTarget: KonanTarget, compilation: KotlinCompilationImpl,
) : AbstractKotlinNativeCompilation(compilation, konanTarget) {
final override val target: KotlinNativeTarget
@@ -94,5 +94,4 @@ internal fun addSourcesToKotlinNativeCompileTask(
task.setSource(sourceFiles)
task.commonSources.from(project.files(Callable { if (addAsCommonSources.value) sourceFiles() else emptyList() }))
}
}