[Gradle] ExternalTargetApi: Rename 'ExternalDecoratedKotlinCompilation' to 'DecoratedExternalKotlinCompilation'

To be consistent with 'DecoratedExternalKotlinTarget'

KT-55524
This commit is contained in:
Sebastian Sellmair
2023-04-19 16:07:15 +02:00
committed by Space Team
parent bc85fe323b
commit 898e2beecb
7 changed files with 67 additions and 23 deletions
@@ -11,9 +11,9 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptions
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions
import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalDecoratedKotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.external.DecoratedExternalKotlinCompilation
class PrototypeAndroidCompilation(delegate: Delegate) : ExternalDecoratedKotlinCompilation(delegate) {
class PrototypeAndroidCompilation(delegate: Delegate) : DecoratedExternalKotlinCompilation(delegate) {
override val kotlinOptions: KotlinCommonOptions
get() = super.kotlinOptions as KotlinJvmOptions
@@ -176,8 +176,8 @@ public final class org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/Id
}
public final class org/jetbrains/kotlin/gradle/plugin/mpp/external/CreateExternalKotlinCompilationKt {
public static final fun createCompilation (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinTarget;Lkotlin/jvm/functions/Function1;)Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalDecoratedKotlinCompilation;
public static final fun createCompilation (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinTarget;Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor;)Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalDecoratedKotlinCompilation;
public static final fun createCompilation (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinTarget;Lkotlin/jvm/functions/Function1;)Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinCompilation;
public static final fun createCompilation (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinTarget;Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor;)Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinCompilation;
}
public final class org/jetbrains/kotlin/gradle/plugin/mpp/external/CreateExternalKotlinTargetKt {
@@ -185,7 +185,11 @@ public final class org/jetbrains/kotlin/gradle/plugin/mpp/external/CreateExterna
public static final fun createExternalKotlinTarget (Lorg/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension;Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetDescriptor;)Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinTarget;
}
public abstract class org/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinTarget : org/jetbrains/kotlin/gradle/plugin/mpp/InternalKotlinTarget {
public abstract class org/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinCompilation : org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalDecoratedKotlinCompilation {
public fun <init> (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinCompilation$Delegate;)V
}
public class org/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinTarget : org/jetbrains/kotlin/gradle/plugin/mpp/InternalKotlinTarget {
public fun <init> (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinTarget$Delegate;)V
public fun attributes (Lkotlin/jvm/functions/Function1;)V
public fun attributes (Lorg/gradle/api/Action;)V
@@ -12,8 +12,22 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
import org.jetbrains.kotlin.gradle.plugin.mpp.DecoratedKotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationImpl
/**
* Renamed DecoratedExternalKotlinCompilation:
* Scheduled for removal with Kotlin 2.0
*/
@Deprecated(
"Renamed to 'DecoratedExternalKotlinCompilation'", level = DeprecationLevel.ERROR,
replaceWith = ReplaceWith("DecoratedExternalKotlinCompilation")
)
@ExternalKotlinTargetApi
abstract class ExternalDecoratedKotlinCompilation(delegate: Delegate) :
DecoratedKotlinCompilation<KotlinCommonOptions>(delegate.compilation) {
class Delegate internal constructor(internal 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)
}
@@ -8,12 +8,38 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.external
import org.gradle.api.artifacts.Configuration
import org.gradle.api.logging.Logger
import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.InternalKotlinTarget
/**
* Class intended to be used to implement a given adhoc/external KotlinTarget maintained outside kotlin.git.
* The implementation will be backed by the [Delegate] holding an internal implementation of [KotlinTarget]
* Methods of [KotlinTarget] will be handled by this backing implementation.
* This method shall be used for decorating the class with additional, domain specific properties
*
* #### Sample
*
* ```kotlin
* class MyCustomJvmTarget(delegate: Delegate): DecoratedExternalKotlinTarget(delegate) {
* // Some property decorating our target
* val myCustomProperty: String = "hello there"
*
* // Covariant override that allows for narrowing the type of compilations that this target contains
* override val compilations: NamedDomainObjectContainer<MyCustomCompilationType>
* get() = super.compilations as NamedDomainObjectContainer<MyCustomCompilationType>
* }
* ```
*
* #### Create an instance
* Creating an instance of such classes will require an instance of [Delegate].
* This instance can only be retrieved by calling the [KotlinMultiplatformExtension.createExternalKotlinTarget] function,
* providing a factory function in the [ExternalKotlinTargetDescriptor]
*/
@ExternalKotlinTargetApi
abstract class DecoratedExternalKotlinTarget internal constructor(
open class DecoratedExternalKotlinTarget internal constructor(
internal val delegate: ExternalKotlinTargetImpl
) : InternalKotlinTarget by delegate {
constructor(delegate: Delegate) : this(delegate.impl)
@@ -13,17 +13,17 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalKotlinCompilation
import kotlin.properties.Delegates
@ExternalKotlinTargetApi
interface ExternalKotlinCompilationDescriptor<T : ExternalDecoratedKotlinCompilation> {
interface ExternalKotlinCompilationDescriptor<T : DecoratedExternalKotlinCompilation> {
fun interface DecoratedKotlinCompilationFactory<T : DecoratedKotlinCompilation<*>> {
fun create(delegate: ExternalDecoratedKotlinCompilation.Delegate): T
fun create(delegate: DecoratedExternalKotlinCompilation.Delegate): T
}
fun interface FriendArtifactResolver<T : ExternalDecoratedKotlinCompilation> {
fun interface FriendArtifactResolver<T : DecoratedExternalKotlinCompilation> {
fun resolveFriendPaths(compilation: T): FileCollection
}
fun interface CompilationAssociator<T : ExternalDecoratedKotlinCompilation> {
fun associate(auxiliary: T, main: ExternalDecoratedKotlinCompilation)
fun interface CompilationAssociator<T : DecoratedExternalKotlinCompilation> {
fun associate(auxiliary: T, main: DecoratedExternalKotlinCompilation)
}
val compilationName: String
@@ -37,7 +37,7 @@ interface ExternalKotlinCompilationDescriptor<T : ExternalDecoratedKotlinCompila
}
@ExternalKotlinTargetApi
fun <T : ExternalDecoratedKotlinCompilation> ExternalKotlinCompilationDescriptor(
fun <T : DecoratedExternalKotlinCompilation> ExternalKotlinCompilationDescriptor(
configure: ExternalKotlinCompilationDescriptorBuilder<T>.() -> Unit
): ExternalKotlinCompilationDescriptor<T> {
return ExternalKotlinCompilationDescriptorBuilderImpl<T>().also(configure).run {
@@ -55,7 +55,7 @@ fun <T : ExternalDecoratedKotlinCompilation> ExternalKotlinCompilationDescriptor
}
@ExternalKotlinTargetApi
interface ExternalKotlinCompilationDescriptorBuilder<T : ExternalDecoratedKotlinCompilation> {
interface ExternalKotlinCompilationDescriptorBuilder<T : DecoratedExternalKotlinCompilation> {
var compilationName: String
var compileTaskName: String?
var compileAllTaskName: String?
@@ -72,7 +72,7 @@ interface ExternalKotlinCompilationDescriptorBuilder<T : ExternalDecoratedKotlin
}
@ExternalKotlinTargetApi
private class ExternalKotlinCompilationDescriptorBuilderImpl<T : ExternalDecoratedKotlinCompilation> :
private class ExternalKotlinCompilationDescriptorBuilderImpl<T : DecoratedExternalKotlinCompilation> :
ExternalKotlinCompilationDescriptorBuilder<T> {
override var compilationName: String by Delegates.notNull()
override var compileTaskName: String? = null
@@ -85,7 +85,7 @@ private class ExternalKotlinCompilationDescriptorBuilderImpl<T : ExternalDecorat
}
@ExternalKotlinTargetApi
private data class ExternalKotlinCompilationDescriptorImpl<T : ExternalDecoratedKotlinCompilation>(
private data class ExternalKotlinCompilationDescriptorImpl<T : DecoratedExternalKotlinCompilation>(
override val compilationName: String,
override val compileTaskName: String?,
override val compileAllTaskName: String?,
@@ -87,8 +87,8 @@ internal class ExternalKotlinTargetImpl internal constructor(
setOf(ExternalKotlinTargetSoftwareComponent(this))
}
override val compilations: NamedDomainObjectContainer<ExternalDecoratedKotlinCompilation> by lazy {
project.container(ExternalDecoratedKotlinCompilation::class.java)
override val compilations: NamedDomainObjectContainer<DecoratedExternalKotlinCompilation> by lazy {
project.container(DecoratedExternalKotlinCompilation::class.java)
}
@Suppress("unchecked_cast")
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationS
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.*
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory.KotlinCompilationTaskNamesContainerFactory
import org.jetbrains.kotlin.gradle.plugin.mpp.decoratedInstance
import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalDecoratedKotlinCompilation.Delegate
import org.jetbrains.kotlin.gradle.plugin.mpp.external.DecoratedExternalKotlinCompilation.Delegate
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
/**
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
* container
*/
@ExternalKotlinTargetApi
fun <T : ExternalDecoratedKotlinCompilation> DecoratedExternalKotlinTarget.createCompilation(
fun <T : DecoratedExternalKotlinCompilation> DecoratedExternalKotlinTarget.createCompilation(
descriptor: ExternalKotlinCompilationDescriptor<T>
): T {
val compilationImplFactory = KotlinCompilationImplFactory(
@@ -52,7 +52,7 @@ fun <T : ExternalDecoratedKotlinCompilation> DecoratedExternalKotlinTarget.creat
compilationAssociator = descriptor.compilationAssociator?.let { declaredAssociator ->
@Suppress("unchecked_cast")
KotlinCompilationAssociator { _, first, second ->
declaredAssociator.associate(first.decoratedInstance as T, second.decoratedInstance as ExternalDecoratedKotlinCompilation)
declaredAssociator.associate(first.decoratedInstance as T, second.decoratedInstance as DecoratedExternalKotlinCompilation)
}
} ?: DefaultKotlinCompilationAssociator,
compilationFriendPathsResolver = DefaultKotlinCompilationFriendPathsResolver(
@@ -82,14 +82,14 @@ fun <T : ExternalDecoratedKotlinCompilation> DecoratedExternalKotlinTarget.creat
* @see createCompilation
*/
@ExternalKotlinTargetApi
fun <T : ExternalDecoratedKotlinCompilation> DecoratedExternalKotlinTarget.createCompilation(
fun <T : DecoratedExternalKotlinCompilation> DecoratedExternalKotlinTarget.createCompilation(
descriptor: ExternalKotlinCompilationDescriptorBuilder<T>.() -> Unit
): T {
return createCompilation(ExternalKotlinCompilationDescriptor(descriptor))
}
private fun DecoratedExternalKotlinTarget.setupCompileTask(
compilation: ExternalDecoratedKotlinCompilation
compilation: DecoratedExternalKotlinCompilation
) {
val tasksProvider = KotlinTasksProvider()
val compilationInfo = KotlinCompilationInfo(compilation)