[Gradle] Remove suspend functions from KotlinTargetHierarchyBuilder API

^KT-56654 Verification Pending
This commit is contained in:
Sebastian Sellmair
2023-03-28 13:50:10 +02:00
committed by Space Team
parent 9b8611ea9b
commit b5d188d44e
3 changed files with 24 additions and 26 deletions
@@ -1079,7 +1079,7 @@ public final class org/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchy$Modu
public abstract interface class org/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchyBuilder {
public abstract fun common (Lkotlin/jvm/functions/Function1;)V
public abstract fun excludeCompilations (Lkotlin/jvm/functions/Function2;)V
public abstract fun excludeCompilations (Lkotlin/jvm/functions/Function1;)V
public abstract fun filterCompilations (Lkotlin/jvm/functions/Function1;)V
public abstract fun group (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
public abstract fun withAndroid ()V
@@ -1089,7 +1089,7 @@ public abstract interface class org/jetbrains/kotlin/gradle/plugin/KotlinTargetH
public abstract fun withAndroidNativeX64 ()V
public abstract fun withAndroidNativeX86 ()V
public abstract fun withApple ()V
public abstract fun withCompilations (Lkotlin/jvm/functions/Function2;)V
public abstract fun withCompilations (Lkotlin/jvm/functions/Function1;)V
public abstract fun withIos ()V
public abstract fun withIosArm32 ()V
public abstract fun withIosArm64 ()V
@@ -1123,14 +1123,14 @@ public abstract interface class org/jetbrains/kotlin/gradle/plugin/KotlinTargetH
public abstract fun withWatchosSimulatorArm64 ()V
public abstract fun withWatchosX64 ()V
public abstract fun withWatchosX86 ()V
public abstract fun withoutCompilations (Lkotlin/jvm/functions/Function2;)V
public abstract fun withoutCompilations (Lkotlin/jvm/functions/Function1;)V
}
public final class org/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchyBuilder$DefaultImpls {
public static fun common (Lorg/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchyBuilder;Lkotlin/jvm/functions/Function1;)V
public static fun filterCompilations (Lorg/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchyBuilder;Lkotlin/jvm/functions/Function1;)V
public static synthetic fun group$default (Lorg/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchyBuilder;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
public static fun withoutCompilations (Lorg/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchyBuilder;Lkotlin/jvm/functions/Function2;)V
public static fun withoutCompilations (Lorg/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchyBuilder;Lkotlin/jvm/functions/Function1;)V
}
public abstract interface class org/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchyBuilder$Root : org/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchyBuilder {
@@ -1142,7 +1142,7 @@ public abstract interface class org/jetbrains/kotlin/gradle/plugin/KotlinTargetH
public final class org/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchyBuilder$Root$DefaultImpls {
public static fun common (Lorg/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchyBuilder$Root;Lkotlin/jvm/functions/Function1;)V
public static fun filterCompilations (Lorg/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchyBuilder$Root;Lkotlin/jvm/functions/Function1;)V
public static fun withoutCompilations (Lorg/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchyBuilder$Root;Lkotlin/jvm/functions/Function2;)V
public static fun withoutCompilations (Lorg/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchyBuilder$Root;Lkotlin/jvm/functions/Function1;)V
}
public abstract interface class org/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchyDescriptor {
@@ -20,12 +20,12 @@ interface KotlinTargetHierarchyBuilder {
fun group(name: String, build: KotlinTargetHierarchyBuilder.() -> Unit = {})
/* low-level APIs */
fun withCompilations(predicate: suspend (KotlinCompilation<*>) -> Boolean)
fun withCompilations(predicate: (KotlinCompilation<*>) -> Boolean)
fun excludeCompilations(predicate: suspend (KotlinCompilation<*>) -> Boolean)
fun excludeCompilations(predicate: (KotlinCompilation<*>) -> Boolean)
@Deprecated("Use 'excludeCompilations' instead", ReplaceWith("excludeCompilations(predicate)"))
fun withoutCompilations(predicate: suspend (KotlinCompilation<*>) -> Boolean) = excludeCompilations(predicate)
fun withoutCompilations(predicate: (KotlinCompilation<*>) -> Boolean) = excludeCompilations(predicate)
@Deprecated("Use plain 'withoutCompilations(!predicate) instead'", ReplaceWith("withoutCompilations { !predicate(it) }"))
fun filterCompilations(predicate: (KotlinCompilation<*>) -> Boolean) = excludeCompilations { !predicate(it) }
@@ -56,35 +56,26 @@ private class KotlinTargetHierarchyBuilderImplContext(private val compilation: K
}
private class KotlinTargetHierarchyBuilderRootImpl(
private val builder: KotlinTargetHierarchyBuilder
private val builder: KotlinTargetHierarchyBuilderImpl
) : KotlinTargetHierarchyBuilder.Root, KotlinTargetHierarchyBuilder by builder {
private var modules: Set<KotlinTargetHierarchy.ModuleName>? = null
override fun modules(vararg module: KotlinTargetHierarchy.ModuleName) {
this.modules = module.toHashSet()
builder.modules = module.toHashSet()
}
override fun withModule(vararg module: KotlinTargetHierarchy.ModuleName) {
this.modules = this.modules.orEmpty().plus(module)
builder.modules = builder.modules.orEmpty().plus(module)
}
override fun excludeModule(vararg module: KotlinTargetHierarchy.ModuleName) {
val modules = module.toHashSet()
if (modules.isEmpty()) return
if (this.modules == null) return
this.modules = this.modules.orEmpty() - modules
}
init {
builder.excludeCompilations exclude@{ compilation ->
val modules = this.modules ?: return@exclude false
val module = KotlinTargetHierarchy.ModuleName.orNull(compilation) ?: return@exclude false
module !in modules
}
builder.modules = builder.modules.orEmpty() - modules
}
}
private class KotlinTargetHierarchyBuilderImpl(
val context: KotlinTargetHierarchyBuilderImplContext,
val node: KotlinTargetHierarchyTree.Node,
@@ -93,17 +84,19 @@ private class KotlinTargetHierarchyBuilderImpl(
val children = mutableSetOf<KotlinTargetHierarchyBuilderImpl>()
val childrenClosure get() = closure { it.children }
private var includePredicate: (suspend (KotlinCompilation<*>) -> Boolean) = { false }
private var excludePredicate: (suspend (KotlinCompilation<*>) -> Boolean) = { false }
var modules: Set<KotlinTargetHierarchy.ModuleName>? = null
private var includePredicate: ((KotlinCompilation<*>) -> Boolean) = { false }
private var excludePredicate: ((KotlinCompilation<*>) -> Boolean) = { false }
override fun withCompilations(predicate: suspend (KotlinCompilation<*>) -> Boolean) {
override fun withCompilations(predicate: (KotlinCompilation<*>) -> Boolean) {
val previousIncludePredicate = this.includePredicate
val previousExcludePredicate = this.excludePredicate
this.includePredicate = { previousIncludePredicate(it) || predicate(it) }
this.excludePredicate = { previousExcludePredicate(it) && !predicate(it) }
}
override fun excludeCompilations(predicate: suspend (KotlinCompilation<*>) -> Boolean) {
override fun excludeCompilations(predicate: (KotlinCompilation<*>) -> Boolean) {
val previousIncludePredicate = this.includePredicate
val previousExcludePredicate = this.excludePredicate
this.includePredicate = { previousIncludePredicate(it) && !predicate(it) }
@@ -111,6 +104,11 @@ private class KotlinTargetHierarchyBuilderImpl(
}
suspend fun contains(compilation: KotlinCompilation<*>): Boolean {
modules?.let { modules ->
val module = KotlinTargetHierarchy.ModuleName.orNull(compilation) ?: return false
if (module !in modules) return false
}
/* Return eagerly, when compilation is explicitly excluded */
if (excludePredicate(compilation)) return false