// @Module:Main // https://youtrack.jetbrains.com/issue/KT-46880 import androidx.compose.runtime.Composable fun main() { var set = mutableSetOf() val instance = testCase { set.add(1) } val instance2 = TestCase2() callComposable { instance.composable() instance2.composable() set.add(2) } require(setOf(1, 2) == set) { "Failed when running composables" } } // @Module:Lib import androidx.compose.runtime.Composable import kotlin.properties.ReadOnlyProperty import kotlin.reflect.KProperty class TestCase(val composable: @Composable () -> Unit) { operator fun provideDelegate( thisRef: Any, property: KProperty<*> ): ReadOnlyProperty { return ReadOnlyProperty { _, _ -> property.name } } } class TestCase2(val composable: @Composable () -> Unit = {}) { operator fun provideDelegate( thisRef: Any, property: KProperty<*> ): ReadOnlyProperty { return ReadOnlyProperty { _, _ -> property.name } } } fun testCase(composable: @Composable () -> Unit): TestCase { return TestCase(composable) }