[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.KotlinJvmCompilerOptions
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions 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 override val kotlinOptions: KotlinCommonOptions
get() = super.kotlinOptions as KotlinJvmOptions 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 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;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/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/DecoratedExternalKotlinCompilation;
} }
public final class org/jetbrains/kotlin/gradle/plugin/mpp/external/CreateExternalKotlinTargetKt { 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 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 <init> (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinTarget$Delegate;)V
public fun attributes (Lkotlin/jvm/functions/Function1;)V public fun attributes (Lkotlin/jvm/functions/Function1;)V
public fun attributes (Lorg/gradle/api/Action;)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.DecoratedKotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationImpl 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 @ExternalKotlinTargetApi
abstract class ExternalDecoratedKotlinCompilation(delegate: Delegate) : abstract class ExternalDecoratedKotlinCompilation(delegate: Delegate) :
DecoratedKotlinCompilation<KotlinCommonOptions>(delegate.compilation) { 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.artifacts.Configuration
import org.gradle.api.logging.Logger import org.gradle.api.logging.Logger
import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi 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.multiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.InternalKotlinTarget 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 @ExternalKotlinTargetApi
abstract class DecoratedExternalKotlinTarget internal constructor( open class DecoratedExternalKotlinTarget internal constructor(
internal val delegate: ExternalKotlinTargetImpl internal val delegate: ExternalKotlinTargetImpl
) : InternalKotlinTarget by delegate { ) : InternalKotlinTarget by delegate {
constructor(delegate: Delegate) : this(delegate.impl) constructor(delegate: Delegate) : this(delegate.impl)
@@ -13,17 +13,17 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalKotlinCompilation
import kotlin.properties.Delegates import kotlin.properties.Delegates
@ExternalKotlinTargetApi @ExternalKotlinTargetApi
interface ExternalKotlinCompilationDescriptor<T : ExternalDecoratedKotlinCompilation> { interface ExternalKotlinCompilationDescriptor<T : DecoratedExternalKotlinCompilation> {
fun interface DecoratedKotlinCompilationFactory<T : DecoratedKotlinCompilation<*>> { 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 resolveFriendPaths(compilation: T): FileCollection
} }
fun interface CompilationAssociator<T : ExternalDecoratedKotlinCompilation> { fun interface CompilationAssociator<T : DecoratedExternalKotlinCompilation> {
fun associate(auxiliary: T, main: ExternalDecoratedKotlinCompilation) fun associate(auxiliary: T, main: DecoratedExternalKotlinCompilation)
} }
val compilationName: String val compilationName: String
@@ -37,7 +37,7 @@ interface ExternalKotlinCompilationDescriptor<T : ExternalDecoratedKotlinCompila
} }
@ExternalKotlinTargetApi @ExternalKotlinTargetApi
fun <T : ExternalDecoratedKotlinCompilation> ExternalKotlinCompilationDescriptor( fun <T : DecoratedExternalKotlinCompilation> ExternalKotlinCompilationDescriptor(
configure: ExternalKotlinCompilationDescriptorBuilder<T>.() -> Unit configure: ExternalKotlinCompilationDescriptorBuilder<T>.() -> Unit
): ExternalKotlinCompilationDescriptor<T> { ): ExternalKotlinCompilationDescriptor<T> {
return ExternalKotlinCompilationDescriptorBuilderImpl<T>().also(configure).run { return ExternalKotlinCompilationDescriptorBuilderImpl<T>().also(configure).run {
@@ -55,7 +55,7 @@ fun <T : ExternalDecoratedKotlinCompilation> ExternalKotlinCompilationDescriptor
} }
@ExternalKotlinTargetApi @ExternalKotlinTargetApi
interface ExternalKotlinCompilationDescriptorBuilder<T : ExternalDecoratedKotlinCompilation> { interface ExternalKotlinCompilationDescriptorBuilder<T : DecoratedExternalKotlinCompilation> {
var compilationName: String var compilationName: String
var compileTaskName: String? var compileTaskName: String?
var compileAllTaskName: String? var compileAllTaskName: String?
@@ -72,7 +72,7 @@ interface ExternalKotlinCompilationDescriptorBuilder<T : ExternalDecoratedKotlin
} }
@ExternalKotlinTargetApi @ExternalKotlinTargetApi
private class ExternalKotlinCompilationDescriptorBuilderImpl<T : ExternalDecoratedKotlinCompilation> : private class ExternalKotlinCompilationDescriptorBuilderImpl<T : DecoratedExternalKotlinCompilation> :
ExternalKotlinCompilationDescriptorBuilder<T> { ExternalKotlinCompilationDescriptorBuilder<T> {
override var compilationName: String by Delegates.notNull() override var compilationName: String by Delegates.notNull()
override var compileTaskName: String? = null override var compileTaskName: String? = null
@@ -85,7 +85,7 @@ private class ExternalKotlinCompilationDescriptorBuilderImpl<T : ExternalDecorat
} }
@ExternalKotlinTargetApi @ExternalKotlinTargetApi
private data class ExternalKotlinCompilationDescriptorImpl<T : ExternalDecoratedKotlinCompilation>( 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?,
@@ -87,8 +87,8 @@ internal class ExternalKotlinTargetImpl internal constructor(
setOf(ExternalKotlinTargetSoftwareComponent(this)) setOf(ExternalKotlinTargetSoftwareComponent(this))
} }
override val compilations: NamedDomainObjectContainer<ExternalDecoratedKotlinCompilation> by lazy { override val compilations: NamedDomainObjectContainer<DecoratedExternalKotlinCompilation> by lazy {
project.container(ExternalDecoratedKotlinCompilation::class.java) project.container(DecoratedExternalKotlinCompilation::class.java)
} }
@Suppress("unchecked_cast") @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.*
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory.KotlinCompilationTaskNamesContainerFactory 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.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 import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
/** /**
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
* container * container
*/ */
@ExternalKotlinTargetApi @ExternalKotlinTargetApi
fun <T : ExternalDecoratedKotlinCompilation> DecoratedExternalKotlinTarget.createCompilation( fun <T : DecoratedExternalKotlinCompilation> DecoratedExternalKotlinTarget.createCompilation(
descriptor: ExternalKotlinCompilationDescriptor<T> descriptor: ExternalKotlinCompilationDescriptor<T>
): T { ): T {
val compilationImplFactory = KotlinCompilationImplFactory( val compilationImplFactory = KotlinCompilationImplFactory(
@@ -52,7 +52,7 @@ fun <T : ExternalDecoratedKotlinCompilation> DecoratedExternalKotlinTarget.creat
compilationAssociator = descriptor.compilationAssociator?.let { declaredAssociator -> compilationAssociator = descriptor.compilationAssociator?.let { declaredAssociator ->
@Suppress("unchecked_cast") @Suppress("unchecked_cast")
KotlinCompilationAssociator { _, first, second -> KotlinCompilationAssociator { _, first, second ->
declaredAssociator.associate(first.decoratedInstance as T, second.decoratedInstance as ExternalDecoratedKotlinCompilation) declaredAssociator.associate(first.decoratedInstance as T, second.decoratedInstance as DecoratedExternalKotlinCompilation)
} }
} ?: DefaultKotlinCompilationAssociator, } ?: DefaultKotlinCompilationAssociator,
compilationFriendPathsResolver = DefaultKotlinCompilationFriendPathsResolver( compilationFriendPathsResolver = DefaultKotlinCompilationFriendPathsResolver(
@@ -82,14 +82,14 @@ fun <T : ExternalDecoratedKotlinCompilation> DecoratedExternalKotlinTarget.creat
* @see createCompilation * @see createCompilation
*/ */
@ExternalKotlinTargetApi @ExternalKotlinTargetApi
fun <T : ExternalDecoratedKotlinCompilation> DecoratedExternalKotlinTarget.createCompilation( fun <T : DecoratedExternalKotlinCompilation> DecoratedExternalKotlinTarget.createCompilation(
descriptor: ExternalKotlinCompilationDescriptorBuilder<T>.() -> Unit descriptor: ExternalKotlinCompilationDescriptorBuilder<T>.() -> Unit
): T { ): T {
return createCompilation(ExternalKotlinCompilationDescriptor(descriptor)) return createCompilation(ExternalKotlinCompilationDescriptor(descriptor))
} }
private fun DecoratedExternalKotlinTarget.setupCompileTask( private fun DecoratedExternalKotlinTarget.setupCompileTask(
compilation: ExternalDecoratedKotlinCompilation compilation: DecoratedExternalKotlinCompilation
) { ) {
val tasksProvider = KotlinTasksProvider() val tasksProvider = KotlinTasksProvider()
val compilationInfo = KotlinCompilationInfo(compilation) val compilationInfo = KotlinCompilationInfo(compilation)