// @Module:Main // https://youtrack.jetbrains.com/issue/KT-46880 import androidx.compose.runtime.Composable fun main() { val instance = testCase { } val instance2 = TestCase2() callComposable { instance.composable() instance2.composable() } } fun callComposable(content: @Composable () -> Unit) { // does nothing } // @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) }