[Gradle][MPP] Refine naming for KotlinTargetHierarchyBuilder

^KT-53570 Verification Pending
This commit is contained in:
sebastian.sellmair
2022-10-10 20:36:10 +02:00
committed by Space Team
parent 1a519a8159
commit c332c928fc
4 changed files with 61 additions and 60 deletions
@@ -1029,6 +1029,7 @@ public abstract interface class org/jetbrains/kotlin/gradle/plugin/KotlinTargetE
}
public abstract interface class org/jetbrains/kotlin/gradle/plugin/KotlinTargetHierarchyBuilder {
public abstract fun addCompilations (Lkotlin/jvm/functions/Function1;)V
public abstract fun android ()V
public abstract fun androidNativeArm32 ()V
public abstract fun androidNativeArm64 ()V
@@ -1045,9 +1046,8 @@ public abstract interface class org/jetbrains/kotlin/gradle/plugin/KotlinTargetH
public abstract fun anyTvos ()V
public abstract fun anyWatchos ()V
public abstract fun common (Lkotlin/jvm/functions/Function1;)V
public abstract fun excludeCompilation (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 includeCompilation (Lkotlin/jvm/functions/Function1;)V
public abstract fun iosArm32 ()V
public abstract fun iosArm64 ()V
public abstract fun iosSimulatorArm64 ()V
@@ -1062,6 +1062,7 @@ public abstract interface class org/jetbrains/kotlin/gradle/plugin/KotlinTargetH
public abstract fun macosX64 ()V
public abstract fun mingwX64 ()V
public abstract fun mingwX86 ()V
public abstract fun removeCompilations (Lkotlin/jvm/functions/Function1;)V
public abstract fun tvosArm64 ()V
public abstract fun tvosSimulatorArm64 ()V
public abstract fun tvosX64 ()V
@@ -1076,6 +1077,7 @@ public abstract interface class org/jetbrains/kotlin/gradle/plugin/KotlinTargetH
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
}
@@ -12,11 +12,10 @@ interface KotlinTargetHierarchyBuilder {
fun group(name: String, build: KotlinTargetHierarchyBuilder.() -> Unit = {})
/* low-level APIs */
fun includeCompilationIf(predicate: (KotlinCompilation<*>) -> Boolean)
fun excludeCompilationIf(predicate: (KotlinCompilation<*>) -> Boolean)
fun addCompilations(predicate: (KotlinCompilation<*>) -> Boolean)
fun removeCompilations(predicate: (KotlinCompilation<*>) -> Boolean)
fun filterCompilations(predicate: (KotlinCompilation<*>) -> Boolean) =
excludeCompilationIf { !predicate(it) }
removeCompilations { !predicate(it) }
/* Convenient groups */
fun anyNative()
@@ -35,7 +35,7 @@ private class KotlinTargetHierarchyBuilderImplContext(private val compilation: K
fun build(node: KotlinTargetHierarchy.Node): KotlinTargetHierarchy? {
return builtValues.getOrPut(node) {
val builder = getOrCreateBuilder(node)
if (!builder.includes(compilation)) return@getOrPut null
if (compilation !in builder) return@getOrPut null
/*
Keep the hierarchy 'deduplicated'.
@@ -66,21 +66,21 @@ private class KotlinTargetHierarchyBuilderImpl(
private var includePredicate: ((KotlinCompilation<*>) -> Boolean) = { false }
private var excludePredicate: ((KotlinCompilation<*>) -> Boolean) = { false }
override fun includeCompilationIf(predicate: (KotlinCompilation<*>) -> Boolean) {
override fun addCompilations(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 excludeCompilationIf(predicate: (KotlinCompilation<*>) -> Boolean) {
override fun removeCompilations(predicate: (KotlinCompilation<*>) -> Boolean) {
val previousIncludePredicate = this.includePredicate
val previousExcludePredicate = this.excludePredicate
this.includePredicate = { previousIncludePredicate(it) && !predicate(it) }
this.excludePredicate = { previousExcludePredicate(it) || predicate(it) }
}
fun includes(compilation: KotlinCompilation<*>): Boolean {
operator fun contains(compilation: KotlinCompilation<*>): Boolean {
/* Return eagerly, when compilation is explicitly excluded */
if (excludePredicate(compilation)) return false
@@ -88,10 +88,10 @@ private class KotlinTargetHierarchyBuilderImpl(
if (includePredicate(compilation)) return true
/* Find any child that includes this compilation */
return childrenClosure.any { child -> child.includes(compilation) }
return childrenClosure.any { child -> compilation in child }
}
private inline fun includeTargetIf(crossinline predicate: (KotlinTarget) -> Boolean) = includeCompilationIf { predicate(it.target) }
private inline fun addTargets(crossinline predicate: (KotlinTarget) -> Boolean) = addCompilations { predicate(it.target) }
override fun group(name: String, build: KotlinTargetHierarchyBuilder.() -> Unit) {
val node = KotlinTargetHierarchy.Node.Group(name)
@@ -100,135 +100,135 @@ private class KotlinTargetHierarchyBuilderImpl(
checkCyclicHierarchy()
}
override fun anyNative() = includeTargetIf { it is KotlinNativeTarget }
override fun anyNative() = addTargets { it is KotlinNativeTarget }
override fun anyApple() = includeTargetIf { it is KotlinNativeTarget && it.konanTarget.family.isAppleFamily }
override fun anyApple() = addTargets { it is KotlinNativeTarget && it.konanTarget.family.isAppleFamily }
override fun anyIos() = includeTargetIf { it is KotlinNativeTarget && it.konanTarget.family == Family.IOS }
override fun anyIos() = addTargets { it is KotlinNativeTarget && it.konanTarget.family == Family.IOS }
override fun anyWatchos() = includeTargetIf { it is KotlinNativeTarget && it.konanTarget.family == Family.WATCHOS }
override fun anyWatchos() = addTargets { it is KotlinNativeTarget && it.konanTarget.family == Family.WATCHOS }
override fun anyMacos() = includeTargetIf { it is KotlinNativeTarget && it.konanTarget.family == Family.OSX }
override fun anyMacos() = addTargets { it is KotlinNativeTarget && it.konanTarget.family == Family.OSX }
override fun anyTvos() = includeTargetIf { it is KotlinNativeTarget && it.konanTarget.family == Family.TVOS }
override fun anyTvos() = addTargets { it is KotlinNativeTarget && it.konanTarget.family == Family.TVOS }
override fun anyMingw() = includeTargetIf { it is KotlinNativeTarget && it.konanTarget.family == Family.MINGW }
override fun anyMingw() = addTargets { it is KotlinNativeTarget && it.konanTarget.family == Family.MINGW }
override fun anyLinux() = includeTargetIf { it is KotlinNativeTarget && it.konanTarget.family == Family.LINUX }
override fun anyLinux() = addTargets { it is KotlinNativeTarget && it.konanTarget.family == Family.LINUX }
override fun anyAndroidNative() = includeTargetIf { it is KotlinNativeTarget && it.konanTarget.family == Family.ANDROID }
override fun anyAndroidNative() = addTargets { it is KotlinNativeTarget && it.konanTarget.family == Family.ANDROID }
override fun anyJs() = includeTargetIf { it is KotlinJsTargetDsl }
override fun anyJs() = addTargets { it is KotlinJsTargetDsl }
override fun jvm() = includeTargetIf { it is KotlinJvmTarget }
override fun jvm() = addTargets { it is KotlinJvmTarget }
override fun android() = includeTargetIf { it is KotlinAndroidTarget }
override fun android() = addTargets { it is KotlinAndroidTarget }
override fun androidNativeX64() = includeTargetIf {
override fun androidNativeX64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.ANDROID_X64
}
override fun androidNativeX86() = includeTargetIf {
override fun androidNativeX86() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.ANDROID_X86
}
override fun androidNativeArm32() = includeTargetIf {
override fun androidNativeArm32() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.ANDROID_X86
}
override fun androidNativeArm64() = includeTargetIf {
override fun androidNativeArm64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.ANDROID_ARM64
}
override fun iosArm32() = includeTargetIf {
override fun iosArm32() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.IOS_ARM32
}
override fun iosArm64() = includeTargetIf {
override fun iosArm64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.IOS_ARM64
}
override fun iosX64() = includeTargetIf {
override fun iosX64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.IOS_X64
}
override fun iosSimulatorArm64() = includeTargetIf {
override fun iosSimulatorArm64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.IOS_SIMULATOR_ARM64
}
override fun watchosArm32() = includeTargetIf {
override fun watchosArm32() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.WATCHOS_ARM32
}
override fun watchosArm64() = includeTargetIf {
override fun watchosArm64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.WATCHOS_ARM64
}
override fun watchosX86() = includeTargetIf {
override fun watchosX86() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.WATCHOS_X86
}
override fun watchosX64() = includeTargetIf {
override fun watchosX64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.WATCHOS_X64
}
override fun watchosSimulatorArm64() = includeTargetIf {
override fun watchosSimulatorArm64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.WATCHOS_SIMULATOR_ARM64
}
override fun watchosDeviceArm64() = includeTargetIf {
override fun watchosDeviceArm64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.WATCHOS_DEVICE_ARM64
}
override fun tvosArm64() = includeTargetIf {
override fun tvosArm64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.TVOS_ARM64
}
override fun tvosX64() = includeTargetIf {
override fun tvosX64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.TVOS_X64
}
override fun tvosSimulatorArm64() = includeTargetIf {
override fun tvosSimulatorArm64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.TVOS_SIMULATOR_ARM64
}
override fun linuxX64() = includeTargetIf {
override fun linuxX64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.LINUX_X64
}
override fun mingwX86() = includeTargetIf {
override fun mingwX86() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.MINGW_X86
}
override fun mingwX64() = includeTargetIf {
override fun mingwX64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.MINGW_X64
}
override fun macosX64() = includeTargetIf {
override fun macosX64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.MACOS_X64
}
override fun macosArm64() = includeTargetIf {
override fun macosArm64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.MACOS_ARM64
}
override fun linuxArm64() = includeTargetIf {
override fun linuxArm64() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.LINUX_ARM64
}
override fun linuxArm32Hfp() = includeTargetIf {
override fun linuxArm32Hfp() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.LINUX_ARM32_HFP
}
override fun linuxMips32() = includeTargetIf {
override fun linuxMips32() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.LINUX_MIPS32
}
override fun linuxMipsel32() = includeTargetIf {
override fun linuxMipsel32() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.LINUX_MIPSEL32
}
override fun wasm32() = includeTargetIf {
override fun wasm32() = addTargets {
it is KotlinNativeTarget && it.konanTarget == KonanTarget.WASM32
}
@@ -25,8 +25,8 @@ class KotlinTargetHierarchyDescriptorTest {
fun `test - simple descriptor`() {
val descriptor = KotlinTargetHierarchyDescriptor {
common {
group("groupA") { includeCompilationIf { it.target.name == "a" } }
group("groupB") { includeCompilationIf { it.target.name == "b" } }
group("groupA") { addCompilations { it.target.name == "a" } }
group("groupB") { addCompilations { it.target.name == "b" } }
}
}
@@ -63,7 +63,7 @@ class KotlinTargetHierarchyDescriptorTest {
val descriptor = KotlinTargetHierarchyDescriptor { group("base") }.extend {
group("base") {
group("extension") {
includeCompilationIf { true }
addCompilations { true }
}
}
}
@@ -85,7 +85,7 @@ class KotlinTargetHierarchyDescriptorTest {
group("newRoot") {
group("base") {
group("extension") {
includeCompilationIf { true }
addCompilations { true }
}
}
}
@@ -111,7 +111,7 @@ class KotlinTargetHierarchyDescriptorTest {
group("newRoot1") {
group("base") {
group("extension1") {
includeCompilationIf { true }
addCompilations { true }
}
}
}
@@ -120,7 +120,7 @@ class KotlinTargetHierarchyDescriptorTest {
group("newRoot2") {
group("base") {
group("extension2") {
includeCompilationIf { true }
addCompilations { true }
}
}
}
@@ -196,7 +196,7 @@ class KotlinTargetHierarchyDescriptorTest {
filterCompilations { it.name in setOf("a", "b") }
common {
group("x") {
includeCompilationIf { true }
addCompilations { true }
}
}
}
@@ -223,7 +223,7 @@ class KotlinTargetHierarchyDescriptorTest {
@Test
fun `test - filterCompilations - include them again`() {
val descriptor = KotlinTargetHierarchyDescriptor {
includeCompilationIf { true }
addCompilations { true }
filterCompilations { it.name == "a" }
}
@@ -231,7 +231,7 @@ class KotlinTargetHierarchyDescriptorTest {
assertNull(descriptor.buildKotlinTargetHierarchy(kotlin.linuxX64().compilations.maybeCreate("b")))
val extended = descriptor.extend {
includeCompilationIf { true } // <- adds all compilations back again!
addCompilations { true } // <- adds all compilations back again!
}
assertNull(descriptor.buildKotlinTargetHierarchy(kotlin.linuxX64().compilations.maybeCreate("b")))