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(