From 9978906f6fac7b743c0e85dcde9191b99c2c754b Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Wed, 19 Apr 2023 14:14:38 +0200 Subject: [PATCH] [Gradle] ExternalTargetApi: Check-in/Document IdeDependencyEffect KT-55524 --- .../kotlin-gradle-plugin/api/kotlin-gradle-plugin.api | 8 ++++++++ .../kotlin/gradle/plugin/ide/IdeDependencyEffect.kt | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api b/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api index 62d75c3fd04..0d686f78b3d 100644 --- a/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api +++ b/libraries/tools/kotlin-gradle-plugin/api/kotlin-gradle-plugin.api @@ -1,3 +1,11 @@ +public abstract interface class org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyEffect { + public abstract fun invoke (Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet;Ljava/util/Set;)V +} + +public final class org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyEffectKt { + public static final fun withEffect (Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyResolver;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyEffect;)Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyResolver; +} + public abstract interface class org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyResolver { public static final field Companion Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyResolver$Companion; public static final field DOCUMENTATION_BINARY_TYPE Ljava/lang/String; diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyEffect.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyEffect.kt index ddeb52232da..2dc01afea7b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyEffect.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyEffect.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.gradle.plugin.ide +import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinDependency import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet @@ -13,10 +14,16 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet * It is not intended/capable of changing the resolution result, but can trigger side-effects, being sure * that the dependency resolution result is final. */ +@ExternalKotlinTargetApi fun interface IdeDependencyEffect { operator fun invoke(sourceSet: KotlinSourceSet, dependencies: Set) } +/** + * Wraps the given [IdeDependencyResolver] with the specified [effect] + * The resulting resolver will first resolve the dependencies and then execute the effect on the result + */ +@ExternalKotlinTargetApi fun IdeDependencyResolver.withEffect(effect: IdeDependencyEffect) = IdeDependencyResolver { sourceSet -> this@withEffect.resolve(sourceSet).also { dependencies -> effect(sourceSet, dependencies) } }