Merge "Add stability inference rules for mapOf and setOf" into androidx-main
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ClassStabilityTransformTests.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ClassStabilityTransformTests.kt
index a923dea..61fd220 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ClassStabilityTransformTests.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ClassStabilityTransformTests.kt
@@ -310,6 +310,64 @@
)
@Test
+ fun testMapOfCallWithPrimitiveTypesIsStable() = assertStability(
+ "",
+ "",
+ "mapOf(1 to 1)",
+ "Stable,Stable"
+ )
+
+ @Test
+ fun testMapOfCallWithStableTypeIsStable() = assertStability(
+ "",
+ """
+ class A
+ class B
+ """,
+ "mapOf(A() to B())",
+ "Stable,Stable"
+ )
+
+ @Test
+ fun testMapOfCallWithExternalInferredStableTypeIsRuntimeStable() = assertStability(
+ """
+ class A
+ class B
+ """,
+ "",
+ "mapOf(A() to B())",
+ "Runtime(A),Runtime(B)"
+ )
+
+ @Test
+ fun testSetOfCallWithPrimitiveTypesIsStable() = assertStability(
+ "",
+ "",
+ "setOf(1)",
+ "Stable"
+ )
+
+ @Test
+ fun testSetOfCallWithStableTypeIsStable() = assertStability(
+ "",
+ """
+ class A
+ """,
+ "setOf(A())",
+ "Stable"
+ )
+
+ @Test
+ fun testSetOfCallWithExternalInferredStableTypeIsRuntimeStable() = assertStability(
+ """
+ class A
+ """,
+ "",
+ "setOf(A())",
+ "Runtime(A)"
+ )
+
+ @Test
fun testEmptyClass() = assertTransform(
"""
class Foo
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/analysis/Stability.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/analysis/Stability.kt
index 4117381..867b4e4 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/analysis/Stability.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/analysis/Stability.kt
@@ -246,11 +246,13 @@
"kotlin.ranges.ClosedFloatingPointRange" to 0b1,
)
- // TODO: mapOf, setOf, buildList, buildMap, buildSet, etc.
+ // TODO: buildList, buildMap, buildSet, etc.
private val stableProducingFunctions = mapOf(
"kotlin.collections.CollectionsKt.emptyList" to 0,
"kotlin.collections.CollectionsKt.listOf" to 0b1,
"kotlin.collections.CollectionsKt.listOfNotNull" to 0b1,
+ "kotlin.collections.MapsKt.mapOf" to 0b11,
+ "kotlin.collections.SetsKt.setOf" to 0b1,
)
fun stabilityOf(