You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.1 KiB
47 lines
1.1 KiB
// @Module:Main |
|
|
|
// https://youtrack.jetbrains.com/issue/KT-46880 |
|
import androidx.compose.runtime.Composable |
|
|
|
fun main() { |
|
var set = mutableSetOf<Int>() |
|
|
|
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<Any?, String> { |
|
return ReadOnlyProperty { _, _ -> property.name } |
|
} |
|
} |
|
|
|
class TestCase2(val composable: @Composable () -> Unit = {}) { |
|
operator fun provideDelegate( |
|
thisRef: Any, |
|
property: KProperty<*> |
|
): ReadOnlyProperty<Any?, String> { |
|
return ReadOnlyProperty { _, _ -> property.name } |
|
} |
|
} |
|
|
|
fun testCase(composable: @Composable () -> Unit): TestCase { |
|
return TestCase(composable) |
|
}
|
|
|