Update CompilationDetails to use Compiler*Options
^KT-27301 In Progress
This commit is contained in:
-1
@@ -14,7 +14,6 @@ import org.gradle.api.attributes.HasAttributes
|
|||||||
import org.gradle.api.file.ConfigurableFileCollection
|
import org.gradle.api.file.ConfigurableFileCollection
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
import org.gradle.api.tasks.TaskProvider
|
import org.gradle.api.tasks.TaskProvider
|
||||||
import org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptions
|
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptionsDeprecated
|
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptionsDeprecated
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCompileDeprecated
|
import org.jetbrains.kotlin.gradle.dsl.KotlinCompileDeprecated
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
|
||||||
|
|||||||
+81
-31
@@ -68,13 +68,19 @@ interface CompilationDetailsWithRuntime<T : KotlinCommonOptions> : CompilationDe
|
|||||||
internal val CompilationDetails<*>.associateCompilationsClosure: Iterable<CompilationDetails<*>>
|
internal val CompilationDetails<*>.associateCompilationsClosure: Iterable<CompilationDetails<*>>
|
||||||
get() = closure { it.associateCompilations }
|
get() = closure { it.associateCompilations }
|
||||||
|
|
||||||
open class DefaultCompilationDetails<T : KotlinCommonOptions>(
|
open class DefaultCompilationDetails<T : KotlinCommonOptions, CO : CompilerCommonOptions>(
|
||||||
final override val target: KotlinTarget,
|
final override val target: KotlinTarget,
|
||||||
final override val compilationPurpose: String,
|
final override val compilationPurpose: String,
|
||||||
defaultSourceSet: KotlinSourceSet,
|
defaultSourceSet: KotlinSourceSet,
|
||||||
override val kotlinOptions: T
|
createCompilerOptions: DefaultCompilationDetails<T, CO>.() -> HasCompilerOptions<CO>,
|
||||||
|
createKotlinOptions: DefaultCompilationDetails<T, CO>.() -> T
|
||||||
) : AbstractCompilationDetails<T>(defaultSourceSet), KotlinCompilationData<T> {
|
) : AbstractCompilationDetails<T>(defaultSourceSet), KotlinCompilationData<T> {
|
||||||
|
|
||||||
|
override val compilerOptions: HasCompilerOptions<CO> by lazy { createCompilerOptions() }
|
||||||
|
|
||||||
|
@Deprecated("Replaced with compilerOptions.options", replaceWith = ReplaceWith("compilerOptions.options"))
|
||||||
|
override val kotlinOptions: T by lazy { createKotlinOptions() }
|
||||||
|
|
||||||
final override val project: Project
|
final override val project: Project
|
||||||
get() = target.project
|
get() = target.project
|
||||||
|
|
||||||
@@ -310,13 +316,14 @@ open class DefaultCompilationDetails<T : KotlinCommonOptions>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open class DefaultCompilationDetailsWithRuntime<T : KotlinCommonOptions>(
|
open class DefaultCompilationDetailsWithRuntime<T : KotlinCommonOptions, CO : CompilerCommonOptions>(
|
||||||
target: KotlinTarget,
|
target: KotlinTarget,
|
||||||
compilationPurpose: String,
|
compilationPurpose: String,
|
||||||
defaultSourceSet: KotlinSourceSet,
|
defaultSourceSet: KotlinSourceSet,
|
||||||
kotlinOptions: T
|
createCompilerOptions: DefaultCompilationDetails<T, CO>.() -> HasCompilerOptions<CO>,
|
||||||
) : DefaultCompilationDetails<T>(
|
createKotlinOptions: DefaultCompilationDetails<T, CO>.() -> T
|
||||||
target, compilationPurpose, defaultSourceSet, kotlinOptions
|
) : DefaultCompilationDetails<T, CO>(
|
||||||
|
target, compilationPurpose, defaultSourceSet, createCompilerOptions, createKotlinOptions
|
||||||
), CompilationDetailsWithRuntime<T> {
|
), CompilationDetailsWithRuntime<T> {
|
||||||
override val runtimeDependencyFilesHolder: GradleKpmDependencyFilesHolder = project.newDependencyFilesHolder(
|
override val runtimeDependencyFilesHolder: GradleKpmDependencyFilesHolder = project.newDependencyFilesHolder(
|
||||||
lowerCamelCaseName(
|
lowerCamelCaseName(
|
||||||
@@ -331,12 +338,16 @@ open class NativeCompilationDetails(
|
|||||||
target: KotlinTarget,
|
target: KotlinTarget,
|
||||||
compilationPurpose: String,
|
compilationPurpose: String,
|
||||||
defaultSourceSet: KotlinSourceSet,
|
defaultSourceSet: KotlinSourceSet,
|
||||||
kotlinOptions: KotlinCommonOptions
|
@Suppress("DEPRECATION")
|
||||||
) : DefaultCompilationDetails<KotlinCommonOptions>(
|
createCompilerOptions: DefaultCompilationDetails<KotlinCommonOptions, CompilerCommonOptions>.() -> HasCompilerOptions<CompilerCommonOptions>,
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
createKotlinOptions: DefaultCompilationDetails<KotlinCommonOptions, CompilerCommonOptions>.() -> KotlinCommonOptions
|
||||||
|
) : DefaultCompilationDetails<KotlinCommonOptions, CompilerCommonOptions>(
|
||||||
target,
|
target,
|
||||||
compilationPurpose,
|
compilationPurpose,
|
||||||
defaultSourceSet,
|
defaultSourceSet,
|
||||||
kotlinOptions
|
createCompilerOptions,
|
||||||
|
createKotlinOptions
|
||||||
) {
|
) {
|
||||||
override val compileDependencyFilesHolder: GradleKpmDependencyFilesHolder = project.newDependencyFilesHolder(
|
override val compileDependencyFilesHolder: GradleKpmDependencyFilesHolder = project.newDependencyFilesHolder(
|
||||||
lowerCamelCaseName(
|
lowerCamelCaseName(
|
||||||
@@ -367,14 +378,17 @@ internal open class SharedNativeCompilationDetails(
|
|||||||
target: KotlinTarget,
|
target: KotlinTarget,
|
||||||
compilationPurpose: String,
|
compilationPurpose: String,
|
||||||
defaultSourceSet: KotlinSourceSet,
|
defaultSourceSet: KotlinSourceSet,
|
||||||
kotlinOptions: KotlinCommonOptions
|
@Suppress("DEPRECATION")
|
||||||
) :
|
createCompilerOptions: DefaultCompilationDetails<KotlinCommonOptions, CompilerCommonOptions>.() -> HasCompilerOptions<CompilerCommonOptions>,
|
||||||
DefaultCompilationDetails<KotlinCommonOptions>(
|
@Suppress("DEPRECATION")
|
||||||
target,
|
createKotlinOptions: DefaultCompilationDetails<KotlinCommonOptions, CompilerCommonOptions>.() -> KotlinCommonOptions
|
||||||
compilationPurpose,
|
) : DefaultCompilationDetails<KotlinCommonOptions, CompilerCommonOptions>(
|
||||||
defaultSourceSet,
|
target,
|
||||||
kotlinOptions
|
compilationPurpose,
|
||||||
) {
|
defaultSourceSet,
|
||||||
|
createCompilerOptions,
|
||||||
|
createKotlinOptions
|
||||||
|
) {
|
||||||
|
|
||||||
override val friendArtifacts: FileCollection
|
override val friendArtifacts: FileCollection
|
||||||
get() = super.friendArtifacts.plus(run {
|
get() = super.friendArtifacts.plus(run {
|
||||||
@@ -464,12 +478,13 @@ internal open class VariantMappedCompilationDetailsWithRuntime<T : KotlinCommonO
|
|||||||
get() = GradleKpmDependencyFilesHolder.ofVariantRuntimeDependencies(variant)
|
get() = GradleKpmDependencyFilesHolder.ofVariantRuntimeDependencies(variant)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class WithJavaCompilationDetails<T : KotlinCommonOptions>(
|
internal class WithJavaCompilationDetails<T : KotlinCommonOptions, CO : CompilerCommonOptions>(
|
||||||
target: KotlinTarget,
|
target: KotlinTarget,
|
||||||
compilationPurpose: String,
|
compilationPurpose: String,
|
||||||
defaultSourceSet: KotlinSourceSet,
|
defaultSourceSet: KotlinSourceSet,
|
||||||
kotlinOptions: T
|
createCompilerOptions: DefaultCompilationDetails<T, CO>.() -> HasCompilerOptions<CO>,
|
||||||
) : DefaultCompilationDetailsWithRuntime<T>(target, compilationPurpose, defaultSourceSet, kotlinOptions) {
|
createKotlinOptions: DefaultCompilationDetails<T, CO>.() -> T
|
||||||
|
) : DefaultCompilationDetailsWithRuntime<T, CO>(target, compilationPurpose, defaultSourceSet, createCompilerOptions, createKotlinOptions) {
|
||||||
override val compilation: KotlinWithJavaCompilation<T>
|
override val compilation: KotlinWithJavaCompilation<T>
|
||||||
get() = super.compilation as KotlinWithJavaCompilation<T>
|
get() = super.compilation as KotlinWithJavaCompilation<T>
|
||||||
|
|
||||||
@@ -504,11 +519,22 @@ class AndroidCompilationDetails(
|
|||||||
val androidVariant: BaseVariant,
|
val androidVariant: BaseVariant,
|
||||||
/** Workaround mutual creation order: a compilation is not added to the target's compilations collection until some point, pass it here */
|
/** Workaround mutual creation order: a compilation is not added to the target's compilations collection until some point, pass it here */
|
||||||
private val getCompilationInstance: () -> KotlinJvmAndroidCompilation
|
private val getCompilationInstance: () -> KotlinJvmAndroidCompilation
|
||||||
) : DefaultCompilationDetailsWithRuntime<KotlinJvmOptions>(
|
) : DefaultCompilationDetailsWithRuntime<KotlinJvmOptions, CompilerJvmOptions>(
|
||||||
target,
|
target,
|
||||||
compilationPurpose,
|
compilationPurpose,
|
||||||
defaultSourceSet,
|
defaultSourceSet,
|
||||||
KotlinJvmOptionsImpl()
|
{
|
||||||
|
object : HasCompilerOptions<CompilerJvmOptions> {
|
||||||
|
override val options: CompilerJvmOptions =
|
||||||
|
target.project.objects.newInstance(CompilerJvmOptionsDefault::class.java)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
object : KotlinJvmOptions {
|
||||||
|
override val options: CompilerJvmOptions
|
||||||
|
get() = compilerOptions.options
|
||||||
|
}
|
||||||
|
}
|
||||||
) {
|
) {
|
||||||
override val compilation: KotlinJvmAndroidCompilation get() = getCompilationInstance()
|
override val compilation: KotlinJvmAndroidCompilation get() = getCompilationInstance()
|
||||||
|
|
||||||
@@ -549,13 +575,23 @@ internal class MetadataCompilationDetails(
|
|||||||
target: KotlinTarget,
|
target: KotlinTarget,
|
||||||
name: String,
|
name: String,
|
||||||
defaultSourceSet: KotlinSourceSet,
|
defaultSourceSet: KotlinSourceSet,
|
||||||
) :
|
) : DefaultCompilationDetails<KotlinMultiplatformCommonOptions, CompilerMultiplatformCommonOptions>(
|
||||||
DefaultCompilationDetails<KotlinMultiplatformCommonOptions>(
|
target,
|
||||||
target,
|
name,
|
||||||
name,
|
defaultSourceSet,
|
||||||
defaultSourceSet,
|
{
|
||||||
KotlinMultiplatformCommonOptionsImpl()
|
object : HasCompilerOptions<CompilerMultiplatformCommonOptions> {
|
||||||
) {
|
override val options: CompilerMultiplatformCommonOptions =
|
||||||
|
target.project.objects.newInstance(CompilerMultiplatformCommonOptionsDefault::class.java)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
object : KotlinMultiplatformCommonOptions {
|
||||||
|
override val options: CompilerMultiplatformCommonOptions
|
||||||
|
get() = compilerOptions.options
|
||||||
|
}
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
|
||||||
override val friendArtifacts: FileCollection
|
override val friendArtifacts: FileCollection
|
||||||
get() = super.friendArtifacts.plus(run {
|
get() = super.friendArtifacts.plus(run {
|
||||||
@@ -569,8 +605,22 @@ internal open class JsCompilationDetails(
|
|||||||
target: KotlinTarget,
|
target: KotlinTarget,
|
||||||
compilationPurpose: String,
|
compilationPurpose: String,
|
||||||
defaultSourceSet: KotlinSourceSet,
|
defaultSourceSet: KotlinSourceSet,
|
||||||
) : DefaultCompilationDetailsWithRuntime<KotlinJsOptions>(
|
) : DefaultCompilationDetailsWithRuntime<KotlinJsOptions, CompilerJsOptions>(
|
||||||
target, compilationPurpose, defaultSourceSet, KotlinJsOptionsImpl()
|
target,
|
||||||
|
compilationPurpose,
|
||||||
|
defaultSourceSet,
|
||||||
|
{
|
||||||
|
object : HasCompilerOptions<CompilerJsOptions> {
|
||||||
|
override val options: CompilerJsOptions =
|
||||||
|
target.project.objects.newInstance(CompilerJsOptionsDefault::class.java)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
object : KotlinJsOptions {
|
||||||
|
override val options: CompilerJsOptions
|
||||||
|
get() = compilerOptions.options
|
||||||
|
}
|
||||||
|
}
|
||||||
) {
|
) {
|
||||||
|
|
||||||
internal abstract class JsCompilationDependenciesHolder @Inject constructor(
|
internal abstract class JsCompilationDependenciesHolder @Inject constructor(
|
||||||
|
|||||||
Reference in New Issue
Block a user