[Gradle] ExternalTargetApi: Rename 'DecoratedKotlinCompilationFactory' to 'CompilationFactory'

To be consistent with 'TargetFactory' in ExternalKotlinTargetDescriptor

KT-55524
This commit is contained in:
Sebastian Sellmair
2023-04-19 16:25:55 +02:00
committed by Space Team
parent 898e2beecb
commit 5e13e118fa
5 changed files with 80 additions and 55 deletions
@@ -12,7 +12,7 @@ import org.gradle.api.attributes.java.TargetJvmEnvironment.TARGET_JVM_ENVIRONMEN
import org.gradle.kotlin.dsl.named
import org.jetbrains.kotlin.gradle.android.AndroidKotlinSourceSet.Companion.android
import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalKotlinCompilationDescriptor
import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalKotlinCompilationDescriptor.DecoratedKotlinCompilationFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalKotlinCompilationDescriptor.CompilationFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.external.createCompilation
@@ -22,7 +22,7 @@ internal fun PrototypeAndroidTarget.createAndroidCompilation(name: String): Prot
defaultSourceSet = kotlin.sourceSets.maybeCreate(camelCase("prototype", targetName, name)).apply {
android = AndroidKotlinSourceSet()
}
decoratedKotlinCompilationFactory = DecoratedKotlinCompilationFactory(::PrototypeAndroidCompilation)
compilationFactory = CompilationFactory(::PrototypeAndroidCompilation)
compileTaskName = camelCase("prototype", "compile", targetName, name)
/*
@@ -231,6 +231,7 @@ public abstract class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalDe
public abstract interface class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor {
public abstract fun getCompilationAssociator ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$CompilationAssociator;
public abstract fun getCompilationFactory ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$CompilationFactory;
public abstract fun getCompilationName ()Ljava/lang/String;
public abstract fun getCompileAllTaskName ()Ljava/lang/String;
public abstract fun getCompileTaskName ()Ljava/lang/String;
@@ -240,24 +241,26 @@ public abstract interface class org/jetbrains/kotlin/gradle/plugin/mpp/external/
public abstract fun getFriendArtifactResolver ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$FriendArtifactResolver;
}
public abstract interface class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptorBuilder {
public abstract fun configure (Lkotlin/jvm/functions/Function1;)Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptorBuilder;
public abstract fun getCompilationAssociator ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$CompilationAssociator;
public abstract fun getCompilationName ()Ljava/lang/String;
public abstract fun getCompileAllTaskName ()Ljava/lang/String;
public abstract fun getCompileTaskName ()Ljava/lang/String;
public abstract fun getConfigure ()Lkotlin/jvm/functions/Function1;
public abstract fun getDecoratedKotlinCompilationFactory ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$DecoratedKotlinCompilationFactory;
public abstract fun getDefaultSourceSet ()Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet;
public abstract fun getFriendArtifactResolver ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$FriendArtifactResolver;
public abstract fun setCompilationAssociator (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$CompilationAssociator;)V
public abstract fun setCompilationName (Ljava/lang/String;)V
public abstract fun setCompileAllTaskName (Ljava/lang/String;)V
public abstract fun setCompileTaskName (Ljava/lang/String;)V
public abstract fun setConfigure (Lkotlin/jvm/functions/Function1;)V
public abstract fun setDecoratedKotlinCompilationFactory (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$DecoratedKotlinCompilationFactory;)V
public abstract fun setDefaultSourceSet (Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet;)V
public abstract fun setFriendArtifactResolver (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$FriendArtifactResolver;)V
public final class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptorBuilder {
public final fun configure (Lkotlin/jvm/functions/Function1;)Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptorBuilder;
public final fun getCompilationAssociator ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$CompilationAssociator;
public final fun getCompilationFactory ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$CompilationFactory;
public final fun getCompilationName ()Ljava/lang/String;
public final fun getCompileAllTaskName ()Ljava/lang/String;
public final fun getCompileTaskName ()Ljava/lang/String;
public final fun getConfigure ()Lkotlin/jvm/functions/Function1;
public final fun getDecoratedKotlinCompilationFactory ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$DecoratedKotlinCompilationFactory;
public final fun getDefaultSourceSet ()Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet;
public final fun getFriendArtifactResolver ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$FriendArtifactResolver;
public final fun setCompilationAssociator (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$CompilationAssociator;)V
public final fun setCompilationFactory (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$CompilationFactory;)V
public final fun setCompilationName (Ljava/lang/String;)V
public final fun setCompileAllTaskName (Ljava/lang/String;)V
public final fun setCompileTaskName (Ljava/lang/String;)V
public final fun setConfigure (Lkotlin/jvm/functions/Function1;)V
public final fun setDecoratedKotlinCompilationFactory (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$DecoratedKotlinCompilationFactory;)V
public final fun setDefaultSourceSet (Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet;)V
public final fun setFriendArtifactResolver (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$FriendArtifactResolver;)V
}
public final class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptorKt {
@@ -3,15 +3,29 @@
* 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.external
import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.DecoratedKotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationImpl
/**
* Similar to [DecoratedExternalKotlinTarget]:
* This class is intended to be decorated: Enabling external target authors to give compilations a custom type.
* The implementation of [KotlinCompilation] is handled by a backed, internal, opaque instance provided by the [Delegate]
*
* #### Create an instance
* Creating an instance will require an instance of [Delegate] which can only be retrieved by calling into the
* [DecoratedExternalKotlinTarget.createCompilation] functions and providing a [ExternalKotlinCompilationDescriptor.compilationFactory]
*/
@Suppress("deprecation_error")
@ExternalKotlinTargetApi
abstract class DecoratedExternalKotlinCompilation(delegate: Delegate) : ExternalDecoratedKotlinCompilation(delegate) {
class Delegate internal constructor(compilation: KotlinCompilationImpl) : ExternalDecoratedKotlinCompilation.Delegate(compilation)
}
/**
* Renamed DecoratedExternalKotlinCompilation:
* Scheduled for removal with Kotlin 2.0
@@ -26,8 +40,3 @@ abstract class ExternalDecoratedKotlinCompilation(delegate: Delegate) :
open class Delegate internal constructor(internal open val compilation: KotlinCompilationImpl)
}
@Suppress("deprecation_error")
@ExternalKotlinTargetApi
abstract class DecoratedExternalKotlinCompilation(delegate: Delegate) : ExternalDecoratedKotlinCompilation(delegate) {
class Delegate internal constructor(compilation: KotlinCompilationImpl) : ExternalDecoratedKotlinCompilation.Delegate(compilation)
}
@@ -14,7 +14,17 @@ import kotlin.properties.Delegates
@ExternalKotlinTargetApi
interface ExternalKotlinCompilationDescriptor<T : DecoratedExternalKotlinCompilation> {
fun interface DecoratedKotlinCompilationFactory<T : DecoratedKotlinCompilation<*>> {
/**
* Scheduled for removal in Kotlin 2.0
*/
@Deprecated(
"Renamed to 'CompilationFactory'", level = DeprecationLevel.ERROR,
replaceWith = ReplaceWith("CompilationFactory")
)
fun interface DecoratedKotlinCompilationFactory<T : DecoratedKotlinCompilation<*>> : CompilationFactory<T>
fun interface CompilationFactory<T : DecoratedKotlinCompilation<*>> {
fun create(delegate: DecoratedExternalKotlinCompilation.Delegate): T
}
@@ -30,7 +40,14 @@ interface ExternalKotlinCompilationDescriptor<T : DecoratedExternalKotlinCompila
val compileTaskName: String?
val compileAllTaskName: String?
val defaultSourceSet: KotlinSourceSet
@Suppress("deprecation_error")
@Deprecated(
"Renamed to compilationFactory", level = DeprecationLevel.ERROR,
replaceWith = ReplaceWith("compilationFactory")
)
val decoratedKotlinCompilationFactory: DecoratedKotlinCompilationFactory<T>
val compilationFactory: CompilationFactory<T>
val friendArtifactResolver: FriendArtifactResolver<T>?
val compilationAssociator: CompilationAssociator<T>?
val configure: ((T) -> Unit)?
@@ -40,13 +57,13 @@ interface ExternalKotlinCompilationDescriptor<T : DecoratedExternalKotlinCompila
fun <T : DecoratedExternalKotlinCompilation> ExternalKotlinCompilationDescriptor(
configure: ExternalKotlinCompilationDescriptorBuilder<T>.() -> Unit
): ExternalKotlinCompilationDescriptor<T> {
return ExternalKotlinCompilationDescriptorBuilderImpl<T>().also(configure).run {
return ExternalKotlinCompilationDescriptorBuilder<T>().also(configure).run {
ExternalKotlinCompilationDescriptorImpl(
compilationName = compilationName,
compileTaskName = compileTaskName,
compileAllTaskName = compileAllTaskName,
defaultSourceSet = defaultSourceSet,
decoratedKotlinCompilationFactory = decoratedKotlinCompilationFactory,
compilationFactory = compilationFactory ?: decoratedKotlinCompilationFactory,
friendArtifactResolver = friendArtifactResolver,
compilationAssociator = compilationAssociator,
configure = this.configure
@@ -55,15 +72,20 @@ fun <T : DecoratedExternalKotlinCompilation> ExternalKotlinCompilationDescriptor
}
@ExternalKotlinTargetApi
interface ExternalKotlinCompilationDescriptorBuilder<T : DecoratedExternalKotlinCompilation> {
var compilationName: String
var compileTaskName: String?
var compileAllTaskName: String?
var defaultSourceSet: KotlinSourceSet
var decoratedKotlinCompilationFactory: DecoratedKotlinCompilationFactory<T>
var friendArtifactResolver: FriendArtifactResolver<T>?
var compilationAssociator: CompilationAssociator<T>?
var configure: ((T) -> Unit)?
class ExternalKotlinCompilationDescriptorBuilder<T : DecoratedExternalKotlinCompilation> internal constructor() {
var compilationName: String by Delegates.notNull()
var compileTaskName: String? = null
var compileAllTaskName: String? = null
var defaultSourceSet: KotlinSourceSet by Delegates.notNull()
@Suppress("deprecation_error")
var decoratedKotlinCompilationFactory: DecoratedKotlinCompilationFactory<T> by Delegates.notNull()
var compilationFactory: CompilationFactory<T>? = null
var friendArtifactResolver: FriendArtifactResolver<T>? = null
var compilationAssociator: CompilationAssociator<T>? = null
var configure: ((T) -> Unit)? = null
fun configure(action: (T) -> Unit) = apply {
val configure = this.configure
if (configure == null) this.configure = action
@@ -71,27 +93,18 @@ interface ExternalKotlinCompilationDescriptorBuilder<T : DecoratedExternalKotlin
}
}
@ExternalKotlinTargetApi
private class ExternalKotlinCompilationDescriptorBuilderImpl<T : DecoratedExternalKotlinCompilation> :
ExternalKotlinCompilationDescriptorBuilder<T> {
override var compilationName: String by Delegates.notNull()
override var compileTaskName: String? = null
override var compileAllTaskName: String? = null
override var defaultSourceSet: KotlinSourceSet by Delegates.notNull()
override var decoratedKotlinCompilationFactory: DecoratedKotlinCompilationFactory<T> by Delegates.notNull()
override var friendArtifactResolver: FriendArtifactResolver<T>? = null
override var compilationAssociator: CompilationAssociator<T>? = null
override var configure: ((T) -> Unit)? = null
}
@ExternalKotlinTargetApi
private data class ExternalKotlinCompilationDescriptorImpl<T : DecoratedExternalKotlinCompilation>(
override val compilationName: String,
override val compileTaskName: String?,
override val compileAllTaskName: String?,
override val defaultSourceSet: KotlinSourceSet,
override val decoratedKotlinCompilationFactory: DecoratedKotlinCompilationFactory<T>,
override val compilationFactory: CompilationFactory<T>,
override val friendArtifactResolver: FriendArtifactResolver<T>?,
override val compilationAssociator: CompilationAssociator<T>?,
override val configure: ((T) -> Unit)?
) : ExternalKotlinCompilationDescriptor<T>
) : ExternalKotlinCompilationDescriptor<T> {
@Suppress("deprecation_error", "OVERRIDE_DEPRECATION")
override val decoratedKotlinCompilationFactory: DecoratedKotlinCompilationFactory<T>
get() = DecoratedKotlinCompilationFactory { compilationFactory.create(it) }
}
@@ -69,7 +69,7 @@ fun <T : DecoratedExternalKotlinCompilation> DecoratedExternalKotlinTarget.creat
)
val compilationImpl = compilationImplFactory.create(this, descriptor.compilationName)
val decoratedCompilation = descriptor.decoratedKotlinCompilationFactory.create(Delegate(compilationImpl))
val decoratedCompilation = descriptor.compilationFactory.create(Delegate(compilationImpl))
descriptor.configure?.invoke(decoratedCompilation)
this.delegate.compilations.add(decoratedCompilation)