fun <T, S, R> foo(t: T, f: (T) -> S, g: (S) -> R) {}


fun test() {
    <caret>foo(1, { x -> "$x"}, { y -> y.length })
}


Resolved call:

Candidate descriptor: fun <T, S, R> foo(t: T, f: (T) -> S, g: (S) -> R): Unit defined in root package
Resulting descriptor: fun <T, S, R> foo(t: Int, f: (Int) -> String, g: (String) -> Int): Unit defined in root package

Explicit receiver kind = NO_EXPLICIT_RECEIVER
Dispatch receiver = NO_RECEIVER
Extension receiver = NO_RECEIVER

Value arguments mapping:

SUCCESS  t : Int = 1
SUCCESS  f : (Int) -> String = { x -> "$x"}
SUCCESS  g : (String) -> Int = { y -> y.length }
