[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.gradle.kotlin.dsl.named
import org.jetbrains.kotlin.gradle.android.AndroidKotlinSourceSet.Companion.android 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
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 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 { defaultSourceSet = kotlin.sourceSets.maybeCreate(camelCase("prototype", targetName, name)).apply {
android = AndroidKotlinSourceSet() android = AndroidKotlinSourceSet()
} }
decoratedKotlinCompilationFactory = DecoratedKotlinCompilationFactory(::PrototypeAndroidCompilation) compilationFactory = CompilationFactory(::PrototypeAndroidCompilation)
compileTaskName = camelCase("prototype", "compile", targetName, name) 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 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 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 getCompilationName ()Ljava/lang/String;
public abstract fun getCompileAllTaskName ()Ljava/lang/String; public abstract fun getCompileAllTaskName ()Ljava/lang/String;
public abstract fun getCompileTaskName ()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 fun getFriendArtifactResolver ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$FriendArtifactResolver;
} }
public abstract interface class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptorBuilder { public final 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 final 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 final fun getCompilationAssociator ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$CompilationAssociator;
public abstract fun getCompilationName ()Ljava/lang/String; public final fun getCompilationFactory ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$CompilationFactory;
public abstract fun getCompileAllTaskName ()Ljava/lang/String; public final fun getCompilationName ()Ljava/lang/String;
public abstract fun getCompileTaskName ()Ljava/lang/String; public final fun getCompileAllTaskName ()Ljava/lang/String;
public abstract fun getConfigure ()Lkotlin/jvm/functions/Function1; public final fun getCompileTaskName ()Ljava/lang/String;
public abstract fun getDecoratedKotlinCompilationFactory ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$DecoratedKotlinCompilationFactory; public final fun getConfigure ()Lkotlin/jvm/functions/Function1;
public abstract fun getDefaultSourceSet ()Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet; public final fun getDecoratedKotlinCompilationFactory ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$DecoratedKotlinCompilationFactory;
public abstract fun getFriendArtifactResolver ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$FriendArtifactResolver; public final fun getDefaultSourceSet ()Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet;
public abstract fun setCompilationAssociator (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$CompilationAssociator;)V public final fun getFriendArtifactResolver ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$FriendArtifactResolver;
public abstract fun setCompilationName (Ljava/lang/String;)V public final fun setCompilationAssociator (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$CompilationAssociator;)V
public abstract fun setCompileAllTaskName (Ljava/lang/String;)V public final fun setCompilationFactory (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$CompilationFactory;)V
public abstract fun setCompileTaskName (Ljava/lang/String;)V public final fun setCompilationName (Ljava/lang/String;)V
public abstract fun setConfigure (Lkotlin/jvm/functions/Function1;)V public final fun setCompileAllTaskName (Ljava/lang/String;)V
public abstract fun setDecoratedKotlinCompilationFactory (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$DecoratedKotlinCompilationFactory;)V public final fun setCompileTaskName (Ljava/lang/String;)V
public abstract fun setDefaultSourceSet (Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet;)V public final fun setConfigure (Lkotlin/jvm/functions/Function1;)V
public abstract fun setFriendArtifactResolver (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$FriendArtifactResolver;)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 { 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. * 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 package org.jetbrains.kotlin.gradle.plugin.mpp.external
import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions 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.DecoratedKotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationImpl 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: * Renamed DecoratedExternalKotlinCompilation:
* Scheduled for removal with Kotlin 2.0 * 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) 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 @ExternalKotlinTargetApi
interface ExternalKotlinCompilationDescriptor<T : DecoratedExternalKotlinCompilation> { 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 fun create(delegate: DecoratedExternalKotlinCompilation.Delegate): T
} }
@@ -30,7 +40,14 @@ interface ExternalKotlinCompilationDescriptor<T : DecoratedExternalKotlinCompila
val compileTaskName: String? val compileTaskName: String?
val compileAllTaskName: String? val compileAllTaskName: String?
val defaultSourceSet: KotlinSourceSet val defaultSourceSet: KotlinSourceSet
@Suppress("deprecation_error")
@Deprecated(
"Renamed to compilationFactory", level = DeprecationLevel.ERROR,
replaceWith = ReplaceWith("compilationFactory")
)
val decoratedKotlinCompilationFactory: DecoratedKotlinCompilationFactory<T> val decoratedKotlinCompilationFactory: DecoratedKotlinCompilationFactory<T>
val compilationFactory: CompilationFactory<T>
val friendArtifactResolver: FriendArtifactResolver<T>? val friendArtifactResolver: FriendArtifactResolver<T>?
val compilationAssociator: CompilationAssociator<T>? val compilationAssociator: CompilationAssociator<T>?
val configure: ((T) -> Unit)? val configure: ((T) -> Unit)?
@@ -40,13 +57,13 @@ interface ExternalKotlinCompilationDescriptor<T : DecoratedExternalKotlinCompila
fun <T : DecoratedExternalKotlinCompilation> ExternalKotlinCompilationDescriptor( fun <T : DecoratedExternalKotlinCompilation> ExternalKotlinCompilationDescriptor(
configure: ExternalKotlinCompilationDescriptorBuilder<T>.() -> Unit configure: ExternalKotlinCompilationDescriptorBuilder<T>.() -> Unit
): ExternalKotlinCompilationDescriptor<T> { ): ExternalKotlinCompilationDescriptor<T> {
return ExternalKotlinCompilationDescriptorBuilderImpl<T>().also(configure).run { return ExternalKotlinCompilationDescriptorBuilder<T>().also(configure).run {
ExternalKotlinCompilationDescriptorImpl( ExternalKotlinCompilationDescriptorImpl(
compilationName = compilationName, compilationName = compilationName,
compileTaskName = compileTaskName, compileTaskName = compileTaskName,
compileAllTaskName = compileAllTaskName, compileAllTaskName = compileAllTaskName,
defaultSourceSet = defaultSourceSet, defaultSourceSet = defaultSourceSet,
decoratedKotlinCompilationFactory = decoratedKotlinCompilationFactory, compilationFactory = compilationFactory ?: decoratedKotlinCompilationFactory,
friendArtifactResolver = friendArtifactResolver, friendArtifactResolver = friendArtifactResolver,
compilationAssociator = compilationAssociator, compilationAssociator = compilationAssociator,
configure = this.configure configure = this.configure
@@ -55,15 +72,20 @@ fun <T : DecoratedExternalKotlinCompilation> ExternalKotlinCompilationDescriptor
} }
@ExternalKotlinTargetApi @ExternalKotlinTargetApi
interface ExternalKotlinCompilationDescriptorBuilder<T : DecoratedExternalKotlinCompilation> { class ExternalKotlinCompilationDescriptorBuilder<T : DecoratedExternalKotlinCompilation> internal constructor() {
var compilationName: String var compilationName: String by Delegates.notNull()
var compileTaskName: String? var compileTaskName: String? = null
var compileAllTaskName: String? var compileAllTaskName: String? = null
var defaultSourceSet: KotlinSourceSet var defaultSourceSet: KotlinSourceSet by Delegates.notNull()
var decoratedKotlinCompilationFactory: DecoratedKotlinCompilationFactory<T>
var friendArtifactResolver: FriendArtifactResolver<T>? @Suppress("deprecation_error")
var compilationAssociator: CompilationAssociator<T>? var decoratedKotlinCompilationFactory: DecoratedKotlinCompilationFactory<T> by Delegates.notNull()
var configure: ((T) -> Unit)? 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 { fun configure(action: (T) -> Unit) = apply {
val configure = this.configure val configure = this.configure
if (configure == null) this.configure = action 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 @ExternalKotlinTargetApi
private data class ExternalKotlinCompilationDescriptorImpl<T : DecoratedExternalKotlinCompilation>( private data class ExternalKotlinCompilationDescriptorImpl<T : DecoratedExternalKotlinCompilation>(
override val compilationName: String, override val compilationName: String,
override val compileTaskName: String?, override val compileTaskName: String?,
override val compileAllTaskName: String?, override val compileAllTaskName: String?,
override val defaultSourceSet: KotlinSourceSet, override val defaultSourceSet: KotlinSourceSet,
override val decoratedKotlinCompilationFactory: DecoratedKotlinCompilationFactory<T>, override val compilationFactory: CompilationFactory<T>,
override val friendArtifactResolver: FriendArtifactResolver<T>?, override val friendArtifactResolver: FriendArtifactResolver<T>?,
override val compilationAssociator: CompilationAssociator<T>?, override val compilationAssociator: CompilationAssociator<T>?,
override val configure: ((T) -> Unit)? 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 compilationImpl = compilationImplFactory.create(this, descriptor.compilationName)
val decoratedCompilation = descriptor.decoratedKotlinCompilationFactory.create(Delegate(compilationImpl)) val decoratedCompilation = descriptor.compilationFactory.create(Delegate(compilationImpl))
descriptor.configure?.invoke(decoratedCompilation) descriptor.configure?.invoke(decoratedCompilation)
this.delegate.compilations.add(decoratedCompilation) this.delegate.compilations.add(decoratedCompilation)