Add `@TestOnly` annotation to `Composer.disableSourceInformation()`
`disableSourceInformation()` can only be safely called in a test and
should never be called outside a test as it will change the result
of the composition in unpredictable ways. For this reason it should
have been marked `@TestOnly`.
Also added documentation about when this function can be called and
what the function does.
Test: N/A - annotation and documentation change only
Fixes: 260595475
Relnote: "Added `@TestOnly` to `Composer.disableSourceInformation()`
as this function is only safe to call in a test."
Change-Id: I896c84a91e1ec01f0107c52def0900196e2cde45
diff --git a/compose/runtime/runtime/api/current.txt b/compose/runtime/runtime/api/current.txt
index 20f83f5eb..1339ac2 100644
--- a/compose/runtime/runtime/api/current.txt
+++ b/compose/runtime/runtime/api/current.txt
@@ -113,7 +113,7 @@
method @androidx.compose.runtime.ComposeCompilerApi public <T> void createNode(kotlin.jvm.functions.Function0<? extends T> factory);
method @androidx.compose.runtime.ComposeCompilerApi public void deactivateToEndGroup(boolean changed);
method @androidx.compose.runtime.ComposeCompilerApi public void disableReusing();
- method public void disableSourceInformation();
+ method @org.jetbrains.annotations.TestOnly public void disableSourceInformation();
method @androidx.compose.runtime.ComposeCompilerApi public void enableReusing();
method @androidx.compose.runtime.ComposeCompilerApi public void endDefaults();
method @androidx.compose.runtime.ComposeCompilerApi public void endMovableGroup();
diff --git a/compose/runtime/runtime/api/public_plus_experimental_current.txt b/compose/runtime/runtime/api/public_plus_experimental_current.txt
index 20810fc..46fdaad 100644
--- a/compose/runtime/runtime/api/public_plus_experimental_current.txt
+++ b/compose/runtime/runtime/api/public_plus_experimental_current.txt
@@ -120,7 +120,7 @@
method @androidx.compose.runtime.ComposeCompilerApi public <T> void createNode(kotlin.jvm.functions.Function0<? extends T> factory);
method @androidx.compose.runtime.ComposeCompilerApi public void deactivateToEndGroup(boolean changed);
method @androidx.compose.runtime.ComposeCompilerApi public void disableReusing();
- method public void disableSourceInformation();
+ method @org.jetbrains.annotations.TestOnly public void disableSourceInformation();
method @androidx.compose.runtime.ComposeCompilerApi public void enableReusing();
method @androidx.compose.runtime.ComposeCompilerApi public void endDefaults();
method @androidx.compose.runtime.ComposeCompilerApi public void endMovableGroup();
diff --git a/compose/runtime/runtime/api/restricted_current.txt b/compose/runtime/runtime/api/restricted_current.txt
index 3cc2fcc..d14716b 100644
--- a/compose/runtime/runtime/api/restricted_current.txt
+++ b/compose/runtime/runtime/api/restricted_current.txt
@@ -115,7 +115,7 @@
method @androidx.compose.runtime.ComposeCompilerApi public <T> void createNode(kotlin.jvm.functions.Function0<? extends T> factory);
method @androidx.compose.runtime.ComposeCompilerApi public void deactivateToEndGroup(boolean changed);
method @androidx.compose.runtime.ComposeCompilerApi public void disableReusing();
- method public void disableSourceInformation();
+ method @org.jetbrains.annotations.TestOnly public void disableSourceInformation();
method @androidx.compose.runtime.ComposeCompilerApi public void enableReusing();
method @androidx.compose.runtime.ComposeCompilerApi public void endDefaults();
method @androidx.compose.runtime.ComposeCompilerApi public void endMovableGroup();
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Composer.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Composer.kt
index 9d387be..19c83cc 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Composer.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Composer.kt
@@ -1059,6 +1059,15 @@
val composition: ControlledComposition
@TestOnly get
+ /**
+ * Disable the collection of source information, that may introduce groups to store the source
+ * information, in order to be able to more accurately calculate the actual number of groups a
+ * composable function generates in a release build.
+ *
+ * This function is only safe to call in a test and will produce incorrect composition results
+ * if called on a composer not under test.
+ */
+ @TestOnly
fun disableSourceInformation()
companion object {