From 46a20c81cc43450784adad369978ca9854fc1683 Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Fri, 26 Mar 2021 10:46:14 +0100 Subject: [PATCH] Implement CommonizerTarget.allLeaves --- .../kotlin/commonizer/CommonizerTarget.kt | 4 ++++ .../commonizer/CommonizerTargetUtilsTest.kt | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/native/commonizer-api/src/org/jetbrains/kotlin/commonizer/CommonizerTarget.kt b/native/commonizer-api/src/org/jetbrains/kotlin/commonizer/CommonizerTarget.kt index 755041d5b17..2bcf82aad20 100644 --- a/native/commonizer-api/src/org/jetbrains/kotlin/commonizer/CommonizerTarget.kt +++ b/native/commonizer-api/src/org/jetbrains/kotlin/commonizer/CommonizerTarget.kt @@ -111,6 +111,10 @@ public fun CommonizerTarget.withAllAncestors(): Set { } } +public fun CommonizerTarget.allLeaves(): Set { + return withAllAncestors().filterIsInstance().toSet() +} + public infix fun CommonizerTarget.isAncestorOf(other: CommonizerTarget): Boolean { if (this is SharedCommonizerTarget) { return targets.any { it == other } || targets.any { it.isAncestorOf(other) } diff --git a/native/commonizer-api/test/org/jetbrains/kotlin/commonizer/CommonizerTargetUtilsTest.kt b/native/commonizer-api/test/org/jetbrains/kotlin/commonizer/CommonizerTargetUtilsTest.kt index e9bfb1a6551..d35d3062d20 100644 --- a/native/commonizer-api/test/org/jetbrains/kotlin/commonizer/CommonizerTargetUtilsTest.kt +++ b/native/commonizer-api/test/org/jetbrains/kotlin/commonizer/CommonizerTargetUtilsTest.kt @@ -53,5 +53,28 @@ class CommonizerTargetUtilsTest { "Expected all targets present" ) } + + @Test + fun allLeaves() { + val target = parseCommonizerTarget("((a, b), (c, d), (e, (f, g)))") + assertEquals( + setOf( + LeafCommonizerTarget("a"), + LeafCommonizerTarget("b"), + LeafCommonizerTarget("c"), + LeafCommonizerTarget("d"), + LeafCommonizerTarget("e"), + LeafCommonizerTarget("f"), + LeafCommonizerTarget("g") + ), + target.allLeaves(), + "Expected leaf targets present" + ) + + assertEquals( + setOf(LeafCommonizerTarget("a")), LeafCommonizerTarget("a").allLeaves(), + "Expected LeafCommonizerTarget returns itself in 'allLeaves'" + ) + } }