From 9f003328cfaa8ece0e1a708d7659a08d1f21c842 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Tue, 18 Apr 2023 13:58:13 +0200 Subject: [PATCH] [Gradle] Setup initial api validation for ExternalTargetApi KT-55524 --- .../api/kotlin-gradle-plugin.api | 157 ++++++++++++++++++ .../kotlin-gradle-plugin/build.gradle.kts | 7 + 2 files changed, 164 insertions(+) create mode 100644 libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api diff --git a/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api b/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api new file mode 100644 index 00000000000..80521dd40ad --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api @@ -0,0 +1,157 @@ +public abstract interface class org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport { + public abstract fun registerAdditionalArtifactResolver (Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeAdditionalArtifactResolver;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$SourceSetConstraint;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$AdditionalArtifactResolutionPhase;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$AdditionalArtifactResolutionLevel;)V + public abstract fun registerDependencyEffect (Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyEffect;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$SourceSetConstraint;)V + public abstract fun registerDependencyResolver (Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyResolver;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$SourceSetConstraint;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyResolutionPhase;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyResolutionLevel;)V + public abstract fun registerDependencyTransformer (Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyTransformer;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$SourceSetConstraint;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyTransformationPhase;)V + public abstract fun registerExtrasSerializationExtension (Lorg/jetbrains/kotlin/gradle/idea/serialize/IdeaKotlinExtrasSerializationExtension;)V +} + +public final class org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportKt { + public static final fun registerExtrasSerializationExtension (Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport;Lkotlin/jvm/functions/Function1;)V +} + +public final class org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeBinaryDependencyResolver : org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyResolver { + public fun ()V + public fun (Ljava/lang/String;Lorg/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeBinaryDependencyResolver$ArtifactResolutionStrategy;)V + public synthetic fun (Ljava/lang/String;Lorg/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeBinaryDependencyResolver$ArtifactResolutionStrategy;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun resolve (Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet;)Ljava/util/Set; +} + +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 final class org/jetbrains/kotlin/gradle/plugin/mpp/external/CreateExternalKotlinTargetKt { + public static final fun createExternalKotlinTarget (Lorg/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension;Lkotlin/jvm/functions/Function1;)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 fun (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 + public final fun getApiElementsConfiguration ()Lorg/gradle/api/artifacts/Configuration; + public fun getApiElementsConfigurationName ()Ljava/lang/String; + public final fun getApiElementsPublishedConfiguration ()Lorg/gradle/api/artifacts/Configuration; + public fun getArtifactsTaskName ()Ljava/lang/String; + public fun getAttributes ()Lorg/gradle/api/attributes/AttributeContainer; + public fun getCompilations ()Lorg/gradle/api/NamedDomainObjectContainer; + public fun getComponents ()Ljava/util/Set; + public fun getDefaultConfigurationName ()Ljava/lang/String; + public fun getDisambiguationClassifier ()Ljava/lang/String; + public synthetic fun getExtras ()Lorg/jetbrains/kotlin/tooling/core/Extras; + public fun getExtras ()Lorg/jetbrains/kotlin/tooling/core/MutableExtras; + public fun getKotlinComponents ()Ljava/util/Set; + public fun getName ()Ljava/lang/String; + public fun getOverrideDisambiguationClassifierOnIdeImport ()Ljava/lang/String; + public fun getPlatformType ()Lorg/jetbrains/kotlin/gradle/plugin/KotlinPlatformType; + public fun getPreset ()Lorg/jetbrains/kotlin/gradle/plugin/KotlinTargetPreset; + public fun getProject ()Lorg/gradle/api/Project; + public fun getPublishable ()Z + public final fun getRuntimeElementsConfiguration ()Lorg/gradle/api/artifacts/Configuration; + public fun getRuntimeElementsConfigurationName ()Ljava/lang/String; + public final fun getRuntimeElementsPublishedConfiguration ()Lorg/gradle/api/artifacts/Configuration; + public fun getSourcesElementsConfigurationName ()Ljava/lang/String; + public fun getTargetName ()Ljava/lang/String; + public fun getUseDisambiguationClassifierAsSourceSetNamePrefix ()Z + public fun isSourcesPublishable ()Z + public fun mavenPublication (Lkotlin/jvm/functions/Function1;)V + public fun mavenPublication (Lorg/gradle/api/Action;)V + public fun onPublicationCreated (Lorg/gradle/api/publish/maven/MavenPublication;)V + public fun setSourcesPublishable (Z)V + public fun withSourcesJar (Z)V +} + +public abstract class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalDecoratedKotlinCompilation : org/jetbrains/kotlin/gradle/plugin/mpp/DecoratedKotlinCompilation { + public fun (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalDecoratedKotlinCompilation$Delegate;)V +} + +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 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 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/ExternalKotlinCompilationDescriptorKt { + public static final fun ExternalKotlinCompilationDescriptor (Lkotlin/jvm/functions/Function1;)Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinCompilationDescriptor; +} + +public abstract interface class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetConfigurationDescriptor { + public abstract fun getConfigure ()Lkotlin/jvm/functions/Function2; +} + +public final class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetConfigurationDescriptorBuilder { + public final fun configure (Lkotlin/jvm/functions/Function2;)Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetConfigurationDescriptorBuilder; + public final fun getConfigure ()Lkotlin/jvm/functions/Function2; + public final fun setConfigure (Lkotlin/jvm/functions/Function2;)V +} + +public abstract interface class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetDescriptor { + public abstract fun getApiElements ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetConfigurationDescriptor; + public abstract fun getApiElementsPublished ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetConfigurationDescriptor; + public abstract fun getConfigure ()Lkotlin/jvm/functions/Function1; + public abstract fun getConfigureIdeImport ()Lkotlin/jvm/functions/Function1; + public abstract fun getPlatformType ()Lorg/jetbrains/kotlin/gradle/plugin/KotlinPlatformType; + public abstract fun getRuntimeElements ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetConfigurationDescriptor; + public abstract fun getRuntimeElementsPublished ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetConfigurationDescriptor; + public abstract fun getSourcesElements ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetConfigurationDescriptor; + public abstract fun getTargetFactory ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetDescriptor$TargetFactory; + public abstract fun getTargetName ()Ljava/lang/String; +} + +public final class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetDescriptorBuilder { + public final fun configure (Lkotlin/jvm/functions/Function1;)V + public final fun configureIdeImport (Lkotlin/jvm/functions/Function1;)V + public final fun getApiElements ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetConfigurationDescriptorBuilder; + public final fun getApiElementsPublished ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetConfigurationDescriptorBuilder; + public final fun getConfigure ()Lkotlin/jvm/functions/Function1; + public final fun getConfigureIdeImport ()Lkotlin/jvm/functions/Function1; + public final fun getPlatformType ()Lorg/jetbrains/kotlin/gradle/plugin/KotlinPlatformType; + public final fun getRuntimeElements ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetConfigurationDescriptorBuilder; + public final fun getRuntimeElementsPublished ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetConfigurationDescriptorBuilder; + public final fun getSourcesElements ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetConfigurationDescriptorBuilder; + public final fun getTargetFactory ()Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetDescriptor$TargetFactory; + public final fun getTargetName ()Ljava/lang/String; + public final fun setConfigure (Lkotlin/jvm/functions/Function1;)V + public final fun setConfigureIdeImport (Lkotlin/jvm/functions/Function1;)V + public final fun setPlatformType (Lorg/jetbrains/kotlin/gradle/plugin/KotlinPlatformType;)V + public final fun setTargetFactory (Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetDescriptor$TargetFactory;)V + public final fun setTargetName (Ljava/lang/String;)V +} + +public final class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetDescriptorKt { + public static final fun ExternalKotlinTargetDescriptor (Lkotlin/jvm/functions/Function1;)Lorg/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetDescriptor; +} + +public final class org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalTargetApiExtensionsKt { + public static final fun getExtras (Lorg/jetbrains/kotlin/gradle/plugin/KotlinCompilation;)Lorg/jetbrains/kotlin/tooling/core/MutableExtras; + public static final fun getExtras (Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet;)Lorg/jetbrains/kotlin/tooling/core/MutableExtras; + public static final fun getExtras (Lorg/jetbrains/kotlin/gradle/plugin/KotlinTarget;)Lorg/jetbrains/kotlin/tooling/core/MutableExtras; +} + diff --git a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts index 4a0b8bd4fa9..c3c7834acfe 100644 --- a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts @@ -5,6 +5,7 @@ import org.jetbrains.kotlin.pill.PillExtension plugins { id("gradle-plugin-common-configuration") id("jps-compatible") + id("org.jetbrains.kotlinx.binary-compatibility-validator") } repositories { @@ -26,6 +27,12 @@ kotlin.sourceSets.all { languageSettings.optIn("org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi") } +apiValidation { + publicMarkers.add("org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi") + nonPublicMarkers.add("org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi") + additionalSourceSets.add("common") +} + dependencies { commonApi(platform(project(":kotlin-gradle-plugins-bom"))) commonApi(project(":kotlin-gradle-plugin-api"))