[Gradle] ExternalTargetApi: Check-in/Document ExternalKotlinCompilationDescriptor

KT-55524
This commit is contained in:
Sebastian Sellmair
2023-04-19 16:31:27 +02:00
committed by Space Team
parent 5e13e118fa
commit caa6b6f9f3
2 changed files with 36 additions and 1 deletions
@@ -241,6 +241,21 @@ 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/ExternalKotlinCompilationDescriptor$CompilationAssociator {
public abstract fun associate (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinCompilation;Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinCompilation;)V
}
public abstract interface class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$CompilationFactory {
public abstract fun create (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinCompilation$Delegate;)Lorg/jetbrains/kotlin/gradle/plugin/mpp/DecoratedKotlinCompilation;
}
public abstract interface class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$DecoratedKotlinCompilationFactory : org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$CompilationFactory {
}
public abstract interface class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$FriendArtifactResolver {
public abstract fun resolveFriendPaths (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/DecoratedExternalKotlinCompilation;)Lorg/gradle/api/file/FileCollection;
}
public final class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptorBuilder { 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 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 getCompilationAssociator ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor$CompilationAssociator;
@@ -7,11 +7,17 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.external
import org.gradle.api.file.FileCollection import org.gradle.api.file.FileCollection
import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.DecoratedKotlinCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.DecoratedKotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalKotlinCompilationDescriptor.* import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalKotlinCompilationDescriptor.*
import kotlin.properties.Delegates import kotlin.properties.Delegates
/**
* Describes how a compilation created for an external [KotlinTarget] should be created.
* @see createCompilation
*/
@ExternalKotlinTargetApi @ExternalKotlinTargetApi
interface ExternalKotlinCompilationDescriptor<T : DecoratedExternalKotlinCompilation> { interface ExternalKotlinCompilationDescriptor<T : DecoratedExternalKotlinCompilation> {
@@ -22,16 +28,31 @@ interface ExternalKotlinCompilationDescriptor<T : DecoratedExternalKotlinCompila
"Renamed to 'CompilationFactory'", level = DeprecationLevel.ERROR, "Renamed to 'CompilationFactory'", level = DeprecationLevel.ERROR,
replaceWith = ReplaceWith("CompilationFactory") replaceWith = ReplaceWith("CompilationFactory")
) )
@ExternalKotlinTargetApi
fun interface DecoratedKotlinCompilationFactory<T : DecoratedKotlinCompilation<*>> : CompilationFactory<T> fun interface DecoratedKotlinCompilationFactory<T : DecoratedKotlinCompilation<*>> : CompilationFactory<T>
/**
* Factory creating the decorated instance ([DecoratedExternalKotlinCompilation] using the backing implementation inside
* the [DecoratedExternalKotlinCompilation.Delegate]
*/
@ExternalKotlinTargetApi
fun interface CompilationFactory<T : DecoratedKotlinCompilation<*>> { fun interface CompilationFactory<T : DecoratedKotlinCompilation<*>> {
fun create(delegate: DecoratedExternalKotlinCompilation.Delegate): T fun create(delegate: DecoratedExternalKotlinCompilation.Delegate): T
} }
/**
* Providing an additional [FriendArtifactResolver] will allow to add 'friend artifacts' to the compilation
*/
@ExternalKotlinTargetApi
fun interface FriendArtifactResolver<T : DecoratedExternalKotlinCompilation> { fun interface FriendArtifactResolver<T : DecoratedExternalKotlinCompilation> {
fun resolveFriendPaths(compilation: T): FileCollection fun resolveFriendPaths(compilation: T): FileCollection
} }
/**
* Implementing a [CompilationAssociator] allows for intercepting the [KotlinCompilation.associateWith] calls, effectively
* handling them on behalf of the authors of the external [KotlinTarget]
*/
@ExternalKotlinTargetApi
fun interface CompilationAssociator<T : DecoratedExternalKotlinCompilation> { fun interface CompilationAssociator<T : DecoratedExternalKotlinCompilation> {
fun associate(auxiliary: T, main: DecoratedExternalKotlinCompilation) fun associate(auxiliary: T, main: DecoratedExternalKotlinCompilation)
} }
@@ -93,7 +114,6 @@ class ExternalKotlinCompilationDescriptorBuilder<T : DecoratedExternalKotlinComp
} }
} }
@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?,