blob: 21bb3c4a60927a63d5bc831804a7e9d4c7c6f447 [file] [log] [blame]
//
// Source
// ------------------------------------------
import androidx.compose.runtime.*
private interface DefaultParamInterface {
@Composable fun Content(
content: @Composable () -> Unit = @Composable { ComposedContent { Text("default") } }
)
@Composable fun ComposedContent(
content: @Composable () -> Unit = @Composable { Text("default") }
) {
content()
}
}
//
// Transformed IR
// ------------------------------------------
private interface DefaultParamInterface {
@Composable
abstract fun Content(content: Function2<Composer, Int, Unit>, %composer: Composer?, %changed: Int)
@Composable
@ComposableInferredTarget(scheme = "[0[0]]")
open fun ComposedContent(content: Function2<Composer, Int, Unit>, %composer: Composer?, %changed: Int) {
%composer.startReplaceGroup(<>)
sourceInformation(%composer, "C(ComposedContent)<conten...>:Test.kt")
if (isTraceInProgress()) {
traceEventStart(<>, %changed, -1, <>)
}
content(%composer, 0b1110 and %changed)
if (isTraceInProgress()) {
traceEventEnd()
}
%composer.endReplaceGroup()
}
class ComposeDefaultImpls {
@Composable
@ComposableInferredTarget(scheme = "[0[_][0]]")
fun ComposedContent%default(content: Function2<Composer, Int, Unit>?, %this%: DefaultParamInterface, %composer: Composer?, %changed: Int, %default: Int) {
%composer = %composer.startRestartGroup(<>)
sourceInformation(%composer, "C(ComposedContent%default):Test.kt")
val %dirty = %changed
if (%default and 0b0001 != 0) {
%dirty = %dirty or 0b0110
} else if (%changed and 0b0110 == 0) {
%dirty = %dirty or if (%composer.changedInstance(content)) 0b0100 else 0b0010
}
if (%default and 0b0010 != 0) {
%dirty = %dirty or 0b00110000
} else if (%changed and 0b00110000 == 0) {
%dirty = %dirty or if (if (%changed and 0b01000000 == 0) {
%composer.changed(%this%)
} else {
%composer.changedInstance(%this%)
}
) 0b00100000 else 0b00010000
}
if (%dirty and 0b00010011 != 0b00010010 || !%composer.skipping) {
if (%default and 0b0001 != 0) {
content = ComposableSingletons%TestKt.lambda-1
}
if (isTraceInProgress()) {
traceEventStart(<>, %dirty, -1, <>)
}
%this%.ComposedContent(content, %composer, 0b1110 and %dirty or 0b01110000 and %dirty)
if (isTraceInProgress()) {
traceEventEnd()
}
} else {
%composer.skipToGroupEnd()
}
%composer.endRestartGroup()?.updateScope { %composer: Composer?, %force: Int ->
ComposedContent%default(content, %this%, %composer, updateChangedFlags(%changed or 0b0001), %default)
}
}
@Composable
@ComposableInferredTarget(scheme = "[0[_][0]]")
fun Content%default(content: Function2<Composer, Int, Unit>?, %this%: DefaultParamInterface, %composer: Composer?, %changed: Int, %default: Int) {
%composer = %composer.startRestartGroup(<>)
sourceInformation(%composer, "C(Content%default)<{>:Test.kt")
val %dirty = %changed
if (%default and 0b0001 != 0) {
%dirty = %dirty or 0b0110
} else if (%changed and 0b0110 == 0) {
%dirty = %dirty or if (%composer.changedInstance(content)) 0b0100 else 0b0010
}
if (%default and 0b0010 != 0) {
%dirty = %dirty or 0b00110000
} else if (%changed and 0b00110000 == 0) {
%dirty = %dirty or if (if (%changed and 0b01000000 == 0) {
%composer.changed(%this%)
} else {
%composer.changedInstance(%this%)
}
) 0b00100000 else 0b00010000
}
if (%dirty and 0b00010011 != 0b00010010 || !%composer.skipping) {
if (%default and 0b0001 != 0) {
content = rememberComposableLambda(<>, true, { %composer: Composer?, %changed: Int ->
sourceInformation(%composer, "C<Compos...>:Test.kt")
if (%changed and 0b0011 != 0b0010 || !%composer.skipping) {
if (isTraceInProgress()) {
traceEventStart(<>, %changed, -1, <>)
}
ComposedContent%default(ComposableSingletons%TestKt.lambda-2, %this%, %composer, 0b0110, 0)
if (isTraceInProgress()) {
traceEventEnd()
}
} else {
%composer.skipToGroupEnd()
}
}, %composer, 0b00110110)
}
if (isTraceInProgress()) {
traceEventStart(<>, %dirty, -1, <>)
}
%this%.Content(content, %composer, 0b1110 and %dirty or 0b01110000 and %dirty)
if (isTraceInProgress()) {
traceEventEnd()
}
} else {
%composer.skipToGroupEnd()
}
%composer.endRestartGroup()?.updateScope { %composer: Composer?, %force: Int ->
Content%default(content, %this%, %composer, updateChangedFlags(%changed or 0b0001), %default)
}
}
}
}
internal object ComposableSingletons%TestKt {
val lambda-1: Function2<Composer, Int, Unit> = composableLambdaInstance(<>, false) { %composer: Composer?, %changed: Int ->
sourceInformation(%composer, "C<Text("...>:Test.kt")
if (%changed and 0b0011 != 0b0010 || !%composer.skipping) {
if (isTraceInProgress()) {
traceEventStart(<>, %changed, -1, <>)
}
Text("default", %composer, 0b0110)
if (isTraceInProgress()) {
traceEventEnd()
}
} else {
%composer.skipToGroupEnd()
}
}
val lambda-2: Function2<Composer, Int, Unit> = composableLambdaInstance(<>, false) { %composer: Composer?, %changed: Int ->
sourceInformation(%composer, "C<Text("...>:Test.kt")
if (%changed and 0b0011 != 0b0010 || !%composer.skipping) {
if (isTraceInProgress()) {
traceEventStart(<>, %changed, -1, <>)
}
Text("default", %composer, 0b0110)
if (isTraceInProgress()) {
traceEventEnd()
}
} else {
%composer.skipToGroupEnd()
}
}
}