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.
 
 
 
 

52 lines
1.1 KiB

// @Module:Main
import androidx.compose.runtime.*
fun main() {
var set = mutableSetOf<Int>()
callComposable {
FooTakesTypedComposableLambda {
set.add(1)
"text"
}
FooTakesTypedComposableLambda2(10) {
set.add(2)
it + 100
}
FooTakesTypedExtesionComposableLambda<String, Any, Unit>("text", Any()) {
set.add(3)
}
MySelect<String>(listOf("1")) {
set.add(4)
}
}
require(setOf(1, 2, 3, 4) == set) { "Failed when running composables" }
}
// @Module:Lib
import androidx.compose.runtime.Composable
@Composable
fun <T> FooTakesTypedComposableLambda(composable: @Composable () -> T) {
composable()
}
@Composable
fun <T> FooTakesTypedComposableLambda2(t: T, composable: @Composable (T) -> T) {
composable(t)
}
@Composable
fun <T, K, R> FooTakesTypedExtesionComposableLambda(t: T, k: K, composable: @Composable T.(K) -> R) {
t.composable(k)
}
@Composable
fun <T> MySelect(
options: List<T>,
onChange: (T) -> Unit
) {
onChange(options.first())
}